菜鸟提问:怎么样建立无模式对话框? Cdialog kkk;kkk.Create(...) 就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 补充:相对于模式,直接kkk.DoModel()无模式Create(...)后kkk.OnOk()等操作。 你可以重载CDialog的Create函数,随便你给不给参数:比如:CMyDialog::Create(){ ………… //可以在这里作一些必要的工作; return CDialog::Create(CMessageDlg::IDD);}如果你要加几个参数也可以。 加上:kkk.ShowWindow(SW_HIDE);忘了不知道要不要,请指正。 更正:kkk.ShowWindow(SW_SHOW);忘了不知道要不要,请指正。 TO VCMFC: 要的 谢谢大家,尤其是lhxx,昨晚我都睡了,突然呼机响,原来还有人在回答我的问题?呵,我的问题太简单了,让大家见笑了,和先试一下。 我做了,但一闪就没影儿了,怎么会事,我是这样做的:先插入一个对话框,(其忏悔未作任何改动)然后在其中加入几个控件,为对话框加入了一个类,这个类未作任何改动,在打开时这样,CDLG dlg;dlg.Create(IDC_DIALOG1,this);dlg.ShowWindow(SW_SHOW); 先建立模式对话框。下面是我的程序中的部分代码修改后的 CDialog(CTagAdjust::IDD, pParent)函数:CTagAdjust::CTagAdjust(CWnd* pParent /*=NULL*/)// : CDialog(CTagAdjust::IDD, pParent)。{ ...}重载Create函数:BOOL CTagAdjust::Create() { return CDialog::Create(CTagAdjust::IDD);}用此函数调用对话框。调用代码如下: m_ptagadjustdlg=new CTagAdjust; if(m_ptagadjustdlg->GetSafeHwnd()==NULL) m_ptagadjustdlg->Create(); m_ptagadjustdlg->ShowWindow(SW_SHOW); 简单一点说吧, 就重载CModelessDlg::Create(..)或者根本就不用重载,加一个成员函数CModelessDlg::ShowDlg(){ CDialog::Create(IDD_MODELESS); // IDD_MODELESS是你建立的对话框资源名}然后...CModelessdlg::HideDlg(){ CDialog::DestroyWindow();}就可以了, 而且就算对话框不在显示状态,用DestroyWindow()也没问题.搞定以后,就这样用:CModelessDlg dlg;dlg.ShowDlg();...用完以后...dlg.HideDlg();即可, 很方便吧? 简单一点说吧, 就重载CModelessDlg::Create(..)或者根本就不用重载,加一个成员函数CModelessDlg::ShowDlg(){ CDialog::Create(IDD_MODELESS); // IDD_MODELESS是你建立的对话框资源名}然后...CModelessdlg::HideDlg(){ CDialog::DestroyWindow();}就可以了, 而且就算对话框不在显示状态,用DestroyWindow()也没问题.搞定以后,就这样用:CModelessDlg dlg;dlg.ShowDlg();...用完以后...dlg.HideDlg();即可, 很方便吧? 创建一个无模式对话框之后,为什么在做一些文件拷贝之类的,一旦最小话对话框之后,对话框就不能刷新了,即使我SendMessage()让他Invalidate(); 为什么我用时定义就会出错:dlgTest dlg;编译:error C2065: 'dlgTest' : undeclared identifier cn2000,最后别忘了加入消息响应函数:void CYourDlg::PostNcDestroy() { //删除CYourDlg对象本身 delete this;}————————————————————————————————misterzhao,你的错误可能在于没有将dlgTest的头文件包含进来。 乞讨可用分800 新手:能用VC对EXCEL进行操作,可以只读取第一列数据么?能不能详细指点。我查了不少数,很少有这方面的。谢谢了 局域网扫描程序的问题(怎样获取文件信息) 如何用DrawDib显示BMP图象 如何给BHO加上对XP theme的支持 请教一下,更改了文件关联,怎样通知系统更新? 求教一个简单的问题 超菜问题? C++菜鸟级交流群,来的加.... VC中ActiveX控件的属性无字符型,如何将BSTR转化为Char*,我已转化了英文,中文怎么办呢? 怎样将整形、字节型转换成字符串?? 怎样获得视图大小?
相对于模式,直接kkk.DoModel()
无模式Create(...)后
kkk.OnOk()等操作。
比如:
CMyDialog::Create()
{
…………
//可以在这里作一些必要的工作;
return CDialog::Create(CMessageDlg::IDD);
}
如果你要加几个参数也可以。
要的
CDLG dlg;
dlg.Create(IDC_DIALOG1,this);
dlg.ShowWindow(SW_SHOW);
修改后的 CDialog(CTagAdjust::IDD, pParent)函数:
CTagAdjust::CTagAdjust(CWnd* pParent /*=NULL*/)
// : CDialog(CTagAdjust::IDD, pParent)。
{
...
}重载Create函数:BOOL CTagAdjust::Create()
{
return CDialog::Create(CTagAdjust::IDD);
}用此函数调用对话框。
调用代码如下:
m_ptagadjustdlg=new CTagAdjust;
if(m_ptagadjustdlg->GetSafeHwnd()==NULL)
m_ptagadjustdlg->Create();
m_ptagadjustdlg->ShowWindow(SW_SHOW);
CModelessDlg::ShowDlg()
{
CDialog::Create(IDD_MODELESS); // IDD_MODELESS是你建立的对话框资源名
}
然后...
CModelessdlg::HideDlg()
{
CDialog::DestroyWindow();
}
就可以了, 而且就算对话框不在显示状态,用DestroyWindow()也没问题.搞定以后,就这样用:
CModelessDlg dlg;
dlg.ShowDlg();
...
用完以后...
dlg.HideDlg();
即可, 很方便吧?
CModelessDlg::ShowDlg()
{
CDialog::Create(IDD_MODELESS); // IDD_MODELESS是你建立的对话框资源名
}
然后...
CModelessdlg::HideDlg()
{
CDialog::DestroyWindow();
}
就可以了, 而且就算对话框不在显示状态,用DestroyWindow()也没问题.搞定以后,就这样用:
CModelessDlg dlg;
dlg.ShowDlg();
...
用完以后...
dlg.HideDlg();
即可, 很方便吧?
对话框就不能刷新了,即使我SendMessage()让他Invalidate();
dlgTest dlg;
编译:error C2065: 'dlgTest' : undeclared identifier
void CYourDlg::PostNcDestroy()
{
//删除CYourDlg对象本身
delete this;
}
————————————————————————————————
misterzhao,你的错误可能在于没有将dlgTest的头文件包含进来。