Windows 程序设计 (菜单及其它资源)

将图标添加到程序
 
将资源添加到程序中需要Visual C++ Developer Studio的一些附加功能。对于图示来说,可以使用「Image Editor」(也称为「Graphics Editor」 )来绘制图标的图像。该图像被储存在扩展名为.ICO的图示文件中。Developer Studio还产生一个资源描述档 (扩展名为.RC的文件,有时也称作资源定义文件),它列出了程序的所有资源和一个让程序引用资源的表头文件(RESOURCE.H) 。

 

下面把上头那段程序代码加以修改,以便使用加速键:
while       (GetMessage (&msg, NULL, 0, 0)) 

   if (!TranslateAccelerator (hwnd, hAccel, &msg)) 
    { 
                  TranslateMessage (&msg) ; 
                  DispatchMessage (&msg) ; 
           } 

        
TranslateAccelerator函数确认存放在msg消息结构中的消息是否为键盘消息。如果是,该函数将找寻句柄为hAccel的快捷键表。如果找到了一个符合的,则呼叫句柄为hwnd的窗口消息处理程序。如果快捷键ID与系统菜单的菜单项一致,则消息就是WM_SYSCOMMAND;否则,消息为WM_COMMAND。

当TranslateAccelerator传回时,如果消息已经被转换(并且已经被发送给窗口消息处理程序),那么传回值为非零;否则,传回值为0。如果TranslateAccelerator传回一个非零
值,则不呼叫TranslateMessage和DispatchMessage,而是经过循环回到GetMessage呼叫中。

TranslateMessage中的参数hwnd看起来有点累赘,因为消息循环中的其它三个函数都没有要求这个参数。此外,消息结构本身(结构变量msg)有一个叫做hwnd的成员,它是窗口句柄。

 
该函数有些不同的原因在于:msg结构的字段由GetMessage呼叫填入。当GetMessage的第二个参数为NULL时, 函数会找寻应用程序所有窗口的消息。 当GetMessage传回时, msg结构的hwnd是将要获得消息之窗口的窗口句柄。然而,当TranslateAccelerator把键盘消息转换为WM_COMMAND或WM_SYSCOMMAND消息时, 它使用函数的第一个参数指定的窗口句柄hwnd来代替窗口代号msg.hwnd。Windows就是这样把所有快捷键消息发送给同一窗口消息处理程序的,即使另一个应用窗口目前拥有输入焦点。当系统模态对话框或者消息框拥有输入焦点时,TranslateAccelerator不会转换键盘消息,因为这些窗口的消息是不经过程序的消息循环的。

 
控件型态                       窗口类别                                   窗口样式 
PUSHBUTTON             按钮                                  BS_PUSHBUTTON | WS_TABSTOP 
DEFPUSHBUTTON     按钮                                  BS_DEFPUSHBUTTON | WS_TABSTOP 
CHECKBOX                  按钮                                  BS_CHECKBOX | WS_TABSTOP 
RADIOBUTTON            按钮                                  BS_RADIOBUTTON | WS_TABSTOP 
GROUPBOX                  按钮                                  BS_GROUPBOX | WS_TABSTOP 
LTEXT                          静态文字                            SS_LEFT | WS_GROUP 
CTEXT                         静态文字                             SS_CENTER  | WS_GROUP 
RTEXT                         静态文字                             SS_RIGHT | WS_GROUP
ICON                           静态图标                             SS_ICON 
EDITTEXT                  编辑                                    ES_LEFT | WS_BORDER | WS_TABSTOP 
SCROLLBAR             滚动条                                             SBS_HORZ 
LISTBOX                    清单方块                             LBS_NOTIFY  | WS_BORDER | WS_VSCROLL 
COMBOBOX             下拉式清单方块                    CBS_SIMPLE  | WS_TABSTOP 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值