一、Win32 console application、Win32 application和mfc区别
vs创建vc++6.0中win32 application的方法:选择新建项目-win32-win32项目-
右键源文件添加新建项-c++文件编写程序
编写一个应用程序通常遵循的步骤:
1winmain,是窗口程序的入口点函数,即要先定义winmain函数
2创建一个窗口,包括a设计一个窗口类,b注册窗口类,c创建窗口,d显示及更新窗口
3进行消息循环
4编写窗口过程函数
主体为winmain及后续的2、3,4为用户自定义动作,3保证始终查询在窗口中产生的消息,为真时将消息传到4窗口过程函数对应处理,而在4中一旦判断发生关闭窗口动作则发送WM_QUIT回消息循环,即为零时窗口程序结束,若在关闭窗口中不判断而是销毁窗口中判断,则先销毁窗口而程序还在后台运行。
WM_PAINT中仅能使用BeginPaint-EndPaint对来获取释放DC,其他地方仅能用GetDC-ReleaseDC对来获取释放DC。
二、mfc框架类与视类
- 为了改原来自动生成的窗口风格,需要写自己的窗口类和注册。在mfc应用程序中改框架类:是改CMainFrame中的源文件,在窗口创建之前修改则改其中的CMainFrame::PreCreateWindow函数;在创建之后修改则改其中的CMainFrame::OnCreate函数。但此类的修改只能改框架类下的图标,因为标题栏在框架窗口中,要改背景和光标则改视类的PreCreateWindow函数,在其中写cs.lpszClass = "类名";视类为C创建的工程名View。以上两个类的头文件和源文件均为类名去掉C。但在CMainFrame::PreCreateWindow函数中的cs.lpszClass = "类名";语句不能删,否则图标的改变不能显示(删则图标不改变,但不影响视类光标和背景的改变)。
- 但重写一个窗口类很麻烦,因此分别在框架和视类中用cs.lpszClass = AfxRegisterWndClass()函数来改变,依然是框架类改图标,视类改背景和光标,在一个类中的另一个类的修改对象参数设为0。
- 以上为在窗口创建之前修改,也可以在窗口创建之后用SetClassLong修改。在CMainFrame中的OnCreate函数中改;但视类中没有OnCreate函数,因此先对视类添加WM_CREATE消息相应函数,用类向导即可,然后在生成的OnCreate函数中用SetClassLong函数修改。
参考《VC++深入详解》