Window程序内部机制
API:Windows操作系统本身提供各种各样的函数,而这些函数是应用程序开发人员编程时调用的接口,即应用程序接口(API,Application Programming Interface)。
SDK:软件开发包(Software Development Kit),包含了API函数库、帮助文档、使用手册、辅助工具等资源。
窗口:
1.一个应用程序至少要有一个窗口,称为主窗口。
2.一个应用程序窗口通常包含:标题栏、菜单栏、系统菜单、最小化框、最大化框、可调边框,滚动条。(注:包含的这些不能说是窗口)
窗口分为:客户区(windows应用程序管理)和非客户区(应用程序管理外观与操作)。
3.电脑开机启动,进入windows系统后,显示的桌面,是一个桌面窗口。
4.父窗口与子窗口,子窗口的形式有按钮、单选按钮、复选框、组框、文本框等。
句柄:
句柄有两种含义:
1.是一个特殊的智能指针,当一个应用程序引用其他系统的内存块或者对象的时候,就用到了这种句柄。
2.我们现在所讲编写Win32窗口程序的这种句柄,它不是一个智能指针。它是用来标识应用程序中的不同对象和同类中的不同的实例,是windows用来标识应用程序中使用唯一的整数值,即大小为4字节(在64位程序中是8字节)。windows系统大量使用了句柄来标识对象,比如:一个窗口、按钮、图标、滚动条、输出设备、控件、文件等对象,均是通过句柄来访问相应的对象的信息。
消息:
typedef struct tagMSG{
HWND hwnd; //标识窗口,标识某个活动窗口
UINT messge; //消息的标识符,不同消息对应的数值不同,数值一般为WM_XXX
WPARAM wParam; //消息的附加消息
LPARAM lParam;
DWORD time;
POINT pt;
}MSG;
详细说明各个参数:
------------------
HWND:一个消息一般都是和某一个窗口有关系的,用来标识窗口。发送一个消息, 就表明该消息由指定的窗口接受。
比如有A、B、C三个窗口。如果A窗口发送给C窗口,就标识一个窗口进行传送数据,而不是B窗口去接收数据。。
-----------------
UINT messge;消息的标识符,即消息的名称。不同消息对应的数值不同,数值由于不方便记忆,所以一般定义为为WM_XXX宏(XXX是相应的字母),在查看定义中有各自确切的数值。比如WM_CHAR,表示消息是字符消息,在VS查看定义中的确切数值为0x0102。
------------------
WPARAM和LPARAM:WPARAM是16位短整数(查看定义为WPARAM->ULONG_PTR- >unsigned int),而LPARAM是32位整型变量(查看定义:LPARAM->LONG_PTR->long )。这两个都是Win16系统遗留下来的产物,到了Win32API,都是32位,大小是一 样的。