我在工程中加入了一个ATL的 Dialog,基类是CAxDialogImpl,现在我只能用DoModald的方法来显示,但我想通过非模态的方式显示,应该怎样做呢?谢谢。

解决方案 »

  1.   

    我就是想知道怎样Create,CMYDlg.Create((HWND)this)
    编译不出错,但运行时出错,请说具体一点,我很菜!谢谢
      

  2.   

    高手可以指教一下吗?我的问题是,在MFC工程中加入ATL的Dialog之后,我想通过非模态的方式调用此对话框。
      

  3.   

    你可以先看一下wtl是如何创建非模态对话框的
      

  4.   

    其实我只是在调用Create函数时出问题,那位高手帮忙指导一下Create函数的用法就可以了,谢谢啊!
      

  5.   

    这个问题可以结了,你去学WindowsSDK,看SDK Dialog部分
      

  6.   

    其实我只是在调用Create函数时出问题,那位高手帮忙指导一下Create函数的用法就可以了,j就这样都不可以吗?
      

  7.   

    Standard Windows programming looks something like this:
    HWND hWnd = ::CreateWindow( "button", "Click me", 
       WS_CHILD, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
       CW_USEDEFAULT, NULL, NULL, hInstance, NULL );
    ::ShowWindow( hWnd, nCmdShow );
    ::UpdateWindow( hWnd );
    The equivalent code using ATL's CWindow class is
    CWindow win;
    win.Create( "button", NULL, CWindow::rcDefault, "Click me",
       WS_CHILD );
    win.ShowWindow( nCmdShow );
    win.UpdateWindow();
      

  8.   

    谢谢你啊!但我的对话框不是CWindow类,而是CAxDialogImpl ,他的Create函数应该怎样获得窗口的hWnd呢?
      

  9.   

    可以给对话框添加一个成员函数,在成员函数中写入下面代码。 if ( !::IsWindow(m_hWnd) ) 
    Create( ::GetActiveWindow() );
    ShowWindow(SW_SHOW);调用此成员函数,即可创建无模式对话框。
      

  10.   

    _Module.AddCreateWndData(&m_thunk.cd, (CDialogImplBase*)this);
    HWND hWnd = ::CreateDialogParam(g_hRes,
    MAKEINTRESOURCE(CAccountDlg::IDD),
    hWndParent,
    (DLGPROC)CMyDlg::StartDialogProc,
    NULL);
      

  11.   

    CMYDlg.Create((HWND)this->m_hWnd);你的用法好像是对的。你看下其它的地方是否有错,引起这里错了。
    在看下,对话框应该不能是Client.
      

  12.   

    SDK中的非模态对话窗体用CreateDialog来创建而不是Create,Create是CWindowImple/CDialogImple里的