Comment fermer la boîte de dialogue (enfant) sans fermer la boîte de dialogue principale (parent)

StackOverflow https://stackoverflow.com/questions/9445138

  •  12-11-2019
  •  | 
  •  

Question

J'ai une boîte de dialogue parent, cette boîte de dialogue a un menu, dans ce menu (Aide->à propos).
lorsque je clique sur la sélection à propos, affiche à propos de DialogBox.
Je veux que si je clique sur le bouton Ok ou fermer (X), fermez cette boîte de dialogue uniquement, pas la boîte de dialogue principale.

Voici mes tentatives :

// ------------- 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;
}
Était-ce utile?

La solution

N'appelle pas PostQuitMessage dans WM_DESTROY à l'intérieur AboutDlgFunc.Cela provoque essentiellement la fermeture de l'ensemble du programme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top