CChildDlg* m_pChildDlg;BOOL CMainDlg::OnInitDialog()
{
CDialog::OnInitDialog(); m_pChildDlg = new CDlgPop;
m_pChildDlg->Create(IDD_DIALOG1, this);
m_pChildDlg->ShowWindow(SW_SHOW);
m_pChildDlg->GetDlgItem(IDC_EDIT1)->SetFocus();//想让子窗口具有输入光标
return TRUE; 
 }
我的目的是想让子窗口覆盖父窗口的一部分,而且让子窗口具有输入光标,如何实现?顺便问一下:在父窗口和子窗口中都有一些控件每个控件都有一个快捷键,当界面出现时用户看到的是一个整体,但按快捷键出现问题当输入光标在父窗口时只能父窗口接收到快捷键,反之只能子窗口接到快捷键,有没有好的方法解决?

解决方案 »

  1.   

    你的做法不可以是因为系统在处理完 WM_INITDIALOG 消息后会强制把刚刚创建的对话框激活。你可以在 return 之前加入 PostMessage(WM_APP); 然后重载 WindowProc(),在其中添加以下代码即可:
    if(message == WM_APP)
    {
    // 这里都是你的代码:
    m_pChildDlg = new CDlgPop;
    m_pChildDlg->Create(IDD_DIALOG1, this);
    m_pChildDlg->ShowWindow(SW_SHOW);
    m_pChildDlg->GetDlgItem(IDC_EDIT1)->SetFocus();//想让子窗口具有输入光标
    }
      

  2.   

    函数OnInitDialog()
    return FALSE;
    看看
      

  3.   

    在CDlgPop的OnInitDialog()里面做试试
      

  4.   

    函数OnInitDialog()
    return FALSE;
    看看CDlgPop的OnInitDialog()里面做试试这两种方法试过不好使。
      

  5.   

    呵呵,重新看了一下,这个得在你的CDlgPop类的OnInitDialog()中return FALSE,应该是没有问题的,以前类似的问题都是这么解决的,再试一试看
      

  6.   

    呵呵,重新看了一下,这个得在你的CDlgPop类的OnInitDialog()中return FALSE,应该是没有问题的,以前类似的问题都是这么解决的,再试一试看
    --------------------------------
    BOOL CMainDlg::OnInitDialog()
    {
    CDialog::OnInitDialog(); CDlgPop DlgPop;
    DlgPop.DoModal();
    return TRUE; 
     }这样你说的方法就可以。
      

  7.   

    I 服了 U!最终的代码类似于(假定你知道如何使用 ClassWizard 重载 WindowProc 函数):
    BOOL CMainDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    PostMessage(WM_APP);
    return TRUE; 
     }LRESULT CDlgDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    if(message == WM_APP)
    {
    m_pChildDlg = new CDlgPop;
    m_pChildDlg->Create(IDD_DIALOG1, this);
    m_pChildDlg->ShowWindow(SW_SHOW);
    m_pChildDlg->GetDlgItem(IDC_EDIT1)->SetFocus();//想让子窗口具有输入光标
    return 0;
    } return CDialog::WindowProc(message, wParam, lParam);
    }
      

  8.   

    不好意思,CDlgDlg 是我的测试工程中的类名,你的也应该为 CMainDlg。
      

  9.   

    谢谢 dandycheung(珠穆朗玛) :
    我把子窗口的属性改为child 就可以了。以前是popup.