如何关闭对话框(子)而不关闭主对话框(父对象)

时间:2012-02-25 15:05:16

标签: windows winapi win32gui

我有一个父对话框,此对话框有菜单,在此菜单中(帮助 - >关于) 当我点击关于选择时,显示关于DialogBox 我希望如果单击“确定”或关闭(X)按钮,则只关闭此对话框而不是主对话框。

这是我的尝试:

// ------------- Main dialog function
BOOL CALLBACK DlgFunc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp){
    switch(msg){
    case WM_COMMAND:
        switch(LOWORD(wp)){
        case IDM_HABOUT: // Here, I set when I click on help selection in the menu creates (about dialogbox)
            DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_AboutDlg), hwnd, AboutDlgFunc);
            break;
        }
        break;
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return false;
    }
    return true;
}


// ------------- About dialog function
BOOL CALLBACK AboutDlgFunc(HWND HabutWnd, UINT msg, WPARAM wp, LPARAM lp){
    switch(msg){
    case WM_COMMAND:
        if(LOWORD(wp) == IDOK)
            EndDialog(HabutWnd,0);
        break;
    case WM_CLOSE:
        EndDialog(HabutWnd,0);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return false;
    }
    return true;
}

1 个答案:

答案 0 :(得分:3)

请勿在{{1​​}}内的PostQuitMessage内致电WM_DESTROY。这实际上导致整个程序退出。