1. 应用程序类 CWinApp
https://docs.microsoft.com/zh-cn/cpp/mfc/reference/cwinapp-class?f1url=https://msdn.microsoft.com/query/dev15.query?appId=Dev15IDEF1&l=ZH-CN&k=k(AFXWIN/CWinApp);k(CWinApp);k(DevLang-C++);k(TargetOS-Windows)&rd=true&view=vs-2019
CWinApp 类
派生出 Windows 应用程序对象的基类
2. 框架类 CFrameWnd
提供 Windows 单文档界面 (SDI) 重叠式或弹出框架窗口功能, 并提供管理窗口的成员.
class CFrameWnd : public CWnd
错误
1>------ 已启动生成: 项目: mfc, 配置: Debug Win32 ------
- 1>mfc.cpp
- 1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\atlmfc\include\afx.h(24): fatal error C1189: #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
1 > 已完成生成项目 "mfc.vcxproj" 的操作 - 失败.
========== 生成: 成功 0 个, 失败 1 个, 最新 0 个, 跳过 0 个 ==========
解决:
fatal error LNK1561: 必须定义入口点 " 解决方法
建立了一个空项目.
添加了一个 Hello.cpp 和 Hello.h
然后, 编译的时候, 报错:"fatal error LNK1561: 必须定义入口点"
网上找了许久, 发现一个解决方法.
解决方案上, 右键 -> 属性 -> 链接器 -> 高级 -> 入口点, 设置成: WinMainCRTStartup
另一方法是:
解决方案上, 右键 -> 属性 -> 链接器 -> 系统 -> 子系统, 下拉框选择: 窗口 (/SUBSYSTEM:Windows)
1, 有且只有一个全局应用程序类对象
2, 在程序入口函数实现功能 InitInstance()
A, 给框架类 MyFrame 对象动态分配空间 (自动调用它的构造函数)
a, 框架类 MyFrame 对象构造函数里创建窗口 CWnd::Create
B, 框架类对象显示窗口 CWnd::ShowWindow
C, 框架类对象更新窗口 CWnd::UpdateWindow
D, 保存框架类对象指针 CWinThread::m_pMainWnd
PostMessage 与 SendMessage
消息映射
- #include "mfc.h"
- // 有且只有一个全局的应用程序类对象
- MyApp myApp;
- BOOL MyApp::InitInstance()
- {
- /*
- 1, 创建框架类对象
- 2, 显示窗口
- 3, 更新窗口
- 4, 保存框架类对象指针
- */
- MyFrame *frame = new MyFrame;
- frame->ShowWindow(SW_SHOWNORMAL);// 显示窗口
- frame->UpdateWindow();// 更新窗口
- m_pMainWnd = frame; // 保存框架类对象指针
- return true;
- }
- // 定义消息宏
- BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)
- ON_WM_LBUTTONDOWN()
- END_MESSAGE_MAP()
- MyFrame::MyFrame()
- {
- // CWnd 类的成员函数 CWnd::create
- // CFrameWnd 继承于 CWnd
- Create(NULL, TEXT("MFC")); // 调用以创建并初始化与关联的 Windows 框架窗口 CFrameWnd 对象.
- }
- void MyFrame::OnlButtonDown(UINT, CPoint)
- {
- // CWnd::MessageBox
- MessageBox(TEXT("鼠标左键"));
- }
- #pragma once
- #include <afxwin.h>
- //1. 应用程序类 CWinApp, 派生类 (子类)
- class MyApp : public CWinApp
- {
- public:
- // 基类的虚函数
- // 派生类只是重写
- // MFC 程序入口地址
- virtual BOOL InitInstance();
- private:
- };
- //2. 框架类 CFrameWnd, 派生类 (子类)
- class MyFrame : public CFrameWnd
- {
- public:
- MyFrame();
- // 声明消息映射宏
- DECLARE_MESSAGE_MAP();
- afx_msg void OnlButtonDown(UINT,CPoint);
- private:
- };
来源: http://www.bubuko.com/infodetail-3043153.html