Witam,
Mam problem dotyczący obsługi okien dialogowych. W moim programie ukrywam je procedurą ShowWindow a następnie wpisuje wartości w odpowiednie kontrolki tych okien. Niestety, żebym mogł to zrobić musze czekać do czasu aż okono będzie aktywne. Testuje wartość funkcji IsWindowVisible. W rezultacie na ekranie widoczne są "błyski" otwieranego okna. Ponadto za pierwszym wywołanie procedury nie ukrywa okna drugiego.
Czy nie można tego rozwiązać w lepszy sposób?

procedura Ukryj(hMain: HWnd);
var.....
begin
  PostMessage(hMain, WM_COMMAND, VK_R, 0);
  i:=High(integer);
  hCtr:=0;
  repeat
    hDlg1:= FindWindow(nil, 'Okno Dialogowe 1');
    if (hDlg<>INVALID_HANDLE_VALUE) and (hDlg<>0) then
      hCtr:=FindWindowEx(hDlg, 0, 'BUTTON', 'OK');
    dec(i);
  until ((hCtr<>INVALID_HANDLE_VALUE) and (hCtr<>0)) or (i=0);
  ShowWindow(hDlg, SW_HIDE);
  CtrID:= GetDlgCtrlID(hCtr);
  SendDlgItemMessage(hDlg, CtrID, BM_CLICK, 0, 0);
  
  i:=High(integer);
  repeat
    hDlg2:= FindWindow(nil, 'Okno Dialogowe 2');
    dec(i);
  until ((hDlg1<>INVALID_HANDLE_VALUE) and (hDlg1<>0)) or (i=0);
  while not IsWindowVisible(hDlg2) do;                                  //lub sleep(100)
  ShowWindow(hDlg2, SW_HIDE);                                         // tego wlasnie nie rozumiem

end;