我有一个主对话框,想在上面创建几个子对话框。
于是我添加了一个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, 子对话框没有显示出来, 欢迎各位来指正一下, 谢谢!
于是我添加了一个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, 子对话框没有显示出来, 欢迎各位来指正一下, 谢谢!
m_dlg.MoveWindow(rect);m_dlg.ShowWindow(SW_SHOW);
还有就是是不是这个FormView上什么都没有所以你看不出来出现没出现
这样的话 会assert掉的 提示m_dlg.m_hWnd是无效的
怎么获得有效的窗口句柄呢?
如果你说的是CFormView
那它的基类明明是CScrollView
跟Dialog没有什么关系
为什么句柄会是null呢?
m_dlg.ShowWindow(SW_SHOW);
如果要用对话框CDialog类,那就考虑用模式对话框等方式。
你是想在界面运行时 自动加载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)