VC SDI 中嵌入对话框

来源:百度知道 编辑:UC知道 时间:2024/04/28 08:11:52
写了一段基于SDI的程序,里面有几个菜单,分别弹出几个模式对话框.

但我现在想把对话框放到SDI里面,可以在里面自由移动,但又出不了SDI的视图区,有点像网业那样.

看过一些方法用CFromView 作为SDI 的VIEW,不知道那个能不能使里面的对话框拖动.

更重要的是不想重新做一次,是否有别的办法实现,而只要在原来基础上改一改?
试过了,但不行,对话框没出现
if(::IsWindow(querydlg.m_hWnd))
{
AfxMessageBox("建立");
querydlg.ShowWindow(SW_SHOW);
}
else
{
AfxMessageBox("没建立"); // 每次点菜单都会到这里
querydlg.Create(IDD_MAN_QUERYCARD,GetActiveView());
querydlg.ShowWindow(SW_SHOW);
}

加你的对话框头文件
class CMainFrame : public CFrameWnd
{

protected: // create from serialization only
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)

// Attributes
public:
CDlg querydlg;//注意querydlg这个变量一定要是CMainFrame的成员变量而不是局部变量

void CMainFrame::OnMenuitem32771()
{
// TODO: Add your command handler code here
if(::IsWindow(querydlg.m_hWnd))
{
querydlg.ShowWindow(SW_SHOW);
}
if(!::IsWindow(querydlg.m_hWnd))
{
querydlg.Create(IDD_DIALOG1,GetActiveView());
querydlg.ShowWindow(SW_SHOW);
}

}

你是下面这样写的吧
void CMainFrame::OnMenuitem32771()
{
// TODO: Add your command handler code here
CDlg querydlg;//你就是错在这里
if(::IsWindow(querydlg.m_hWnd))
{
querydlg.ShowWindow(SW_SHOW);
}
if(!::IsWindow(querydlg.m_hWnd))
{
AfxMessageBox("没建立");
querydlg.Create(IDD_DIALOG1,GetActiveView());