注册 登录
编程论坛 VC++/MFC

基于对话框的:运行时怎么默认打开几个对话框,其中一个是模态的,希望详细讲解一下

meshiwn 发布于 2014-04-24 11:33, 549 次点击
基于对话框的:运行时怎么默认打开几个对话框,其中一个是模态的,希望详细讲解一下

还有,这些对话框打开时怎么才能显示在指定位置(正中间)。


希望各位多多指点,我只是初学者,爱好而已,别嫌我笨啊
3 回复
#2
yuccn2014-04-24 13:51
对于模态和非模态,百度一下,大把的。

位置就 自己计算吧
::GetWindowRect
::SetWindowPos
#3
meshiwn2014-04-24 15:20
回复 2 楼 yuccn
谢谢,模态和非模态我知道怎么弄,关键是我不知道怎么默认同时开启两个对话框:
BOOL CTestDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);            // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon

    // TODO: Add extra initialization here

    //非模态可以
       p_mydlg =new CMyDlg();
    p_mydlg->Create(IDD_DIALOG1,NULL);
    p_mydlg->ShowWindow(SW_SHOW);
   这样写能同时出来两个对话框

       //模态不可以
        m_mydlg.domodal()    这样写只能先出这个对话框,点了操作之后才显示出主对话框

        我要怎么写才能同时出两个对话框,模态的


      

    return TRUE;  // return TRUE  unless you set the focus to a control
}

void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialogEx::OnSysCommand(nID, lParam);
    }
}
#4
邵帅2014-04-25 14:33
这个比较容易吧,在m_mydlg.domodal()前面加上ShowWindow(SW_SHOW);先把主对话框显示出来就行了。
1