added buttons to test if a thread is hung
authorThomas Bluemel <thomas@reactsoft.com>
Thu, 11 Mar 2004 14:44:48 +0000 (14:44 +0000)
committerThomas Bluemel <thomas@reactsoft.com>
Thu, 11 Mar 2004 14:44:48 +0000 (14:44 +0000)
svn path=/trunk/; revision=8642

reactos/apps/tests/multithrdwin/makefile
reactos/apps/tests/multithrdwin/multithrdwin.c

index 003fb12..2b30a8f 100644 (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
 
index 0a6e005..fa7e838 100644 (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;