wxWidgets - modalne okno z biblioteki dll

0

Witam,

Mam bibliotekę dll, wewnątrz której tworzony jest dialog, eksportowana funkcja wygląda mniej więcej tak:

extern "C" __declspec(dllexport) int ShowDialog(HWND hParent) 
 {
	 testDLGDialog *dlg = new testDLGDialog(NULL);
	 SetParent((HWND)dlg->GetHWND(),hParent);
	
 
	 return dlg->ShowModal();
 }

Wszystko ładnie działa, dialog się wyświetla. Problem jednak w tym, że jezeli wywolam tą funkcję z dll, to wyświetlony dialog nie jest modalny - to znaczy, że można kliknąć w okno programu, który ten dialog wywołał.

Jak temu zapobiec? Najlepiej by było, żeby okno z dll-ki wyswietliło się jako modalne, ale czy w ogole się da to osiagnąć? :/

0

Hmm tez wpadlem na to zeby zrobic cos takiego jak w powyzszym linku, ale na to ze jezeli parent jest jako enable to okno jest modeless, a jak disable - modal sam bym nigdy nie wpadl :>

W kazdym razie, poprawny kod jest taki:

extern "C" __declspec(dllexport) int ShowDialog(HWND hParent, bool modal=true) 
 {
   wxWindow win;
   win.SetHWND((WXHWND)hParent);
   win.Enable(modal!=true);
 
   testDLGDialog dlg(&win);
   int res = dlg.ShowModal();

   win.Enable(true);
   win.SetHWND(0);
   SetActiveWindow(hParent); 

   return res;
 }

Nie wiem dlaczego musze dopisywac to:

SetActiveWindow(hParent); 

Ale jezeli tego nie ma, to po zamknieciu dialogu z dll okno głównego programu jest nieaktywne :>

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