首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

Dialog 子窗体调用有关问题,大家帮忙看看该如何做,随便散点儿分

2012-01-21 
Dialog 子窗体调用问题,大家帮忙看看该怎么做,随便散点儿分.情况是这样,我现在已经生成一个了一个dll的dia

Dialog 子窗体调用问题,大家帮忙看看该怎么做,随便散点儿分.
情况是这样,我现在已经生成一个了一个dll的dialog工程,然后在这里面我自己写了一个导出类CReashExport,里面有一个函数为,
void   CReashExport::ShowReashDlg()
{
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
        CReashDlg   dlg;
        dlg.DoModel();
}

在其他模块我只需要:
void   CReashDlgTestDlg::OnOK()  
{
CReashExport   exportDlg;
exportDlg.ShowReashDlg(this);
}
就可以显示这里模块了.

但现在我需要将我的dailog显示在一个多文本的对话框的自窗体中,该怎么改呢?试了不少方法,都有问题.各位帮忙看看.

[解决办法]
在crate函数里标示夫窗体句柄,以后用showwindow函数调用
[解决办法]
crate函数只能创建一次,并且它是在窗口初始化时才调用。
[解决办法]
你意思是在一个对话框中调用另一个对话框并且对话框要嵌套吗

你是不是换个思路呀,那个DLL的导出函数是不是应该重载一个传CRect参数的然后
CReashDlg dlg;
dlg.DoModel();
dlg.MoveWindow(rc);
dlg.ShowWindow(SW_SHOW);

[解决办法]
我在一个工程中对话框嵌套是这么用的

m_pUserDlg = new CDlgUserInfo(this);
m_pUserDlg-> Create(this);

CStatic *pStatic = (CStatic *)GetDlgItem(IDC_RECT);
if(pStatic != NULL && m_pUserDlg != NULL)
{
CRect rc1,rc2;
GetWindowRect(rc2);
pStatic-> GetWindowRect(&rc1);
rc1 -= rc2.TopLeft();
CPoint cPt(20,20);
rc1 -= cPt;
m_pUserDlg-> MoveWindow(rc1);
}

m_pUserDlg-> UpdateData(FALSE);
m_pUserDlg-> ShowWindow(SW_SHOW);

一定要ShowWindow(SW_SHOW);不然嵌套的显示不出来
[解决办法]
另加个对象 多 new 几个这个新对象 每个这样的新对象中调用
m_dlg = new CReashDlg(pParent);
int hr = m_dlg-> CreateEx(IDD_REASHDLG,pParent);
m_dlg-> ShowWindow(SW_SHOW);
这样就没问题了
[解决办法]

void CReashDlgTestDlg::OnOK()
{
CReashExport exportDlg;
exportDlg.ShowReashDlg(this);
}
假如你想只是弹出对话框,就按着上面就行.
假如你想成为一个子窗口,那么首先你应该把你的要绘制的对话矿的属性设为子窗口


[解决办法]
做法:
1、dll中定义一个全局指针变量CReashDlg * m_pMyDlg,在Dll初始化的时候m_pMyDlg = NULL。
2、dll中创建对话框的函数这样做:
HWND CreateDlg(HWND m_pParentDlg)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CWnd * pParentWnd = CWnd::FromHandle(m_pParentDlg);
if(m_pMyDlg)delete m_pMyDlg;

m_pMyDlg = new CReashDlg();
m_pMyDlg-> Create(IDD_REASHDLG,pParentWnd );
return m_pMyDlg-> GetSafeHwnd();
}
3、可以把CreateDlg的返回值保存到主程序的变量中,象其他对话框操作一样。
4、在退出DLL的部分if(m_pMyDlg) delete m_pMyDlg;m_pMyDlg = NULL;

热点排行