我有一个主对话框,想在上面创建几个子对话框。
于是我添加了一个FormView类型的对话框,类型为Child,并且为它生成了一个类CFormView1.
在主对话框类中声明CFormView1 m_dlg。
在主对话框初始化函数中添加代码:
CRect rect;
GetWindowRect(&rect);
::MoveWindow(m_dlg.m_hWnd, rect.left-20, rect.top-20, (rect.right-rect.left)-40, (rect.bottom-rect.top)-40, TRUE);
BOOL bVisible = ::ShowWindow(m_dlg.m_hWnd, SW_SHOW);跟了一下bVisible是false, 子对话框没有显示出来, 欢迎各位来指正一下, 谢谢!

解决方案 »

  1.   

    直接用
    m_dlg.MoveWindow(rect);m_dlg.ShowWindow(SW_SHOW);
      

  2.   

    直接重CDialog继承,添加一个CDialog对话框作为子窗体
      

  3.   

    FormView是对话框么?
    还有就是是不是这个FormView上什么都没有所以你看不出来出现没出现
      

  4.   

    FormView是对话框的一种类型把? 只是没有标题栏
      

  5.   


    这样的话 会assert掉的 提示m_dlg.m_hWnd是无效的
      

  6.   

    问题就是在m_dlg.m_hWnd是无效的 0x000000 
    怎么获得有效的窗口句柄呢?
      

  7.   

    CFormView的基类是CScrollView,CScrollView派生CView
      

  8.   

    谁告诉的?
    如果你说的是CFormView
    那它的基类明明是CScrollView
    跟Dialog没有什么关系
      

  9.   

    CFormView是继承的CScrollView, 我自己用向导生成类的时候 选择的从CDialog继承。我又新建了一个对话框  还是同样的问题   获取不到子对话框的句柄  自对话框的句柄是0x00000000
    为什么句柄会是null呢?
      

  10.   

    m_dlg.MoveWindow(rect);
    m_dlg.ShowWindow(SW_SHOW);
      

  11.   

    如果想要用CFormView类,可以考虑视类的切换的方法;
    如果要用对话框CDialog类,那就考虑用模式对话框等方式。
      

  12.   

    不要创建CFormView1类 最好创建CFormDlg类
    你是想在界面运行时 自动加载CFormView1类那就在你程序的App类 InitInstance()中
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(程序视图类),RUNTIME_CLASS(CFormView1));然后再视图类view OnDraw()中
    m_dlg.MoveWindow(rect,true);  //获得对话框区域
    m_dlg.Create(IDD_,this); //在界面上显示对话框 以上为非模态创建方法
    m_dlg.ShowWindow(SW_SHOW)
      

  13.   

    BOOL bVisible = ::ShowWindow(m_dlg.m_hWnd, SW_SHOW);这个不应该失败的,可能是m_dlg.m_hWnd无效,即窗口还没有创建。