色达佛学院住宿怎么样: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();
}