WinX教程之我的实战(三)

今天我们来看看第三套教程实例——step003-commandWinX是越来越有意思了,通过这套实例,我们就已经可以处理命令消息。

 

命令消息

如果你用过MFC,那么你一定知道什么叫命令消息。说的通俗点,命令消息就是和控件、菜单相关的消息,一般命令消息都会和一个ID相关,即控件ID或者菜单的一个条目的ID,也由ID区分不同的命令消息。

 

实例中用到的命令消息处理宏

在实例CmdDisp中用到了:

l         WINX_CMDS_BEGIN

l         WINX_CMD

l         WINX_CMDS_END

 

用法是在类定义中,如这样写:

 

 

WINX_CMDS_BEGIN();
    WINX_CMD(IDC_TODO, OnCmdTodo);
    WINX_CMD(ID_HELP_ABOUT, OnCmdAbout);
WINX_CMDS_END();

 

WINX_CMD带有两个参数,前一个是控件ID,后一个是拦截此命令消息的函数。当该控件被单击时,就调用后一个函数。

 

我们在定义消息处理函数名前用到了winx_msg宏,winx_msg宏的定义如下:

  

#define  winx_msg    winx_call

 

winx_call的定义如下:

  

#define  winx_call   __fastcall

 

__fastcall是另一种不同于__cdecl__stdcall的函数调用规范,它速度快,使用寄存器来传递参数。要知道详细信息,可以网上搜索。不过我们不用关心它,我们只要在定义消息处理函数名前加上winx_msg宏就可以了。(注:WinX并不依赖于__fastcall,意思就是说,不写调用方式也可以)

 

在实例CmdState中用到了:

l         WINX_CMDS_BEGIN

l         WINX_CMD

l         WINX_CMDS_END

l         WINX_UPDATEUI_BEGIN

l         WINX_UPDATEUI

l         WINX_UPDATEUI_END

 

比第一个实例多了后面三个宏。用法就是在类定义中,如下这样写:

 

 

WINX_UPDATEUI_BEGIN()

       WINX_UPDATEUI(IDC_ALL, UPDUI_MENUPOPUP)

WINX_UPDATEUI_END();

 

引自WinX附带文件WinxPreview.ppt

l         WTL的命令状态维护机制不错,但是ModalDialog不完全支持该机制。主要的问题在于没有OnId

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值