GetWindowRect()得到的是在屏幕坐标系下的 RECT(即以屏幕左上角为原点),
我们还可以在图像控件对象上调用 GetWindowRect 函数来得到图像控件窗口的
大小和位置。(以屏幕左上角为原点得到的)
GetClientRect() 得到的是在客户区坐标系下的 RECT(即以所在窗口左上角为原
点,去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为 0,0)
ScreenToClient() 就是把屏幕坐标系下的 RECT 坐标转换为客户区坐标系下的
RECT 坐标。
SetWindowPos()该函数的作用是设置窗口的位置和大小,见课本 P252
键盘虚拟键的宏都是以“VK_”开头的。
GetStockObject() 可 以 用 于 获 取 画 笔 、 画 刷 、 字 体 、 调 色 板 的 句 柄 。 由 于
GetStockObject()可以返回多种资源对象的句柄,在实际调用该函数前无法确定
他返回哪一种资源对象的句柄,因此它的返回值类型定义为 HGDIOBJ,在实际
使用时,需要进行类型转换。
发送消息可以使用 SendMessage 和 PostMessage 函数。SendMessage 将消息直接
发送给窗口,并调用该窗口的窗口过程进行处理。在窗口过程对消息处理完毕
后,该函数才返回(SendMessage 发送的消息为不进队消息)。PostMessage 函
数将消息放入与创建窗口的线程相关联的消息队列后立即返回。除了这两个函
数外,还有一个 PostThreadMessage 函数,用于向线程发送消息,对于线程消息,
MSG 结构体中的 hwnd 成员为 NULL。
要在窗口中输出文字或者显示图形,需要用到设备描述表(Device Context),
简称 DC。DC 是一个包含设备(物理输出设备,如显示器,以及设备驱动程
序)信息的结构体,在 Windows 平台下,所有的图形操作都是利用 DC 来完成
的。
窗口客户区的一部分或者全部变为“无效”时,系统会发送 WM_PAINT 消息,通
知应用程序重新绘制窗口。当窗口刚创建的时候,整个客户区都是无效的。
当窗口从无到有、改变尺寸、最小化后再恢复、被其他窗口遮盖后再显示时,
窗口的客户区都将变为无效,此时系统会给应用程序发送 WM_PAINT 消息,通
知应用程序重新绘制。
当用户单击窗口上的关闭按钮时,系统将给应用程序发送一条 WM_CLOSE 消
息。
DestroyWindow 函数在销毁窗口后会向窗口过程发送 WM_DESTROY 消息。注
意,此时窗口虽然销毁了,但应用程序并没有退出。
DestroyWindow 函数在销毁窗口后,会给窗口过程发送 WM_DESTROY 消息,
我们在该消息的响应代码中调用 PostQuitMessage 函数。PostQuitMessage 函数向
应用程序的消息队列中投递一条 WM_QUIT 消息并返回。GetMessage 函数只有
在收到 WM_QUIT 消息时才返回 0,此时消息循环才结束,程序退出。
在 MFC 中,类的命名都以字母“C”开头。
在 ClassView 标签页中的类名上双击,右边工作区窗格就会打开定义该类的头
文件。
如果想查看某个类或函数的帮助,可以把当前光标放在该类或函数所在位置,
然后按 F1 键,即可打开 MSDN 中相应帮助。
Afx 前缀的函数代表应用程序框架(Application Framework)函数。应用程序框
架实际上是一套辅助我们生成应用程序的框架模型。该模型把多个类进行了一