色达佛学院住宿怎么样:vc msn 信息提示

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 18:22:58

// QQMsgWnd.cpp : implementation file
// Download by http://www.codefans.net

#include "stdafx.h"
#include "msn_pop_demo.h"
#include "QQMsgWnd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define ID_TIMER_DISPLAY_DELAY 16
#define WIN_WIDTH 193
#define WIN_HEIGHT 107
#undef WINVER
#define WINVER 0X500
/////////////////////////////////////////////////////////////////////////////
// CQQMsgWnd

CQQMsgWnd::CQQMsgWnd()
{
 m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_QQ)); //Load Bitmap
 m_Bitmap.GetBitmap(&bmBitmap);         //Get Bitmap Info
 m_bFlag=false;
 m_strMessage="The Message To Prompt...";
 m_strCaption="Monitor Messager";
}

CQQMsgWnd::~CQQMsgWnd()
{
}


BEGIN_MESSAGE_MAP(CQQMsgWnd, CWnd)
 //{{AFX_MSG_MAP(CQQMsgWnd)
 ON_WM_PAINT()
 ON_WM_TIMER()
 ON_WM_CREATE()
 ON_WM_CLOSE()
 ON_WM_MOUSEMOVE()
 ON_WM_KILLFOCUS()
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CQQMsgWnd message handlers

void CQQMsgWnd::CreateMsgWindow()
{
 RECT rect;
 SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
 int y=rect.bottom-rect.top;
 int x=rect.right-rect.left;
 x=x-WIN_WIDTH;
 y=y-WIN_HEIGHT;
 CBrush brush;
 brush.CreatePatternBrush(&m_Bitmap);
 CreateEx(0,
       AfxRegisterWndClass(
    0,
    ::LoadCursor(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDC_HAND_1)),(HBRUSH)(brush.m_hObject),NULL),
    "",
    WS_POPUP|WS_EX_TOPMOST,
    x,
    y,
    WIN_WIDTH,//bmBitmap.bmWidth,  //Bitmap Width = Splash Window Width
    WIN_HEIGHT,//bmBitmap.bmHeight, //Bitmap Height = Splash Window Height
    AfxGetMainWnd()->GetSafeHwnd(),
    NULL,
    NULL);
 
 SetTimer(ID_TIMER_DISPLAY_DELAY,3000,NULL);
}
void CQQMsgWnd::SetPromptMessage(LPCTSTR lpszMsg)
{
 lstrcpy(m_strMessage,lpszMsg);
}

void CQQMsgWnd::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 CDC dcMemory;
 CRect rect;
 GetClientRect(&rect);
    dcMemory.CreateCompatibleDC(NULL);
 dcMemory.SelectObject(&m_Bitmap);
 dc.StretchBlt(0,
  0,
  rect.right-rect.left,//bmBitmap.bmWidth,
  rect.bottom-rect.top,//bmBitmap.bmHeight,   
  &dcMemory,
  0,
  0,
  bmBitmap.bmWidth,   
  bmBitmap.bmHeight,
  SRCCOPY); 
 CFont font;
 font.CreatePointFont(90,"Impact");
 dc.SelectObject(&font);
 dc.SetTextColor(RGB(0,64,128));
    dc.SetBkMode(TRANSPARENT);
 dc.TextOut(30,10,m_strCaption);
 rect.top=30;
 dc.DrawText(m_strMessage,-1,&rect,DT_CENTER|DT_SINGLELINE|DT_VCENTER);
 // Do not call CWnd::OnPaint() for painting messages

}

void CQQMsgWnd::OnTimer(UINT nIDEvent)

/* static int nHeight=0;
  int cy=GetSystemMetrics(SM_CYSCREEN);
 int cx=GetSystemMetrics(SM_CXSCREEN);
 RECT rect;
 SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
 int y=rect.bottom-rect.top;
 int x=rect.right-rect.left;
 x=x-WIN_WIDTH;
*/ 
 switch(nIDEvent)
 {

 case ID_TIMER_DISPLAY_DELAY:
 
  KillTimer(ID_TIMER_DISPLAY_DELAY);  
     SendMessage(WM_CLOSE);
  break;
 }
 
 CWnd::OnTimer(nIDEvent);
}

int CQQMsgWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CWnd::OnCreate(lpCreateStruct) == -1)
  return -1; 
    //还没调用WM_Paint
 
 AnimateWindow(2000,AW_ACTIVATE|AW_CENTER|AW_BLEND);
 return 0;
}

 

void CQQMsgWnd::OnMouseMove(UINT nFlags, CPoint point)
{
 CRect rect;
 GetClientRect(&rect);
 if(rect.PtInRect(point))
 { m_bFlag=true;
  KillTimer(ID_TIMER_DISPLAY_DELAY);
 }
 
 CWnd::OnMouseMove(nFlags, point);
}

void CQQMsgWnd::OnKillFocus(CWnd* pNewWnd)
{
 CWnd::OnKillFocus(pNewWnd);
 if(m_bFlag)
 SetTimer(ID_TIMER_DISPLAY_DELAY,3000,NULL);
 // TODO: Add your message handler code here
 
}

void CQQMsgWnd::SetPromptCaption(LPCTSTR lpszCaption)
{
 lstrcpy(m_strCaption,lpszCaption);
}
void CQQMsgWnd::OnClose()
{
 AnimateWindow(2000,AW_HIDE|AW_CENTER|AW_SLIDE);
 CWnd::OnClose();
}