我把关于对话框设为child,在一个菜单里面打开隐藏的非模态对话框。
在程序中查找它的句柄:
HWND hwnd1 = ::FindWindowEx(this->m_hWnd,NULL,NULL,_T("{D66E1B6E-FFCD-4bef-B368-18B8A26838D3}"));我把OnDsSdsd()放到OnInitDialog里面,找不到句柄,我用sp++找遍了也没找到,但可以肯定的是非模态对话框是存在的。
如果手动单击菜单事件,就可以找到。不知道是什么原因。
void CTestDlg::OnDsSdsd()
{
// TODO: 在此添加命令处理程序代码
CAboutDlg *test;
test = new CAboutDlg;
test->Create(IDD_ABOUTBOX,NULL);
test->MoveWindow(0,0,0,0,TRUE);
test->ShowWindow(SW_HIDE);
}

解决方案 »

  1.   

    不设为child需要切换焦点
    不想体现焦点变换的过程
      

  2.   

    请问你到底想实现什么功能?不是子控件,为什么要设置为child???
      

  3.   

    我要在程序开始时同时打开一个隐藏的非模态对话框,因为焦点的问题,所以把它设为了child。
    现在的问题是这样设置了之后,FindWindowEx找不到打开的那个非模态对话框的句柄。
      

  4.   

        test->MoveWindow(0,0,0,0,TRUE);
        test->ShowWindow(SW_HIDE);你这样设置之后, 使用spy++能找到它不?
      

  5.   

    那spy++看到的窗口标题 是 {D66E1B6E-FFCD-4bef-B368-18B8A26838D3} ? 
    spy++看倒的,它确实是this->m_hWnd的子窗口?