本文是学习以下视频教程的记录
首先使用VS创建Windows桌面向导项目:
然后创建头文件mfc.h(名称自定义)
#ifndef MFC_H
#include <afxwin.h>//使用MFC必须包含此头文件
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 OnChar(UINT, UINT, UINT);
afx_msg void OnPaint();
};
#endif // !MFC_H
对应mfc.cpp文件如下:
#include "mfc.h"
MyApp app;//全局应用程序对象,有且仅有一个
BOOL MyApp::InitInstance()
{
//创建窗口
MyFrame* frame = new MyFrame;
//显示和更新
frame->ShowWindow(SW_SHOWNORMAL);
m_pMainWnd = frame;//保存指向应用程序主窗口的指针
return TRUE;//返回正常初始化
}
MyFrame::MyFrame()
{
Create(NULL, TEXT("mfc"));
}
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::OnChar(UINT key, UINT, UINT)
{
CString str;
str.Format(TEXT("按下了%c 键"), key);
MessageBox(str);
}
void MyFrame::OnPaint()
{
CPaintDC dc(this);
dc.TextOutW(100, 100, TEXT("AAAAAA"));
dc.Ellipse(10, 10, 100, 100);
}
//定义消息宏
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)//开始
//中间可以捕获任意消息
ON_WM_LBUTTONDOWN()
ON_WM_CHAR()
ON_WM_PAINT()
END_MESSAGE_MAP()//结束
总结,MFC程序大致的运行流程:
- 包含afxwin.h头文件
- 实例化应用程序对象(继承于CWinApp)
- 执行程序的入口函数
- 在入口函数中我们需要1、给框架类对象(继承于CFrameWnd)动态分配内存,2、在框架类对象的构造函数中通过Create创建窗口,3、显示和更新窗口,4、将框架类对象赋值给m_pMainWnd
- 对项目进行配置: