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;