Aproveitando a contribuição do Dr. Claudio Soto para a MiniGui, fiz a adaptação para HWGui.
Código: Selecionar todos
Exemplo de uso:
nTypeButton:=MB_YESNO + MB_SYSTEMMODAL + MB_DEFBUTTON2
nRet:=HWG_MessageBoxTimeout("Iniciar o processo ? ", "Atenção!", nTypeButton, 30000) // Aguarda 30 segundos.
IF nRet # 6 // Resultado diferente de Sim ou o que vier do timeout.
QUIT
ENDIF
Código: Selecionar todos
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
int WINAPI MessageBoxTimeout(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)
{
typedef BOOL (WINAPI *PMessageBoxTimeout)(HWND,LPCTSTR,LPCTSTR,UINT,WORD,DWORD);
static PMessageBoxTimeout pMessageBoxTimeout = NULL;
if (pMessageBoxTimeout == NULL)
{
HMODULE hLib = LoadLibrary ("User32.dll");
#ifdef UNICODE
pMessageBoxTimeout = (PMessageBoxTimeout)GetProcAddress(hLib, "MessageBoxTimeoutW");
#else
pMessageBoxTimeout = (PMessageBoxTimeout)GetProcAddress(hLib, "MessageBoxTimeoutA");
#endif
}
if(pMessageBoxTimeout == NULL)
return FALSE;
return pMessageBoxTimeout(hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds);
}
// HMG_MessageBoxTimeout (Text, Caption, nTypeButton, nMilliseconds) ---> Return iRetButton
HB_FUNC (HWG_MESSAGEBOXTIMEOUT)
{
HWND hWnd = GetActiveWindow();
TCHAR *lpText = hb_parc (1);
TCHAR *lpCaption = hb_parc (2);
UINT uType = HB_ISNIL(3) ? MB_OK : (UINT) hb_parnl (3);
WORD wLanguageId = MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL);
DWORD dwMilliseconds = HB_ISNIL(4) ? (DWORD)0xFFFFFFFF : (DWORD) hb_parnl (4);
int iRet = MessageBoxTimeout (hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds);
hb_retni ((int) iRet);
}
#pragma ENDDUMP

