MFC学习Day1
windows消息机制
基本概念解释
WIndows操作系统上的GUI编程(不跨平台)
1.SDK&API
1. 1 SDK(software development kit)
软件开发工具包(第三方工具)
1.2 API(application programming interface)
windows操作系统提供给应用程序的编程接口。Windows应用程序API函数是通过C语言实现的,所有主要的Windows函数都在Windows.h头文件中进行了声明。Windows操作系统提供了1000多种API函数。
2.窗口和句柄
2.1窗口
包括状态栏,工具栏,标题栏,编辑区,菜单栏,等等。窗口可以分为客户区和非客户区。
2.2句柄
在Windows应用程序中,窗口时通过句柄(handle)来标识的,我们要对某个窗口进行操作,首先就要得到这个窗口的句柄。 句柄时windows程序中的一个重要的概念,使用也非常频繁,在Windows程序中,有各种各样的资源(窗口,图标,光标,画刷等),系统在创建这些资源时会为它们分配内存,并返回这些资源的标识号,即句柄。如有图标句柄,画刷句柄,光标句柄等等。
3.消息与消息队列
如鼠标点击事件发生后,操作系统捕捉此消息,而后封装好在推入消息队列中。应用程序再通过GetMessage()取消息,再分发给操作系统,而后操作系统再通过回调函数完成信息处理。这个过程也叫窗口过程。
4.Winmain函数
当Windows操作系统启动一个程序时,它调用的就是该程序的winmain函数(实际上时由插入到可执行文件中的启动代码调用的)。Winmain函数是Windows程序的入口点函数,与DOS程序的入口点函数main的作用相同,当Winmain函数结束或返回时,Windows应用程序结束。
Windows编程模型
一个完整的Win32程序,程序实现的功能是创建一个窗口并在该窗口响应键盘及鼠标事件,程序的实现步骤为
-
WinMain函数定义
-
创建一个窗口
-
进行消息循环
-
编写窗口过程函数
具体六个步骤
-
设计窗口WNDCLASS wc
-
注册窗口RegisterClass
-
创建窗口creatWindows
-
显示和更新showWindow及updateWIndow
-
通过循环取消息 MSG msg,通过这个消息结构体来处理消息
-
写循环while(1)
-
GetMessage()==false退出循环
-
翻译消息
-
分发消息
-
-
窗口过程处理
-
窗口过程函数LRESULT CALLBACK WindowProc
-
返回默认处理return DefWindowProc(hwnd, uMsg, wParam, lParam);
-
利用分支机构来对不同的消息做不同的处理
-
-