第4章Win32应用程序
概述MFC由于它的易用性,往往被误认为VC++开发必须使用MFC。其实MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32程序设计.简介Win32 Application 就是普通常见的窗口应用程序,有自己的界面,即GUI,我们可以通过鼠标操作来完成控制。程序以WinMain为入口,能够使用win32 API函数。Win32应用程序编程与MFC的主要不同点是,MFC主要用C++语言,而Win32应用程序大多数使用C语言。所以MFC应用程序可以更多地使用CWnd,CButton等操作窗口,而Win32应用程序主要使用窗口句柄,调用窗口的函数操作窗口。常用函数介绍1/WNDCLASSEX结构体进入WinMain()时,首先得注册窗口类。当注册窗口时,可以填写WNDCLASSEX结构设置窗口的一般信息.WNDCLASSEX结构体祥见 msdn其中最重要的成员 WNDPROC lpfnWndProc 和 LPCTSTR lpszClassName.每一个窗口类必须有一个窗口过程,当Windows把属于特定窗口的消息发送给该窗口时,该窗口的窗口类负责处理所有的消息,加入消息处理的过程。窗口消息处理回调函数的声明:LRESULT CALLBACK MainWndProc( HWND hWnd, UNIT nMessage, WPARAM wParam, LPARAM lParam )hWnd: 窗口句柄nMessage: 传递给hWnd窗口的消息IDwParam: 消息参数lParam: 消息参数2/函数GetMessage从调用的线程的消息队列中取得一个消息并将期限放于指定的结构体中。此函数可取得与指定窗口联系的消息和由PostThreadMessage寄送的线程消息。BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UNIT wMsgFilterMin UNIT wMsgFilterMax);返回值:如果函数取得WM_QUIT之外的其他消息,返回非零值。3/TranslateMessage函数功能:该函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage或PeekMessage时被读出。4/DispatchMessag函数分发一个消息给窗口程序。通常消息从GetMessage函数获得。消息被分发到回调函数,然后处理消息。Win32应用程序解读:首先注册窗口类,再创建窗口,然后显示窗口,进入接收消息循环,软换消息,将转换的消息分发给窗口程序见附件程序 Win32App文件夹常见消息处理在MainWndProc函数中添加以下代码:case WM_PAINT:HDC hdc;PAINTSTRUCT ps;HFONT hFont, hOldFont;TCHAR szText[]=_T(面加入如下变量声明HWND m_hEdintWnd; //文本编辑框句柄HWND m_hButton; //按钮窗口句柄HINSTANCE m_hInstance; //实例句柄UNIT nButtonID=2011 //指定按钮的IDstep 2:在WinMain()中加入代码: m_hInstance=hInstance;step 3:在主窗口的消息处理函数MainWndProc中的 WM_CREATE消息中加入创建一个编辑框和一个按钮控件的代码.然后在WM_COMMAND消息中加入处理按钮单击的消息。case WM_CREATE:m_hEditWnd=CreateWindow(