added buttons to test if a thread is hung

svn path=/trunk/; revision=8642
This commit is contained in:
Thomas Bluemel 2004-03-11 14:44:48 +00:00
parent 7bbe8a0aec
commit 241b66d3bd
2 changed files with 41 additions and 5 deletions

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.1 2003/12/14 16:11:40 weiden Exp $
# $Id: makefile,v 1.2 2004/03/11 14:44:48 weiden Exp $
PATH_TO_TOP = ../../..
@ -10,7 +10,7 @@ TARGET_APPTYPE = windows
TARGET_NAME = multithrdwin
TARGET_SDKLIBS = kernel32.a gdi32.a
TARGET_SDKLIBS = kernel32.a gdi32.a ntdll.a
TARGET_OBJECTS = $(TARGET_NAME).o

View file

@ -15,6 +15,7 @@ typedef struct _THRDCREATEWIN
static HINSTANCE hAppInstance;
static HANDLE WinCreatedEvent;
static THRDCREATEWIN wnds[3];
LRESULT WINAPI MultiWndProc(HWND, UINT, WPARAM, LPARAM);
@ -47,7 +48,10 @@ WindowThreadProc(LPVOID lpParameter)
GetLastError());
return 1;
}
CreateWindow("BUTTON","Sleep",WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP|BS_PUSHBUTTON, 10, 10, 70, 23, cw->Window, (PVOID)1, hAppInstance, NULL);
CreateWindow("BUTTON","1",WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP|BS_PUSHBUTTON, 83, 10, 20, 23, cw->Window, (PVOID)2, hAppInstance, NULL);
CreateWindow("BUTTON","2",WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP|BS_PUSHBUTTON, 105, 10, 20, 23, cw->Window, (PVOID)3, hAppInstance, NULL);
CreateWindow("BUTTON","3",WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP|BS_PUSHBUTTON, 127, 10, 20, 23, cw->Window, (PVOID)4, hAppInstance, NULL);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
@ -65,7 +69,6 @@ WinMain(HINSTANCE hInstance,
{
WNDCLASS wc;
int i;
static THRDCREATEWIN wnds[3];
HANDLE Threads[3];
hAppInstance = hInstance;
@ -152,6 +155,8 @@ LRESULT CALLBACK MultiWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
HDC hDC;
RECT Client;
HBRUSH Brush;
DWORD Ret;
static COLORREF Colors[] =
{
RGB(0x00, 0x00, 0x00),
@ -187,7 +192,38 @@ LRESULT CALLBACK MultiWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
}
EndPaint(hWnd, &ps);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 1:
Sleep(20000);
break;
case 2:
case 3:
case 4:
if(SendMessageTimeout(wnds[LOWORD(wParam) - 2].Window, WM_NULL, 0, 0, SMTO_ABORTIFHUNG, 1000, &Ret))
{
DbgPrint("SendMessageTimeout() OK");
MessageBox(hWnd, "SendMessageTimeout() OK", NULL, 0);
}
else
{
if(GetLastError() == ERROR_TIMEOUT)
{
DbgPrint("SendMessageTimeout() Timeout");
MessageBox(hWnd, "SendMessageTimeout() Timeout", NULL, 0);
}
else
{
DbgPrint("SendMessageTimeout() Failed");
MessageBox(hWnd, "SendMessageTimeout() Failed", NULL, 0);
}
}
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;