none
在MFC应用程序中显示WPF非模态对话框,Delete键对对话框不起作用 RRS feed

  • 问题

  • 我在MFC应用程序中将Delete键作为热键进行了处理。我用clr interop在点击主窗体某菜单时显示了一个WPF的非模态对话框(用Show()而不是ShowDialog()),之后在这个WPF对话框的某个文本框内,按Delete键不能将文本内容删除,反而是主窗体对Delete键进行了响应。

    有什么方法可以解决这个问题?

    2011年11月1日 9:33

答案

  • 你可以用这种方法去添加快捷键:

    http://www.vckbase.com/document/viewdoc/?id=1788

    然后在处理函数中进行判断,是否WPF窗口已被创建:

    BOOL CMFCwithWPFDlg::PreTranslateMessage(MSG* pMsg) 
    { 
            int iResult; 
            if(m_windowWrapper.IsCreate) 
            { 
                    return CDialogEx::PreTranslateMessage(pMsg); 
            } 
            //针对WM_KEYDOWN消息和WM_SYSKEYDOWN消息,翻译快捷键 
            switch(pMsg->message) 
            { 
            case WM_KEYDOWN: 
            case WM_SYSKEYDOWN: 
                    iResult = TranslateAccelerator(m_hWnd,hAcc,pMsg); 
                    //翻译快捷键成功,返回TRUE 
                    if(iResult) 
                            return TRUE; 
            } 
    
    
            return CDialogEx::PreTranslateMessage(pMsg); 
    }
    
    
    


     

    Best regards,
    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年11月4日 9:39
    版主