cmfcpropertygridctrl 控件,在VC 2010对话框中使用。修改完某项属性,鼠标焦点转移后,会触发OnPropertyChanged()。我想:焦点转移后,能否自动回到修改项呢?如何实现?用Setcursel()没效果。

解决方案 »

  1.   

    CMFCPropertyGridCtrl::SetCurSel()
    这个不行吗?
      

  2.   

    SetCurSel、SetFocus都没效果啊。
      

  3.   

    我是在消息里处理的:
    LRESULT CVC_MFC_DemoDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
    // TODO: 在此添加专用代码和/或调用基类
    if (message == AFX_WM_PROPERTY_CHANGED)
    {
    AfxMessageBox(_T("AFX_WM_PROPERTY_CHANGED message box.\n")); CMFCPropertyGridProperty* pProp = (CMFCPropertyGridProperty*)lParam; myProtyGrid.SetCurSel(pProp, FALSE);
    myProtyGrid.SetFocus();
    //pProp->IsSelected(); } return CDialogEx::WindowProc(message, wParam, lParam);
    }
      

  4.   

    myProtyGrid.SetCurSel(pProp, FALSE);
    myProtyGrid.SetFocus();
    后面加个return TRUE;试试
      

  5.   

    做个标志位
    把myProtyGrid.SetCurSel(pProp, FALSE);
    myProtyGrid.SetFocus();
    拿到return CDialogEx::WindowProc(message, wParam, lParam);
    后面调用试试看