各位好,我现在在用VC++做一个串口通讯软件。基本功能都已经完成了。。我的主程序窗口是一个对话框,即我建立的是一个基于对话框的应用程序,现在我想为这个程序设置一个启动界面,该启动界面是用来打开串口的,现在的问题是我一运行程序就跳出我原来的主对话框,而不是启动界面, 该怎么设置啊?

解决方案 »

  1.   

    更改APP类的初始化函数,让他先显示“启动界面”,然后才是主界面
      

  2.   

    在主对话框中的初始化函数里调用启动对话框的domodal();
      

  3.   

    你的启动界面也是一个对话框吧
    在InitInstance里在调用主对话框之前调用启动界面
    或者在你的主对话框的OnInitDialog里调用
      

  4.   

    App类的InitInstance函数中,把创建你的启动界面的代码放在弹出主对话框前面
      

  5.   

    Insert a splash screen dialog
      

  6.   

    一下是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; 
     } 
      

  7.   

    一下是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;  
     }  
      

  8.   

    int nResponse = dlg.DoModal();  
    在这句之前
      

  9.   

    我加了
    CDlg4 dlg4;
    dlg4.DoModal();
    Compile没错,Build报错说,error LNK 2001:unresolved external symbol "public: _thiscall CDlg4:CDlg4(class CWnd *)"(??0CDlg4@@@)
    执行link时出错
    怎么办啊
      

  10.   

    没理由啊
    CDlg4的实现你怎么写的
    构造函数改过么?
      

  11.   

    啥也没改,就是插入一个对话框,为它建一个类,然后就在主对话框App类的InitInstance函数中包含新建类的头文件,并加上CDlg4 dlg4;dlg4.DoModal();
    可不可以举个简单的例子呢, 如:新建一个基于对话框的应用程序,在插入一个对话框作为启动界面?
    实在不知道怎么办了
      

  12.   


    // jianu.cpp : 定义应用程序的类行为。
    //#include "stdafx.h"
    #include "jianu.h"
    #include "jianuDlg.h"
    #include "ShowDialog.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    // CjianuAppBEGIN_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 是主窗体