www.pudn.com > 《MFC Windows程序设计(第二版)》.rar > Hello.cpp, change:2003-02-12,size:1907b


#define _WIN32_WINNT 0x0400 
#include <afxwin.h> 
#include "Hello.h" 
 
CMyApp myApp; 
 
///////////////////////////////////////////////////////////////////////// 
// CMyApp member functions 
 
BOOL CMyApp::InitInstance () 
{ 
    m_pMainWnd = new CMainWindow; 
    m_pMainWnd->ShowWindow (m_nCmdShow); 
    m_pMainWnd->UpdateWindow (); 
    return TRUE; 
} 
 
///////////////////////////////////////////////////////////////////////// 
// CMainWindow message map and member functions 
 
BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) 
    ON_WM_PAINT () 
	ON_WM_MOUSEMOVE () 
ON_MESSAGE (WM_MOUSELEAVE, OnMouseLeave) 
ON_MESSAGE (WM_MOUSEHOVER, OnMouseHover) 
 
END_MESSAGE_MAP () 
 
CMainWindow::CMainWindow () 
{ 
    Create (NULL, _T ("The Hello Application")); 
} 
 
void CMainWindow::OnPaint () 
{ 
    CPaintDC dc (this); 
     
    CRect rect; 
    GetClientRect (&rect); 
 
    dc.DrawText (_T ("Hello, MFC"), -1, &rect, 
        DT_SINGLELINE | DT_CENTER | DT_VCENTER); 
} 
 
 
void CMainWindow::OnMouseMove (UINT nFlags, CPoint point) 
{ 
    if (!m_bMouseOver) { 
        TRACE (_T ("Mouse enter\n")); 
        m_bMouseOver = TRUE; 
 
        TRACKMOUSEEVENT tme; 
        tme.cbSize = sizeof (tme); 
        tme.dwFlags = TME_HOVER | TME_LEAVE; 
        tme.hwndTrack = m_hWnd; 
        tme.dwHoverTime = HOVER_DEFAULT; 
        ::TrackMouseEvent (&tme); 
    } 
} 
 
LRESULT CMainWindow::OnMouseLeave (WPARAM wParam, LPARAM lParam) 
{ 
    TRACE (_T ("Mouse leave\n")); 
    m_bMouseOver = FALSE; 
    return 0; 
} 
 
LRESULT CMainWindow::OnMouseHover (WPARAM wParam, LPARAM lParam) 
{ 
    TRACE (_T ("Mouse hover (x=%d, y=%d)\n"), 
        LOWORD (lParam), HIWORD (lParam)); 
 
    TRACKMOUSEEVENT tme; 
    tme.cbSize = sizeof (tme); 
    tme.dwFlags = TME_HOVER | TME_LEAVE; 
    tme.hwndTrack = m_hWnd; 
    tme.dwHoverTime = HOVER_DEFAULT; 
    ::TrackMouseEvent (&tme); 
    return 0; 
}