首先,我们需要创建一个MFC的项目。
创建完成后,我们点击下一步来到如图所示的设置界面,选择单个文档,取消文档/视图结构支持,取消使用 Unicode 库。
点击下一步,选择无数据库支持。再点击下一步,主要框架仅勾选最小化框和系统菜单,并选择使用菜单栏和工具栏,然后直接点击完成。
在右侧我们可以看到解决方案资源管理器中的文件列表。
直接运行程序会发现已经自行生成了很多内容,包括菜单栏等,下面我们删除它。
我们的项目名称为MFCTest
,因此在MFCTest.cpp
中,函数BOOL CMFCTestApp::InitInstance()
的最后三行代码为自动生成的代码:
|
|
我们将其改为:
|
|
更改后的代码将窗口渲染为811*632
的大小,而实际上用于显示的部分仅800*600
。
在文件MainFrm.cpp
中,找到函数 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
:
可以发现为了兼容性和创建各种控件已经生成了很多的代码:
|
|
可以看到:
|
|
这两行代码仅仅只是为了兼容VS2005的窗口样式。随时代发展,这些老版本我们不考虑其兼容性,删掉以避免代码的冗长。 同样的还有很多类似的可以自行尝试。 最后修改完后的代码:
|
|
这时我们运行的效果为:
关于windows的消息机制详细描述请查阅各种文献。这里作简要叙述:Windows为每个程序创建并维护了一个消息队列(不懂队列的请恶补数据结构),当用户操作计算机时,会产生各类消息,包括鼠标消息键盘消息等。Windows则会将这些消息放入消息队列中供程序进行while(1)读取,当遇到需要的消息时,进行消息处理,而其他情况则负责刷新渲染整个窗口。MFC作为Windows已经封装的工具,存在诸多限制,不如windows32application来得顺畅,但是十分适合初学者。