2020-10-08

    科技2025-11-08  18

    MFC中的消息映射机制

    声明宏 写道 .h 中

    分界宏 写道 .cpp 中 BEGIN_MESSAGE_MAP(子类,父类) …END_MESSAGE_MAP()

    找消息宏 写到分界宏中间

    把函数原型声明写到 .h 中,函数实现写到 .cpp

    鼠标,键盘的实现

    代码注释如下

    mfc.h

    #include <afxwin.h> //mfc使用的头文件 #include <intsafe.h> //声明一个应用程序类 class MyApp:public CWinApp //继承于应用程序类 { public: virtual BOOL InitInstance(); //程序入口 }; class MyFrame :public CFrameWnd //窗口框架类 { public: MyFrame();//保留构造函数即可 //声明宏 提供消息映射的机制 DECLARE_MESSAGE_MAP() afx_msg void OnLButtonDown(UINT, CPoint); afx_msg void OnLButtonUp(UINT, CPoint); afx_msg void OnChar(UINT, UINT, UINT); afx_msg void OnPaint(); };

    mfc.cpp

    #include "mfc.h" MyApp app; //全局的应用程序对象,有且仅有一个 //对类的实现 BOOL MyApp::InitInstance() //程序入口 { //创建窗口 MyFram MyFrame * frame = new MyFrame; //显示和更新 frame->ShowWindow(SW_SHOWNORMAL); frame->UpdateData(); m_pMainWnd = frame; //保存指向应用程序的主窗口的指针 return TRUE; //返回正常的初始化 } //消息分界宏 BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd) ON_WM_LBUTTONDOWN() //鼠标左键按下 ON_WM_CHAR() //键盘 ON_WM_PAINT() //绘图 END_MESSAGE_MAP() MyFrame::MyFrame() { Create(NULL, TEXT("湖南科技大学")); } void MyFrame::OnLButtonDown(UINT, CPoint point) { TCHAR buf[1024]; wsprintf(buf, TEXT("x = %d,y = %d"),point.x,point.y); MessageBox(buf); //mfc中的字符串 ----- CString /*CString str; str.Format(TEXT("x = %d,,,y = %d"), point.x, point.y); MessageBox(str);*/ } void MyFrame::OnLButtonUp(UINT, CPoint) { } void MyFrame::OnChar(UINT key,UINT,UINT) { CString str; str.Format(TEXT("按下了 %c 键"),key); MessageBox(str); } void MyFrame::OnPaint() { CPaintDC dc(this); //MFC中文手册CDC中可查看其他图形 //dc.TextOutW(100, 100, TEXT("为了部落")); dc.Ellipse(10, 10, 100, 100); // }

    mfc创建窗口完结!!

    Processed: 0.015, SQL: 8