DELPHI
-Функция Timeout в MessageBox
Многие в Delphi используют MessageBox, и сталкивались с проблемой: что делать если пользователь, на появившимся окне не нажимает на "ок", или не отвечает на созданный диалог, для этого существует функция Timeout, только в описании я её не нашел.
Если пользователь, не выбирает ответ, в течении N количества секунд, то выполняем необходимые нам действия, я в примере вывожу сообщение:
const MB_TIMEDOUT = 32000;
function MessageBoxTimeOut(hWnd: HWND; lpText: PChar; lpCaption: PChar; uType: UINT; wLanguageId: WORD; dwMilliseconds: DWORD): Integer; stdcall; external user32 name 'MessageBoxTimeoutA';
procedure TForm1.BitBtn1Click(Sender: TObject);
var
iRet: Integer;
iFlags: Integer;
begin
iFlags := MB_YESNO or MB_SETFOREGROUND or MB_SYSTEMMODAL or MB_ICONINFORMATION;
iRet := MessageBoxTimeout(Application.Handle, 'Нажмите "да" или "нет"', 'Сообщение', iFlags, 0, 5000);
case iRet of
IDYES:
ShowMessage('Да') ;
IDNO:
ShowMessage('Нет') ;
MB_TIMEDOUT:
ShowMessage('Время ожидания ответа вышло') ;
end;
end;