在无模式对话框中,用什么代替模式对话框中的“if ( dlg.DoModal() == IDOK )”语句?! 在无模式对话框中,用什么代替模式对话框中的“if ( dlg.DoModal() == IDOK )”语句?!模式对话框中语句:if ( dlg.DoModal() == IDOK ) { do something; }无模式对话框中用什么来替代呢?!请前辈赐教!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 无模式create之后会继续之后的程序...所以没有办法实现模式对话框那样的中断 这样写.....while(dlg.GetSafeHwnd()){ ; //nothing to do}.... 你可以在对话框中的wm_close中给主窗口发一个自定义消息. 在Dlg中的IDOK()中实现,用传给dlg的pView run function of View. 回复人: ygzdev(TheEcho) ( ) 信誉:99 2004-05-09 15:36:00 得分:0 这样写.....while(dlg.GetSafeHwnd()){ ; //nothing to do}.... ==================这样的话,消息循环处于停止状态,所有的消息得不到处理.程序只能是当掉. 在View中,if(m_pdlg->GetSafeHwnd()==0){ m_pdlg->Create(); //m_pdlg 为view 里的一个指针,指向无模式对话框} 在对话框里,重载构造函数和Create函数CSettingDlg::CSettingDlg(CView *pView){ m_pView = pView; //m_pView 为Dlg所属的View 指针}BOOL CSettingDlg::Create(){ return CDialog::Create(CSettingDlg::IDD); }然后在BOOL SettingDlg::OnInitDialog() { CDialog::OnInitDialog(); return true;}里设定对话框上东西的属性至于在对话框里的操作可以用自定义消息,发送到View 里处理如void CSettingDlg::OnCancel() { // TODO: Add extra cleanup here if(m_pView!=NULL){ m_pView->PostMessage(WM_GOODBYE,0,0); } //CDialog::OnCancel();}void CAxisSettingDlg::OnOK() { // TODO: Add extra validation here if(m_pView!=NULL){ //你要操作的代码 UpdateData(TRUE); m_pView->PostMessage(WM_GOODBYE,0,0); } //CDialog::OnOK();}再在OnGoodBye的处理函数中用m_pdlg->DestroyWindow()函数destroy掉对话框 假设非模式对话框类名为CTwoDlg ID号为IDD_TWO_DIALOG在主窗口头文件中类的定义中加入 CTwoDlg* m_pTwoDlg;别忘在最上边加入#include "TwoDlg.h"然后用{ m_pTwoDlg=new CTwoDlg(this); m_pTwoDlg->Create(IDD_TWO_DIALOG,this); }代替if ( dlg.DoModal() == IDOK ) { do something; } P2P 高手,接错过 RakNet NatPunchthrough 的,如何连接客户度,紧急求救 关于进程、线程的小问题 利用ADO中的RecordsetPtr的Save方法把记录集保存为XML文件,可兄弟元素之间的排列顺序可能丢失! 哪位知道怎么用wininet实现ftp的续传功能(可加分或给现金)? 变量 菜鸟的MFC俄罗斯方块 请高手快帮忙!这段程序有什么问题?? 如何同时打开多个文件 我的MSDN总非法操作,怎么办? 如何从com里传入传出unsigned char *值? 交流传奇3游戏代码 不知道是什么原因,请看看!
; //nothing to do
}....
这样写.....while(dlg.GetSafeHwnd()){
; //nothing to do
}....
==================
这样的话,消息循环处于停止状态,所有的消息得不到处理.程序只能是当掉.
if(m_pdlg->GetSafeHwnd()==0){
m_pdlg->Create(); //m_pdlg 为view 里的一个指针,指向无模式对话框
} 在对话框里,重载构造函数和Create函数
CSettingDlg::CSettingDlg(CView *pView)
{
m_pView = pView; //m_pView 为Dlg所属的View 指针
}BOOL CSettingDlg::Create()
{
return CDialog::Create(CSettingDlg::IDD);
}然后在BOOL SettingDlg::OnInitDialog()
{
CDialog::OnInitDialog();
return true;
}
里设定对话框上东西的属性至于在对话框里的操作可以用自定义消息,发送到View 里处理
如void CSettingDlg::OnCancel()
{
// TODO: Add extra cleanup here
if(m_pView!=NULL){
m_pView->PostMessage(WM_GOODBYE,0,0);
}
//CDialog::OnCancel();
}void CAxisSettingDlg::OnOK()
{
// TODO: Add extra validation here
if(m_pView!=NULL){
//你要操作的代码
UpdateData(TRUE);
m_pView->PostMessage(WM_GOODBYE,0,0);
}
//CDialog::OnOK();
}
再在OnGoodBye的处理函数中用m_pdlg->DestroyWindow()函数destroy掉对话框
ID号为IDD_TWO_DIALOG
在主窗口头文件中类的定义中加入
CTwoDlg* m_pTwoDlg;
别忘在最上边加入#include "TwoDlg.h"然后用{ m_pTwoDlg=new CTwoDlg(this);
m_pTwoDlg->Create(IDD_TWO_DIALOG,this);
}代替if ( dlg.DoModal() == IDOK )
{
do something;
}