WinAPI - zagnieżadzanie dialogów

0

Witam :) mam problem z zagnieżdżeniem dialogów w mojej aplikacji. Mianowice mój program ma konwertować dany format do nowego. Chciałbym zrobić dialog który powiadomi użyłkowania czy dana kompresja się udała czy nie. Mam problem ponieważ gdyby to dotyczyła jakiś przycisków na dialogu to sprawa byłaby prosta, wystarczyłby prosty dialog i jeśli użytkownik wciśnie to uruchom ten dialog, jak inny to ten. (łatwo się można odwoływać do ID przycisku). Jak to by wyglądało z konwencją, czyli akcją która może ale nie musi zakończyć się sukcesem? Za wszystkie uwagi z góry dziękuje. Poniżej zamieszczam kod żeby zobrazować o co mi chodzi. Jeszcze mały komentarz co do kodu:

  • w poniższym kodzie zaimplementowany tylko jeden dialog który wyskakuje za każdym razem ale chciałby dodać drugi który wyskoczy gdy akcja zakonczy sie niepowodzeniem. Pierwszy dialog znajduje się w pliku zasobów i ma ID 200 stąd MAKEINTRESOURCE( 200 ). *
//obsluga okna glownego
 LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg) 
	{
/**************************/
        case WM_CLOSE:
            DestroyWindow(hWnd);
            break;
/**************************/
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
/**************************/
        case WM_COMMAND:
            switch (wParam)
            {
            /**************************/
            case ID_Convert:

                //***WYWOLUJE NASZ DIALOG tylko chybabym wywołać  
                int ret = DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE( 200 ), hWnd, DlgProc );
                
                //inne akcje które nasz nie obchodzą
                TrybKoloru = ComboBox_GetCurSel( hCombo ); //pobieram tryb koloru, jsli pusty: brak konwersji koloru
                dlugosc = GetWindowTextLength(hText);
                Bufor = (LPSTR)GlobalAlloc(GPTR, dlugosc + 1);
                GetWindowText(hText, Bufor, dlugosc + 1); // pobralem sciezke dostepu do zmiennej bufor
                dlugosc = GetWindowTextLength(hText1);
                NowaNazwaPliku = (LPSTR)GlobalAlloc(GPTR, dlugosc + 1);
                GetWindowText(hText1, NowaNazwaPliku, dlugosc + 1); //tu sciezka dla nowego pliku
                frame();
                newfile(w,h);
                break;
            /**************************/
            }
         break;
/**************************/
        default:
            return DefWindowProc(hWnd, msg, wParam, lParam);
	}

	return 0;
}

// OBSLUGA OKNA DIALOGOWEGO
BOOL CALLBACK DlgProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
    switch( Msg )
    {
    case WM_COMMAND:
        {
            // reakcja na przyciski
            switch( LOWORD( wParam ) )
            {
            case IDOK: EndDialog( hwnd, IDOK ); break;
            }
        }
        break;

        default: return FALSE;
    }

    return TRUE;
}
0

ke?

ale w czym problem?

if (cośtam)
    ret = DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE( 200 ), hWnd, DlgProc );
else
    ret = DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE(JAKIŚ_INNY_DIALOG), hWnd, DlgProc2);
0

Chodzi właśnie o to coś tam :P jaki warunek ma być do tego że jakaś czynność czyli w moim przypadku utworzenie pliku ma uruchomić jeden dialog jej brak drugi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1