第三章 高级WINDOWS编程
"Are you sure this sweet machine isn't going to waste?"
---- Dade,Hackers
不是只有研究火箭的科学家才能体会Windows编程是一项巨大的工程。然而,最COOL的事情是你不需要知道很多便能完成很多工作。记住这一点。本章介绍了一些创建Windows应用程序所需的最重要的部分。你将会学到:
1.使用资源:icon,cursor,sound.
2.菜单
3.GDI基础和video System
4.输入设备
5.发送消息
第一部分: 使用资源
Windows 的创造者们采用的一个主要的设计方法是在Windows应用程序中保存更多的信息。他们把程序的资源集成到了.exe文件中。这样做有以下几个好处:
. 单个 .exe文件就能够包含代码和数据
. 如果没有其他额外数据,你就不会丢失掉这些数据
. 资源不容易被外人修改
为了利用这种数据库技术的优势,WINDOWS编程支持叫做资源。程序可以自行加载数据段和程序代码。下表阐释了这一理念。在这里谈到的资源可以使任意类型的数据,因为Windows支持用户定义资源类型。 还有很多预定义的类型能够满足大部分的需求:
图标,指针,字符串,声音,位图,对话框,元文件
在VC中有资源编译器的程序。其中.RC包含了资源的ASCII文本描述。之后资源编译器加载所有的资源然后把他们放置到.RES的大数据文件中。
这个.RES文件包含了所有资源的二进制数据。然后和.CPP,.H等文件编译到一个.EXE中.
使用Icon资源
使用方法:1.使用字符串名称: icon_name ICON FILENAME.ICO
例子: windowicon ICON star.ico
2.使用整型ID: icon_id ICON FILENAME.ICO
例子: 124 ICON ship.ico
WINDOWICON ICON ship.ico
你或许会问两个windowicon有什么区别,如果编译器查找到你包含的头文件内有这些符号的定义,就会用资源ID来指代ICON,否则就会用字符串来指代ICON
一般这些符号定义在RESOURCE.H中: #define WINDOWICON 100
程序中的调用方法为:
HICON hIcon = LoadIcon(hinstance,"icon_name") (字符串指代ICON)或者
HICON hIcon = LoadIcon(hinstance,MAKEINTRESOURCE(ID_ICON)) (ID指代ICON)
使用其他资源
指针: 后缀: .cur 关键字:CURSOR 调用函数:LoadCursor() 使用函数:SetCursor()
字符串表: 关键字:STRINGTABLE{ID_STRING1 ""; ID_STRING2 ""}
使用函数 LoadString(hinstanse,ID_STRING,string,nBufMax)
.Wav文件: 后缀:.wav 关键字:WAVE 调用函数:PlaySound()
Menu: Menu_Name MENU DISCARDABLE
{
POPUP "File"
{
MENUITEM "&Open", MENU_FILE_ID_OPEN
}
}
加载函数:LoadMenu() 使用函数:SetMenu()
Menu检测:在回调函数内:WM_COMMAND,lparam(发送消息的窗口句柄),wparam(选择的MENU,ID)
具体方法:case WM_COMMAD{
switch(LOWORD(wparam))
{
case MENU_FILE_ID_OPEN:
{}
}
}
原作者写的真的很详细,每个点都介绍的很全面,如果有时间还是参考原文吧,那里有很详细的例子。