现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

MFC下动态创建CButton

2012-08-29 15:00 工业·编程 ⁄ 共 677字 ⁄ 字号 暂无评论

    标准的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将继续发送命令以便其他的对象能取得。

给我留言

留言无头像?