我现在有一个对话框如图, 点击左边的按钮,在中间大的矩形框(就叫页面吧)里显示不同的内容(包含各种控件)。
需求:当点击“应用”按钮后要让其变灰,然后点击大的矩形框里面任意一个控件的时候又让其变为可用状态,其实就类似如输入法的配置界面。
问题:我需要让每个控件都响应一个鼠标点击事件,当事件发生的时候就让“应用按钮”变为可用状态,但是这显然不太好,因为我的页面有很多个,并且页面里的控件也比较多, 请教各位有没有简单一点的方法。

解决方案 »

  1.   

    那不是像用 CTabCtrl一样咯
      

  2.   

    我用的不是CTabCtrl啊, 而且这个程序已经写好了, 不可能再进行大的改动了, 有没有比较有建设性的建议啊
      

  3.   

    额,好久没用MFC了,我只知道这样可以实现,
    应该是在对话框的消息中处理这个PreTranslateMessage
    然后选择你感兴趣的消息提前处理
      

  4.   

    有没有人知道WTL里面PreTranslateMessage怎么处理
      

  5.   

    ON_CONTROL_RANGE(BN_CLICKED, Cuser::BUTTONID + 1, Cuser::BUTTONID + 4 , CHRMSDlg::OnButtonClicked)消息映射范围宏: 
    ON_COMMAND_RANGE
    ON_UPDATE_COMMAND_UI_RANGE
    ON_CONTROL_RANGE你可以使用消息映射范围宏, 怎么使用可以百度
      

  6.   

    已解决,多谢各位了!
    方法如下: virtual BOOL PreTranslateMessage(MSG* pMsg)
    {
    // 恢复应用按钮处于可用状态
    if (pMsg->message == WM_LBUTTONDOWN)
    {
    HWND pageWnd = WindowFromPoint(pMsg->pt);
    int ctrlID = ::GetDlgCtrlID(pageWnd);
    if ((::GetParent(pageWnd) != m_hWnd) && ctrlID)
    {
    SendMessage(m_hWnd, WM_COOLING_APPLY_TRUE, 0, 0);
    }
    }
    return CWindow::IsDialogMessage(pMsg);
    }