// 111111.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include <stdio.h>
#include "tchar.h"
#include "resource.h"
#include "tlhelp32.h"
#include <commctrl.h>
#include <string.h>
#include <windows.h>
#pragma comment(lib,"comctl32.lib")
HWND g_hwndDlg = NULL;
HANDLE g_hSet = NULL;
HANDLE g_hClean = NULL;
HANDLE g_Event = NULL;
HANDLE hThread[2] = {0};
int CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
DWORD WINAPI t1(LPVOID lpargv)
{
WaitForSingleObject(g_hSet,INFINITE);
MessageBox(0,TEXT("自动设置1"),0,0);
SetEvent(g_hClean);
return 0;
}
DWORD WINAPI t2(LPVOID lpargv)
{
WaitForSingleObject(g_hClean,INFINITE);
MessageBox(0,TEXT("自动设置2"),0,0);
SetEvent(g_hSet);
return 0;
}
DWORD WINAPI t3(LPVOID lpargv)
{
WaitForSingleObject(g_hSet,INFINITE);
MessageBox(0,TEXT("自动设置3"),0,0);
SetEvent(g_hClean);
return 0;
}
DWORD WINAPI t11(LPVOID lpargv)
{
WaitForSingleObject(g_Event,INFINITE);
MessageBox(0,TEXT("手动设置1"),0,0);
return 0;
}
DWORD WINAPI t22(LPVOID lpargv)
{
WaitForSingleObject(g_Event,INFINITE);
MessageBox(0,TEXT("手动设置2"),0,0);
return 0;
}
DWORD WINAPI t33(LPVOID lpargv)
{
WaitForSingleObject(g_Event,INFINITE);
MessageBox(0,TEXT("手动设置3"),0,0);
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
InitCommonControls();//注册并初始化通用控件窗口类
DialogBox(hInstance,MAKEINTRESOURCE(IDD_MAIN_DLG),NULL,DialogProc);
return 0;
}
int CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
// g_hwndDlg = hwndDlg;
switch(uMsg)
{
case WM_INITDIALOG://初始化dialog
{
return TRUE;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_HAND_BTN:
{
//第二个参数true通知类型,false互斥类型
g_Event = CreateEvent(NULL,TRUE,FALSE,NULL);
hThread[0] = CreateThread(NULL,0,t11,hwndDlg,0,NULL);
hThread[1] = CreateThread(NULL,0,t22,NULL,0,NULL);
hThread[2] = CreateThread(NULL,0,t33,NULL,0,NULL);
SetEvent(g_Event);
WaitForMultipleObjects(3,hThread,TRUE,INFINITE);
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
CloseHandle(hThread[2]);
CloseHandle(g_Event);
return TRUE;
}
case IDC_AUTO_BTN:
{
//第二个参数true通知类型,false互斥类型
g_hSet = CreateEvent(NULL,FALSE,TRUE,NULL);
g_hClean = CreateEvent(NULL,FALSE,FALSE,NULL);
hThread[0] = CreateThread(NULL,0,t1,hwndDlg,0,NULL);
hThread[1] = CreateThread(NULL,0,t2,NULL,0,NULL);
hThread[2] = CreateThread(NULL,0,t3,NULL,0,NULL);
WaitForMultipleObjects(3,hThread,TRUE,INFINITE);
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
CloseHandle(hThread[2]);
CloseHandle(g_hSet);
CloseHandle(g_hClean);
return TRUE;
}
}
return FALSE;
}
case WM_CLOSE:
{
EndDialog(hwndDlg,0);
return TRUE;
}
}
return FALSE;
}
测试事件
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 〇、缘起——霍兰德测试报告结果 1、霍兰德测试+ 下面截图是我的测试结果: 我的典型职业- C(常规型) 该类型经...
- 本文转载自:腾讯WeTest专栏--《从XcodeGhost漏洞事件看手游安全测试》 安全领域有一个词出现频率很高...