MFC下动态创建CButton

Q

       我在用MFC写一个应用程序,需要在对话框中动态增加按钮。我该怎么实现消息句柄?

A

       标准的menu或者button消息映射句柄类似于下面这种形式:

       ON_COMMAND(ID_MYCOMMAND, OnMyCommand)

       但是如果你是动态创建的button/menu项,你可能在编译时无法知道命令ID(COMMAND ID).,它可能被存储在一个数据成员里,类似于CSqueegie::m_nMeMyMineID

       怎么办呢?

       很简单:用ON_COMMAND_EX_ RANGE表示不受限制的范围。

       ON_COMMAND_EX_RANGE(0,
                                                             0xFFFF, OnAnyCommand)
       现在MFC发送0-0xFFFF内的任何命令(这指的是所有命令你都可以处理),你的程序可以在运行时检测指定的ID。

        BOOL CSqueegie::OnAnyCommand(UINT nID) 
         {
                if (nID == m_nMeMyMineID) {
                        // do the command
                        return TRUE; // handled
                 }
                 return FALSE;
         }

        对于ON_COMMAND,你的控制函数有一个参数和void返回。但是对于ON_COMMAND_ EX_RANGE,如果你取得命令,你的控制函数得到命令ID并且必须返回TRUE,否则的话返回FALSE。如果你返回FALSE,MFC将继续发送命令以便其他的对象能取得。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值