MFC练习

来源:互联网 发布:james blunt知乎 编辑:程序博客网 时间:2024/06/05 06:32
::ZeroMemory(m_nGameGrid,9*sizeof(int));    //相应的函数API接口,进行ASPI函数的定义,::证明是全局函数     //游戏初始化就相当于将相应的内存模块清空,并进行相应初始化    Invalidate();        //作用是令整个窗口无效

在C++中经常简单在函数的内部调用相应的函数的时候带上::的符号,带有这样符号的函数说明是全局函数。

建立简单的MFC程序
编写代码:
HELLOMFC.c文件

#ifndef _WIN32_WINNT#define _WIN32_WINNT 0x0501#endif#ifndef _WIN32_IE#define _WIN32_IE 0x0500#endif//这样做的目的是为了可兼容vc++6.0的程序,由于程序参考的是VC++6.0的但是编译器是VS2008所以部分地方设置的有些不同#include <afxwin.h>#include "hellomfc.h"CMyApp myApp;         //类的初始化,声明一个CMyApp的类对象并进行初始化BOOL  CMyApp::InitInstance(){    m_pMainWnd = new CMyFrame;    m_pMainWnd ->ShowWindow(m_nCmdShow);    m_pMainWnd ->UpdateWindow();    return TRUE;}CMyFrame::CMyFrame(){    m_bMouseOver =FALSE;    Create(NULL, TEXT("这是我的MFC测试窗口!"));      //创建一个窗口}BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)    ON_WM_PAINT()    //  ON_WM_NCHITTEST()           //为afx_msg UINT OnNcHitest();加上鼠标动作处理消息处理函数    ON_WM_MOUSEMOVE()    ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)               //没有特定的消息映射宏的时候要使用消息映射关联在一起     ON_MESSAGE(WM_MOUSEHOVER,OnMouseHover)END_MESSAGE_MAP()//UINT CMyFrame::OnNcHitest(CPoint point)    //参数point 是消息发生的时候鼠标点击位置的坐标//{//  //UINT nHitTest =   CFrameWnd::OnNcHitTest(point);    // if (nHitTest == HTCLIENT)    //   nHitTest = HTCAPTION;    // return   nHitTest;//}void CMyFrame::OnPaint(){    CPaintDC dc(this);    CRect    rect;    GetClientRect(&rect);    dc.DrawText(TEXT("Hello MFC!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);}void CMyFrame::OnMouseMove(UINT nflags,CPoint point){    if(!m_bMouseOver)    {        SetWindowText("MOUSE  ENTER!");        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 CMyFrame::OnMouseLeave(WPARAM wParam,LPARAM lParam){    SetWindowText("MOUSE LEAVE");    m_bMouseOver = FALSE;    return 0;}LRESULT   CMyFrame ::OnMouseHover(WPARAM wParam,LPARAM lParam){    CString strmsg;    strmsg.Format("Mouse hover(x= %d,y=%d)",LOWORD(lParam),HIWORD(lParam));    SetWindowText(strmsg);  TRACKMOUSEEVENT tme;    tme.cbSize = sizeof(tme);    tme.dwFlags = TME_HOVER | TME_LEAVE;    tme.hwndTrack = m_hWnd;       //在CFrameWnd中已经定义的字段    tme.dwHoverTime = HOVER_DEFAULT;    ::TrackMouseEvent(&tme);   return 0;}

HELLOMFC.h文件

class CMyApp : public CWinApp{    virtual BOOL InitInstance();}; class CMyFrame : public CFrameWnd{public:    CMyFrame();      //类的构造函数,析构函数通常不写出来protected:    BOOL m_bMouseOver;protected:    //afx_msg不是函数的类型只是说明函数是处理消息的函数    afx_msg void OnPaint();   // afx_msg UINT OnNcHitest(CPoint point);      //声明一个函数原型    afx_msg void OnMouseMove(UINT nflags,CPoint point);    afx_msg LRESULT OnMouseHover(WPARAM wParam,LPARAM lParam);    afx_msg LRESULT OnMouseLeave(WPARAM wParam,LPARAM lParam);    DECLARE_MESSAGE_MAP()};