资源是一些二进制数据,它能够添加到基于窗口的应用程序的可执行文件中。资源可以是标准的或者自定义的。
资源文件的源文件是以rc为扩展名的脚本文件,由资源编辑器Rc.exe编译成为以res为扩展名的二进制文件,在链接的时候,由Link.exe链入到可执行文件中。所以要想使用资源文件,必须首先建立一个资源脚本文件。
.rc文件中的所有资源都关联了一个字符串名称或数字,当使用数字标识资源的时候,.h文件对这些数字都定义了宏名。如:
.rc文件:IDI_TYPER ICON "Demo.ico"
资源编辑器Rc.exe看到这行代码后会将文件名为Demo.ico的图标添加到目标二进制文件中。IDI_TYPER是这个图标的标识,许多与资源有关的函数都要以它为参数。
.h文件:#define IDI_TYPER 101
这说明程序中有一个ID号为101的资源,要引用此资源,在程序中包含.h头文件以后,直接用宏名IDI_TYPER就可以。
当用户点击菜单中的某一选项时,Windows即向应用程序发送一个WM_COMMAND消息,其中参数wParam的低字节包含了用户点击菜单的ID号。
WM_CLOSE消息默认情况下由DefWindowProc函数处理,它会调用DestroyWindow函数来销毁窗口。窗口销毁时,窗口函数会收到一个WM_DESTROY消息(由DestroyWindow函数发出),表示窗口正在销毁。
PostMessage函数的功能是向指定窗口投递消息。与SendMessage函数不同的是PostMessage函数发送消息后马上返回,并不等待消息的运行结果。它不是把消息直接发给窗口处理函数,而是把消息投放到窗口所在线程的消息队列中等待GetMessage函数取出。
接收键盘输入:
当按下一个键时,windows会向获得输入焦点的那个窗口所在线程的消息队列投递一个WM_KEYDOWN或者WM_SYSKEYDOWN消息。
wParam参数包含了敲击键的虚拟键码,IParam参数则包含了另外一些状态信息。
当一个WM_KEYDOWN消息被TranslateMessage函数转化后会有一个WM_CHAR消息产生,此消息的wParam参数包含了按键的ANSI码。
接收鼠标输入:
应用程序以接收发送或者投递到它的窗口的消息的形式接收鼠标输入。当用户按下鼠标左键时发送WM_LBUTTONDOWN消息,IParam参数包含了鼠标的位置坐标,可以这样读出坐标信息。
xPos = LOWORD(IParam)
yPos = HIWORD(IParam)
这些坐标都以客户区左上角为原点,向右是x轴正方向,向下是y轴正方向。
wParam参数包含鼠标按钮的状态,这些状态都以MK_(意为mouse key)为前缀。
网友评论