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;
}