1. 从Win32工程到MFC工程
平台Visual Studio2022
首先先创建Win32程序,通过下面的步骤创建MFC项目
创建MFC工程有三步
- 建立CWinApp类的派生类
- 重写CWinApp类的虚函数 InitInstance
- 定义CWinApp派生类的全局变量
同时修改项目属性使用MFC类库,静态库和共享DLL都可以,这里采用共享DLL库中使用MFC
#include<afxwin.h> //MFC核心头文件
class MainApp :public CWinApp {
public:
//启动管理
BOOL InitInstance() {
MessageBox(NULL, L"First MFC", L"提示", MB_OK);
return TRUE;//初始化成功
}
//清理资源工作
BOOL ExitInstance() {
return 0;//返回值返回到WinMain函数
}
};
MainApp TheApp;
注意:MFC在内部已经封装好WinMain函数,自己不需要写WinMain函数。
Initinstance可以简单的理解MFC的入口函数
2. 练习MFC(第一个窗口)
在MFC中没有窗口处理函数,但是可以通过继承CDialog类,添加窗口处理函数
#pragma once
#include<afxwin.h>
#include"resource.h"
#pragma once
#include"stdafx.h"
//对话框类,一般一个类关联一个窗口
class CMainDialog :public CDialog {
private:
HICON m_hicon;
public:
CMainDialog();
//初始化函数,名字不能改动
BOOL OnInitDialog();
};
CMainDialog::CMainDialog()
:CDialog(IDD_MAIN_DIALOG) {
//图标资源句柄
m_hicon = ::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_MAIN_ICON));
//m_hicon = TheApp.LoadIcon(IDI_MAIN_ICON);
}
//初始化函数,名字不能改动
BOOL CMainDialog::OnInitDialog() {
SetWindowText(L"First MFC");
//设置图标
SetIcon(m_hicon, TRUE);//大图标
SetIcon(m_hicon, FALSE);//小图标
return TRUE;
}
#include"stdafx.h"
#pragma once
class MainApp :public CWinApp {
public:
//初始化
BOOL InitInstance();
//资源释放
BOOL ExitInstance();
};
MainApp TheApp;
//启动管理
BOOL MainApp::InitInstance() {
/*MessageBox(NULL, L"First MFC", L"提示", MB_OK);*/
CMainDialog dig;
dig.DoModal();
return TRUE;//初始化成功
}
//资源释放
BOOL MainApp::ExitInstance() {
return 0;
}