如何实现程序先启动Dialog再启动SDI?

jackfeige 2008-10-21 07:00:29
我想在SDI启动前先显示一个Dialog让用户先选择一些信息,确定后Dialog消失再显示SDI
请高手指教,
在线等...
...全文
137 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zen星尘 2012-08-09
  • 打赏
  • 举报
回复
学习了,不错
vkjsimde 2008-10-25
  • 打赏
  • 举报
回复
在CXxxApp::InitInstance中,先显示对话框,后构造CSingleDocTemplate类对象,把
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CXxxDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CXxxView));
里面的参数换掉就可以改变SDI界面了。


可行
schlafenhamster 2008-10-25
  • 打赏
  • 举报
回复
给一个在对话框中产生状态的例子:
//在.h中:CStatusBar m_wndStatusBar;
//在.cpp中:
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
//在OnInitDialog()中:
...
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
AfxMessageBox("Failed to create status bar\n");
return -1; // fail to create
}
CRect rc;
GetClientRect(&rc);
m_wndStatusBar.MoveWindow(0,rc.bottom-40,rc.Width(),22,TRUE);
...
e01620230 2008-10-22
  • 打赏
  • 举报
回复
设置一个全局变量 int type=0;
用对话框选择 样子 0,1,2
然后在
Switch(type)
{
case 0:
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CXxxDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CXxxView));
break;
case 1:
....
break;
case 2:
....
break;
}
scq2099yt 2008-10-22
  • 打赏
  • 举报
回复
在CXxxApp::InitInstance中,先显示对话框,后构造CSingleDocTemplate类对象,把
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CXxxDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CXxxView));
里面的参数换掉就可以改变SDI界面了。
sanshao27 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cnzdgs 的回复:]
在CXxxApp::InitInstance中,先显示对话框,后构造CSingleDocTemplate类对象,把
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CXxxDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CXxxView));
里面的参数换掉就可以改变SDI界面了。
[/Quote]

可行
HongQiaoXie 2008-10-22
  • 打赏
  • 举报
回复

定义全局变量
int m_nTest

然后在CyourDlg对话框里,点击不同的按钮后赋予相应的值,然后在判断:
//C++ codeCYourApp::InitInstance()
{
// 你的对话框放在CSingleDocTemplate* pDocTemplate之前即可:
CYourDlg dlg;
if( dlg.DoModal() != IDOK )
{
// 退出
return FALSE;
}
if(m_nTest==1) //可以case
{
CSingleDocTemplate* pDocTemplate; // 注意这句话
}
else(m_nTest==2)
{
.....
}



....

return TRUE;
}
bluevox3000 2008-10-22
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20081021/15/8f838d02-32bc-4eb9-89ce-6b5401deb1d3.html
跟我的帖子很类似啊。
一块解决吧,各位大虾
cnzdgs 2008-10-21
  • 打赏
  • 举报
回复
在CXxxApp::InitInstance中,先显示对话框,后构造CSingleDocTemplate类对象,把
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CXxxDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CXxxView));
里面的参数换掉就可以改变SDI界面了。
jackfeige 2008-10-21
  • 打赏
  • 举报
回复
对话框上没有默认的状态栏,我现在需要SDI默认的状态栏才去创建SDI的,不然我就直接创建对话框了
show_jfx 2008-10-21
  • 打赏
  • 举报
回复
做三个无模式对话界面对话框,在CXXXView视图中AfxGetApp()->获取你DLG选择的结果,根据结果,Create相应的界面对话框
jackfeige 2008-10-21
  • 打赏
  • 举报
回复
有没有人帮我解决这个问题啊~~

我在Dlg中有3个按扭,我实现按不同的按扭显示不同的SDI界面,本来我想用3个Dlg来替代SDI的,但SDI的状态栏模仿不来,所以只好用3个SDI代替3个Dlg,但又出现了怎么创建3个不同的SDI问题!又郁闷了~~


谁来帮帮我啊!!!!!

或者帮我解决如何在Dlg中创建和SDI功能和样式一样的状态栏 也可以!!!

jackfeige 2008-10-21
  • 打赏
  • 举报
回复
我只前也发过一个贴就是 如何在DLG中创建和SDI功能样式相同的状态栏,但等了1天都没人解答~~~
harry330 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vcPlayer 的回复:]
C/C++ codeCYourApp::InitInstance()
{
// 你的对话框放在CSingleDocTemplate* pDocTemplate之前即可:
CYourDlg dlg;
if( dlg.DoModal() != IDOK )
{
// 退出
return FALSE;
}

CSingleDocTemplate* pDocTemplate; // 注意这句话
....

return TRUE;
}
[/Quote]
这个OK
jackfeige 2008-10-21
  • 打赏
  • 举报
回复
恩可以是可以了但我还有一个问题就是,我在Dlg中有3个按扭,我实现按不同的按扭显示不同的SDI界面,本来我想用3个Dlg来替代SDI的,但Dlg的状态栏模仿不来,所以只好用SDI代替,但又出现了这个问题!又郁闷了~~
yhwxxx 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vcPlayer 的回复:]
C/C++ codeCYourApp::InitInstance()
{
// 你的对话框放在CSingleDocTemplate* pDocTemplate之前即可:
CYourDlg dlg;
if( dlg.DoModal() != IDOK )
{
// 退出
return FALSE;
}

CSingleDocTemplate* pDocTemplate; // 注意这句话
....

return TRUE;
}
[/Quote]

来晚了
Hiiishe 2008-10-21
  • 打赏
  • 举报
回复
// CMainApp 初始化

BOOL CMainApp::InitInstance()
{

这里写。
vcPlayer 2008-10-21
  • 打赏
  • 举报
回复
CYourApp::InitInstance()
{
// 你的对话框放在CSingleDocTemplate* pDocTemplate之前即可:
CYourDlg dlg;
if( dlg.DoModal() != IDOK )
{
// 退出
return FALSE;
}

CSingleDocTemplate* pDocTemplate; // 注意这句话
....

return TRUE;
}
dirdirdir3 2008-10-21
  • 打赏
  • 举报
回复
在app里面,创建mainframewnd之前的地方可以启动dialog

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧