WindowsMFC 开发
欸终于把 WIndowsSdk 搞完了 今天开始开发MFC 咯!
MFC是基于SDK 开发的面向对象的封装框架 这就是我为什么前面费劲的讲如何用SDK 然后捏发现一一个事情一堆东西咱们反复用十分麻烦 所以MFC 诞生了
事实上来说就是把所有的关键函数封装好然后呢 构造个HWND hwnd 那种的然后关键调用而已(MFC都干了)
创建一个MFC 程序
创建时候发现什么应用程序类型 单个文档类似于记事本 多个就是像VS开发 而对话框比较简单,当然在使用MFC 时候发现共享Dll 和静态库
静态是直接把框架代码链接到程序 则为静态库 无需系统Dll
共享Dll 是需要Dll文件才能跑但是省空间
两次下一步发现一个类 App 和Dlg
- App: 业务逻辑数据存储 UI
- Dlg: Dialog 和用户交互用的
怎么玩
打开后发现啊呀骇死我了,这么多东西看不懂捏 其实他早就为你准备好了 你只需要动动手指
- 打开视图
- 找到类视图
- 选择MFC
- CMFCApplication那个类 可以自定义
- 右键选择类向导 找到自己想要的虚函数 然后重构就完了
层次结构 MFC的层次结构可以访问微软文档进行查看
MFC 层次结构图& 链接
当然了可能会访问不到 可以选择浏览本文章
方便初学者的MFC 6.0 的结构图
创建单文档
创建单文档的风格有很多 但是 MFC 标准样式的是最简单的
来做个对比
类视图类的只有
CWinApp 应用程序类初始化反初始化
CDialog
但是 单文档
CWinApp
CFrameWnd 主窗口
CView 视图类 跑一下模板然后看一白色区域就是视图类 使用Spy++ 查看后是类名是AfxFrameOrView140ud
CDocment 文档类 保存数据
如何使用CWnd 类 也就是窗口类
- CWnd wnd; wnd.xxxx()
- CWnd::xxxxx()
如何创建一个简单的窗口非模态的来测试MFC 框架的便捷性
MFCApplication3.cpp里为例子
// 用于运行对话框的应用程序命令
void CMFCApplication3App::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal(); // 这是模态化对话框
}
然而我要做个非模态的
// 用于运行对话框的应用程序命令
void CMFCApplication3App::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.Create(ID_AAA);
aboutDlg.ShowWindow (SW_SHOWNORMAL);
}
但是打开能打开但是会瞬间消失 可以做个实验 可能是析构函数的时候把这个释放了
// 用于运行对话框的应用程序命令
void CMFCApplication3App::OnAppAbout()
{
static CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
由于全局不会释放 运行后果然出现了 不学SDK 是不会明白原理的 同时证明 MFC 就是轮椅
回顾方便初学者的MFC 6.0 的结构图 的
Dialog Boxes 类 和View 他们都是视图 为什么还要分类
DialogBox 需要资源 而Views 不需要 ,Views和CDocument 也就是文档有交互
那么下一章就是DC类的交互了