Come chiudere il dialogo (figlio) senza chiudere la finestra di dialogo principale (genitore)

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

  •  12-11-2019
  •  | 
  •  

Domanda

Ho una finestra di dialogo genitore, questa finestra di dialogo ha un menu, in questo menu (aiuto).
Quando faccio clic sulla selezione di informazioni, mostra su Dialogbox.
Voglio se faccio clic su OK o Chiudi (x), chiudo questa finestra di dialogo non solo la finestra di dialogo principale.

Questo è i miei tentativi:

// ------------- 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;
}
È stato utile?

Soluzione

Non chiamare PostQuitMessage in WM_DESTROY dentro AboutDlgFunc. Questo essenzialmente fa smettere l'intero programma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top