C++ MFC学习 (一)
MFC:微软基础类库,以C++形式封装了WindowsAPI,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类
MFC把Windows SDK API函数包装成了几百个类,给WIndows操作系统提供了面向对象的接口,支持可重用性、自包含性以及其他OPP原则。
头文件
#pragma once #include <afxwin.h> //导入mfc头文件 class MyApp :public CWinApp //CWinApp应用程序类 { public: //程序入口 virtual BOOL InitInstance(); }; class MyFrame:public CFrameWnd //窗口类框架 { public: MyFrame(); };
源文件
#include "mfc.h" MyApp app; //全局应用程序对象,有且仅有一个 BOOL MyApp::InitInstance() { //创建窗口 MyFrame *frame = new MyFrame; frame->ShowWindow(SW_SHOWNORMAL); frame->UpdateWindow(); m_pMainWnd = frame; //m_pMainWnd 保存指向应用程序的主窗口的指针 return TRUE; } MyFrame::MyFrame() { Create(NULL,TEXT("Windows窗体")); }
注意:对项目进行配置,配置为在共享DLL中使用
MFC消息映射机制:
消息映射是一个将消息和成员函数相互关联的表。比如,框架窗口接收到一个鼠标左击消息,MFC将搜索该窗口的消息映射,如果存在一个处理WM_LBUTTONDOWN消息的处理程序,然后就调用OnLButtonDown。
消息映射机制: 需要先声明宏 在.h文件中声明
需要分界宏 在.cpp中实现
将消息宏 写到 分界宏 中间 在手册上去找消息对应的消息宏
声明函数原型 在.h 中
实现函数 如 鼠标消息,键盘,绘图等
// 1.声明消息映射机制需要的宏 .h DECLARE_MESSAGE_MAP();//声明宏 提供消息映射机制 //2. 在.cpp中 实现 分界宏 用来映射对应的消息 BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd) ON_WM_LBUTTONDOWN() //鼠标左键按下 //ON_WM_KEYDOWN() //键盘按下 ON_WM_CHAR() //键盘字符 按键按下 到松开 ON_WM_PAINT() //绘图 END_MESSAGE_MAP() //3.声明函数 afx_msg void OnLButtonDown(UINT, CPoint); //鼠标按下消息声明 afx_msg void OnKeyDown(UINT, UINT, UINT); //键盘按下消息声明 afx_msg void OnChar(UINT, UINT, UINT); afx_msg void OnPaint(); //绘图消息声明 //4. 实现函数 void MyFrame::OnLButtonDown(UINT, CPoint point) { TCHAR buf[1024]; wsprintf(buf, TEXT("x = %d,y = %d"), point.x, point.y); //MFC的字符串 CString MessageBox(buf); } void MyFrame::OnKeyDown(UINT, UINT, UINT) { MessageBox(TEXT("按下键盘")); } void MyFrame::OnChar(UINT nchar, UINT, UINT) { CString str; str.Format(TEXT("按下了%c键"), nchar); MessageBox(str); }