VC++如何制作基于对话框应用程序的启动界面

fxq1029 2010-11-19 11:32:48
各位好,我现在在用VC++做一个串口通讯软件。基本功能都已经完成了。。我的主程序窗口是一个对话框,即我建立的是一个基于对话框的应用程序,现在我想为这个程序设置一个启动界面,该启动界面是用来打开串口的,现在的问题是我一运行程序就跳出我原来的主对话框,而不是启动界面, 该怎么设置啊?
...全文
545 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianuMan 2010-11-20
  • 打赏
  • 举报
回复

// jianu.cpp : 定义应用程序的类行为。
//

#include "stdafx.h"
#include "jianu.h"
#include "jianuDlg.h"
#include "ShowDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CjianuApp

BEGIN_MESSAGE_MAP(CjianuApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()


// CjianuApp 构造

CjianuApp::CjianuApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}


// 唯一的一个 CjianuApp 对象

CjianuApp theApp;


// CjianuApp 初始化

BOOL CjianuApp::InitInstance()
{
CShowDialog showDlg;
showDlg.DoModal();

// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

CWinApp::InitInstance();

AfxEnableControlContainer();

// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

CjianuDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此处放置处理何时用“确定”来关闭
// 对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用“取消”来关闭
// 对话框的代码
}

// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}


CShowDialog 是你要显示的启动界面
CjianuDlg 是主窗体
fxq1029 2010-11-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xianglitian 的回复:]
没理由啊
CDlg4的实现你怎么写的
构造函数改过么?
[/Quote]
啥也没改,就是插入一个对话框,为它建一个类,然后就在主对话框App类的InitInstance函数中包含新建类的头文件,并加上CDlg4 dlg4;dlg4.DoModal();
可不可以举个简单的例子呢, 如:新建一个基于对话框的应用程序,在插入一个对话框作为启动界面?
实在不知道怎么办了
allenbein 2010-11-19
  • 打赏
  • 举报
回复
你可以在你主对话框打开之前启动你的启动界面
zjfhgdx 2010-11-19
  • 打赏
  • 举报
回复
在主对话框中的初始化函数里调用启动对话框的domodal();
Eleven 2010-11-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 fxq1029 的回复:]
各位好,我现在在用VC++做一个串口通讯软件。基本功能都已经完成了。。我的主程序窗口是一个对话框,即我建立的是一个基于对话框的应用程序,现在我想为这个程序设置一个启动界面,该启动界面是用来打开串口的,现在的问题是我一运行程序就跳出我原来的主对话框,而不是启动界面, 该怎么设置啊?
[/Quote]
App类的InitInstance函数中去做
colorfulcode 2010-11-19
  • 打赏
  • 举报
回复
更改APP类的初始化函数,让他先显示“启动界面”,然后才是主界面
acaiacc 2010-11-19
  • 打赏
  • 举报
回复
splash window
向立天 2010-11-19
  • 打赏
  • 举报
回复
没理由啊
CDlg4的实现你怎么写的
构造函数改过么?
fxq1029 2010-11-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xianglitian 的回复:]
int nResponse = dlg.DoModal();
在这句之前
[/Quote]
我加了
CDlg4 dlg4;
dlg4.DoModal();
Compile没错,Build报错说,error LNK 2001:unresolved external symbol "public: _thiscall CDlg4:CDlg4(class CWnd *)"(??0CDlg4@@@)
执行link时出错
怎么办啊
向立天 2010-11-19
  • 打赏
  • 举报
回复
int nResponse = dlg.DoModal();
在这句之前
fxq1029 2010-11-19
  • 打赏
  • 举报
回复
一下是App类的InitInstance函数,在什么位置加呢?我创建的启动界面是IDD_Dialog4,类为CDlg4,

BOOL CCommApp::InitInstance()
{
AfxEnableControlContainer();


#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif

CCommDlg dlg;
m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();
if(nResponse == IDOK)
{
//TODO:

}
else if(nResponse == IDCANCEL)
{
//TODO:
}
return FALSE;
}
fxq1029 2010-11-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lj2lxm 的回复:]
App类的InitInstance函数中,把创建你的启动界面的代码放在弹出主对话框前面
[/Quote]
一下是App类的InitInstance函数,在什么位置加呢?我创建的启动界面是IDD_Dialog4,类为CDlg4,

BOOL CCommApp::InitInstance()
{
AfxEnableControlContainer();


#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif

CCommDlg dlg;
m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();
if(nResponse == IDOK)
{
//TODO:

}
else if(nResponse == IDCANCEL)
{
//TODO:
}
return FALSE;
}
nwao7890 2010-11-19
  • 打赏
  • 举报
回复
Insert a splash screen dialog
lj2lxm 2010-11-19
  • 打赏
  • 举报
回复
App类的InitInstance函数中,把创建你的启动界面的代码放在弹出主对话框前面
向立天 2010-11-19
  • 打赏
  • 举报
回复
你的启动界面也是一个对话框吧
在InitInstance里在调用主对话框之前调用启动界面
或者在你的主对话框的OnInitDialog里调用

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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