我的一个CFormView类里有很多按钮和编辑框等,我希望每个控件在某状态下鼠标点击都无效.状态改变后再有效.除了重新写每个控件的ONLButtonDown外,有没有其他方法?

解决方案 »

  1.   

    GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
      

  2.   

    有。
    将所有控件的TableStop属性选中
    CWnd *pFirstWnd = GetNextDlgTabItem(NULL);
    CWnd *pWnd = pFirstWnd;
    while(pWnd != NULL)
    {
    pWnd->ShowWindow(FALSE);
    pWnd = GetNextDlgTabItem(pWnd);
    if(pWnd == pFirstWnd)
    break;
    }
      

  3.   

    只有逐个enblewindow了,不晓得其他人还有什么想法美,呵呵!
      

  4.   

    "重新写每个控件的ONLButtonDown"??为什么要重写?
    EnableWindow不可以吗?
      

  5.   

    重载框架类的PreTranslateMessage函数:
    BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
    {
    if (pMsg->message == WM_LBUTTONDOWN) // 这里可以加一个标志控制是否允许点击
    {
    CRect rt;
    GetActiveView()->GetWindowRect(&rt);
    if (rt.PtInRect(pMsg->pt)) return TRUE;
    }
    return CFrameWnd::PreTranslateMessage(pMsg);
    }
      

  6.   

    EnableWindow不是变灰化了吗?我不想灰化,只是鼠标点了没用
      

  7.   

    只是屏蔽鼠标用处不大吧,用键盘不是一样输入?还是Disable掉好些用EnumChildWindows枚举view的所有子窗口,在EnumChildProc回调函数里,根据hwnd把控件disable掉不就可以了?