win32调试宏

来源:互联网 发布:上瘾网络剧1 20bilibi 编辑:程序博客网 时间:2024/05/31 20:52
#ifndef MTVERITY_H_#define MTVERITY_H_#pragma comment(lib, "user32")#include <Windows.h>#define MTASSERT(a) _ASSERTE(a)#define MTVERITY(a) if(!(a))\PrintError(#a,__FILE__,__LINE__,GetLastError()) static void PrintError(LPSTR linedesc, LPSTR filename,   int lineno, DWORD errnum){LPSTR lpBuffer;char errbuf[256];#ifndef _CONSOLEchar modulename[MAX_PATH];#elseDWORD numread;#endif //_WINDOWS_FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER                   | FORMAT_MESSAGE_FROM_SYSTEM,           NULL,           errnum,           LANG_NEUTRAL,           (LPTSTR)&lpBuffer,           0,           NULL );sprintf(errbuf, "\nThe following call failed at line %d in %s:\n\n     %s\n\nReason: %s\n", lineno, filename, linedesc, lpBuffer);#ifdef _CONSOLEWriteFile(GetStdHandle(STD_ERROR_HANDLE),  errbuf, strlen(errbuf),   &numread, FALSE ); Sleep(5000); #else GetModuleFileNameA(NULL, modulename, MAX_PATH); MessageBoxA(NULL, errbuf, modulename,  MB_ICONWARNING|MB_OK|MB_TASKMODAL|MB_SETFOREGROUND); #endifexit(EXIT_FAILURE);}#endif



下面是使用技巧:

// win32Thread.cpp : 定义控制台应用程序的入口点。//#include <stdio.h>#include <Windows.h>#include <tchar.h>#include "mtverify.h"DWORD WINAPI ThreadProc(void* pmsg){DWORD n = (DWORD)pmsg;Sleep(n*5000);return n * 10;}DWORD WINAPI ThreadProc1(void* pmsg){ExitThread(100);return 0;}int _tmain(int argc, _TCHAR* argv[]){HANDLE hThread1, hThread2;DWORD dThreadID1,DThreadId2;DWORD dExitCode1,dExitCode2;hThread1 = CreateThread(NULL,0,ThreadProc,LPVOID(1), 0, &dThreadID1);hThread2 = CreateThread(NULL,0,ThreadProc1,LPVOID(2), 0, &DThreadId2);CloseHandle(hThread1);CloseHandle(hThread2);while(1){printf("please Enter:");getchar();MTVERITY( GetExitCodeThread(hThread1, &dExitCode1));MTVERITY( GetExitCodeThread(hThread2, &dExitCode2));if (dExitCode1 == STILL_ACTIVE){printf("Thread 1 running\n");}if (dExitCode2 == STILL_ACTIVE){printf("Thread2 running\n");}if (dExitCode1 !=STILL_ACTIVE && dExitCode2 != STILL_ACTIVE){printf("Thread Two End\n");break;}}printf("%d,%d\n",dExitCode1, dExitCode2);system("pause");return 0;}


原创粉丝点击