我在MainFrame的菜单手工添加一个调用,并消息映射调用一个对话框,正常。
我自己在MainFrame创建了个CTreeCtrl,然后HitTest,然后右键产生一个菜单,菜单也是消息映射(也在CMainFrame中)调用同一个对话框,但该对话框是focus的,但无法点击对话框中任何控件,包括OK,CANCEL按钮;但我只要Tab+CTRl切换一下,该对话框就一切正常了;或我点一下TreeCtrl也可正常;或我在调用对话框之前AfxMessageBox()也可正常;从没遇到过,很奇怪。
另外肯定不是对话框的问题,因为我试着换对话框了,一样不知何故呀?

解决方案 »

  1.   

    vcmute(横秋) ;谢谢您的关注 ,其实也谈不上流程;就是做了一个程序,界面类似VC,左边是个树状控件的窗口,右边是View;现在我想点中树状控件的item,然后弹出右键菜单,选菜单项"参数设置",就能弹出一个对话框进行设置;目前对话框都出来了,就是没法输入(包括按钮,拖拽等操作),但我CTRL+TAB或messagebox,或点一下树状控件.很奇怪呀,要说消息,还能有什么消息呢?
    SetFocus,SetActiveWindow我都试过了,没用呀!
    个人感觉觉得是因为从树状控件弹右键菜单,再映射消息造成的特殊性...
      

  2.   

    在调用对话框之前用sleep你的对话框是模式的还是非模式
      

  3.   

    To laiyiling(【猎手—抢分】) ;
    Sleep()没有用;
    是模式对话框
      

  4.   

    最好把你“点中树状控件的item,然后弹出右键菜单,选菜单项"参数设置",就能弹出一个对话框进行设置;”这些代码贴出来。
      

  5.   

    to  Mackz(在相互:我现在的解决方法:
    this->ShowWindow(SW_MINIMIZE);
    this->ShowWindow(SW_MAXIMIZE);但程序会闪动一下....程序代码:
    void CClassTreeWnd::OnRButtonDown(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    UINT Flags;
    HTREEITEM hTreeItem = HitTest(point,&Flags);
    if(hTreeItem == NULL)
       return; DWORD dwData = GetItemData(hTreeItem);
    if(dwData%1000 == 0)
    {
    BCMenu* pPopup = (BCMenu *)menu.GetSubMenu(0);
    ASSERT(pPopup != NULL);

    pPopup->SetBackColor(RGB(92,174,196));
    pPopup->SetSeparateColor(RGB(253,104,83));

    CWnd* pWndPopupOwner = this;
    while (pWndPopupOwner->GetStyle() & WS_CHILD)
    pWndPopupOwner = pWndPopupOwner->GetParent();

    pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ptRMenuPoint.x, ptRMenuPoint.y,
    pWndPopupOwner);

    pPopup->DestroyMenu();
    }
    CTreeCtrl::OnRButtonDown(nFlags, point);
    }
    ON_COMMAND(ID_TRANS_PROPERTYSET, OnTransPropertyset)
    void CMainFrame::OnTransPropertyset() 
    {
    this->ShowWindow(SW_MINIMIZE);//我新加的
    this->ShowWindow(SW_MAXIMIZE);//我新加的
    CParaTransSetDlg dlg();
    dlg.DoModal();
    }