亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wfmetest.cpp

?? c++的經典之作.是不可缺少的工具.大家可以現在學習
?? CPP
字號:
/******************************************************************************
Module:  TestWfME.cpp
Notices: Copyright (c) 2000 Jeffrey Richter
******************************************************************************/


#include "..\CmnHdr.h"     /* See Appendix A. */
#include <windowsx.h>
#include <tchar.h>
#include <process.h>
#include "resource.h"
#include "WaitForMultExp.h"


///////////////////////////////////////////////////////////////////////////////


// g_ahObjs contains the list of event kernel object
// handles referenced in the Boolean expression.
#define MAX_KERNEL_OBJS     1000
HANDLE g_ahObjs[MAX_KERNEL_OBJS];


// ahExpObjs contains all the expressions. A single expression
// consists of a contiguous set of kernel object handles that 
// is TRUE when all the objects are signaled at the same time. 
// A NULL handle is used to separate OR expressions. 

// A handle value may NOT appear multiple times within an AND 
// expression but the same handle value may appear in 
// different OR expressions.

// An expresion can have a maximum of 64 sets with no more 
// than 63 handles/set plus a NULL handle to separate each set
#define MAX_EXPRESSION_SIZE   ((64 * 63) + 63)


// m_nExpObjects is the number of entries used in the ahExpObjects array.
typedef struct 
{
   HWND     m_hwnd;                            // Where to send results
   DWORD    m_dwMilliseconds;                  // How long before timeout
   DWORD    m_nExpObjects;                     // # of entries in object list
   HANDLE   m_ahExpObjs[MAX_EXPRESSION_SIZE];  // List of objs
} AWFME, *PAWFME;
AWFME g_awfme;


// This message is posted to the UI thread when an expression 
// comes true or when we timeout while waiting for an 
// expression to come TRUE.
#define WM_WAITEND      (WM_USER + 101)


///////////////////////////////////////////////////////////////////////////////


BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) 
{
   chSETDLGICONS(hwnd, IDI_WFMETEXT);

   // Initialize the controls in the dialog box
   SetDlgItemInt(hwnd,  IDC_NUMOBJS, 4, FALSE);
   SetDlgItemInt(hwnd,  IDC_TIMEOUT, 30000, FALSE);
   SetDlgItemText(hwnd, IDC_EXPRESSION, _T("1 2 | 2 3 4 | 1 4"));

   // Set the multi-column listbox's column size
   ListBox_SetColumnWidth(GetDlgItem(hwnd, IDC_OBJLIST), LOWORD(GetDialogBaseUnits()) * 4);

   return(TRUE);  // Accept default focus window.
}


///////////////////////////////////////////////////////////////////////////////


DWORD WINAPI AsyncWaitForMultipleExpressions(PVOID pvParam) 
{
   PAWFME pawfme = (PAWFME)pvParam;

   DWORD dw = WaitForMultipleExpressions(pawfme->m_nExpObjects, 
      pawfme->m_ahExpObjs, pawfme->m_dwMilliseconds);
   PostMessage(pawfme->m_hwnd, WM_WAITEND, dw, 0);
   return(0);
}


///////////////////////////////////////////////////////////////////////////////


LRESULT Dlg_OnWaitEnd(HWND hwnd, WPARAM wParam, LPARAM lParam) 
{
   // Close all the event kernel object handles
   for (int n = 0; g_ahObjs[n] != NULL; n++)
      CloseHandle(g_ahObjs[n]);

   // Tell the user the result of running the test
   if (wParam == WAIT_TIMEOUT) 
      SetDlgItemText(hwnd, IDC_RESULT, __TEXT("Timeout"));
   else 
      SetDlgItemInt(hwnd, IDC_RESULT, (DWORD) wParam - WAIT_OBJECT_0, FALSE);

   // Allow the user to change values and run the test again
   EnableWindow(GetDlgItem(hwnd, IDC_NUMOBJS),    TRUE);
   EnableWindow(GetDlgItem(hwnd, IDC_TIMEOUT),    TRUE);
   EnableWindow(GetDlgItem(hwnd, IDC_EXPRESSION), TRUE);
   EnableWindow(GetDlgItem(hwnd, IDOK),           TRUE);
   SetFocus(GetDlgItem(hwnd, IDC_EXPRESSION));

   return(0);
}


///////////////////////////////////////////////////////////////////////////////


void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) 
{
   // Obtain the user's settings from the dialog box controls.
   TCHAR szExpression[100];
   ComboBox_GetText(GetDlgItem(hwnd, IDC_EXPRESSION), szExpression,
      sizeof(szExpression) / sizeof(szExpression[0]));

   int nObjects = GetDlgItemInt(hwnd, IDC_NUMOBJS, NULL, FALSE);

   switch (id) 
   {
   case IDCANCEL:
      EndDialog(hwnd, id);
      break;

   case IDC_OBJLIST:
      switch (codeNotify) 
	  {
      case LBN_SELCHANGE:
         // An item changed state, reset all items and set the selected ones.
         for (int n = 0; n < nObjects; n++)
            ResetEvent(g_ahObjs[n]);

         for (n = 0; n < nObjects; n++) 
		 {
            if (ListBox_GetSel(GetDlgItem(hwnd, IDC_OBJLIST), n)) 
               SetEvent(g_ahObjs[n]);
         }
         break;
      }
      break;

   case IDOK:
      // Prevent the user from changing values while the test is running
      SetFocus(GetDlgItem(hwnd, IDC_OBJLIST));
      EnableWindow(GetDlgItem(hwnd, IDC_NUMOBJS),    FALSE);
      EnableWindow(GetDlgItem(hwnd, IDC_TIMEOUT),    FALSE);
      EnableWindow(GetDlgItem(hwnd, IDC_EXPRESSION), FALSE);
      EnableWindow(GetDlgItem(hwnd, IDOK),           FALSE);

      // Notify the user that the test is running
      SetDlgItemText(hwnd, IDC_RESULT, TEXT("Waiting..."));

      // Create all of the desired kernel objects
      ZeroMemory(g_ahObjs, sizeof(g_ahObjs));
      g_awfme.m_nExpObjects = 0;
      ZeroMemory(g_awfme.m_ahExpObjs, sizeof(g_awfme.m_ahExpObjs));
      g_awfme.m_hwnd = hwnd;
      g_awfme.m_dwMilliseconds = GetDlgItemInt(hwnd, IDC_TIMEOUT, NULL, FALSE);

      ListBox_ResetContent(GetDlgItem(hwnd, IDC_OBJLIST));
      for (int n = 0; n < nObjects; n++) 
	  {
         TCHAR szBuf[20];
         g_ahObjs[n] = CreateEvent(NULL, FALSE, FALSE, NULL);

         wsprintf(szBuf, TEXT("  %d"), n + 1);
         ListBox_AddString(GetDlgItem(hwnd, IDC_OBJLIST), 
            &szBuf[lstrlen(szBuf) - 3]);
      }

      PTSTR p = _tcstok(szExpression, TEXT(" "));
      while (p != NULL) 
	  {
         g_awfme.m_ahExpObjs[g_awfme.m_nExpObjects++] = 
            (*p == TEXT('|')) ? NULL : g_ahObjs[_ttoi(p) - 1];
         p = _tcstok(NULL, TEXT(" "));
      }

      DWORD dwThreadId;
      CloseHandle(chBEGINTHREADEX(NULL, 0, AsyncWaitForMultipleExpressions, &g_awfme, 0, &dwThreadId));
      break;
   }   
}


///////////////////////////////////////////////////////////////////////////////

        
INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

   switch (uMsg) {
      chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog);
      chHANDLE_DLGMSG(hwnd, WM_COMMAND,    Dlg_OnCommand);

      case WM_WAITEND:
         return(Dlg_OnWaitEnd(hwnd, wParam, lParam)); 
   }

   return(FALSE);
}


///////////////////////////////////////////////////////////////////////////////


int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {

   DialogBox(hinstExe, MAKEINTRESOURCE(IDD_TESTW4ME), NULL, Dlg_Proc);
   return(0);
}


//////////////////////////////// End of File //////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
洋洋成人永久网站入口| 在线观看日韩电影| 久久99精品国产| 日本欧美一区二区三区| 亚洲成a人片在线不卡一二三区| 亚洲精品网站在线观看| 亚洲美女视频在线| 一区二区三国产精华液| 夜夜夜精品看看| 午夜日韩在线电影| 日韩精品欧美精品| 久久国产综合精品| 国产一区二区精品在线观看| 国产在线精品一区二区| 国产一区二区导航在线播放| 精品无人码麻豆乱码1区2区 | 紧缚捆绑精品一区二区| 免费成人深夜小野草| 久久电影网站中文字幕 | 欧美伊人久久久久久午夜久久久久| 91网站在线播放| 色噜噜久久综合| 欧美日本一道本| 欧美mv日韩mv| 综合欧美一区二区三区| 亚洲人成网站在线| 午夜久久福利影院| 激情丁香综合五月| 国产成人日日夜夜| 一本一本久久a久久精品综合麻豆| 91黄色免费观看| 日韩欧美国产综合| 国产精品第五页| 亚洲国产精品一区二区www在线 | 麻豆成人在线观看| 国产成人在线免费| 91麻豆国产福利精品| 91精品久久久久久蜜臀| www久久精品| 中文字幕视频一区| 日本中文一区二区三区| 国产99久久久国产精品| 色综合视频一区二区三区高清| 欧美高清视频不卡网| 国产亚洲婷婷免费| 亚洲成人在线观看视频| 国产精品一区一区三区| 欧洲一区在线观看| 精品国产青草久久久久福利| 中文字幕亚洲一区二区va在线| 偷偷要91色婷婷| 不卡一二三区首页| 日韩免费看的电影| 一区二区三区中文字幕电影| 麻豆精品久久精品色综合| 99视频一区二区| 精品乱人伦小说| 一区二区三区产品免费精品久久75| 麻豆精品一区二区综合av| 91蜜桃免费观看视频| 欧美大片一区二区| 亚洲午夜在线视频| 成人久久18免费网站麻豆| 91精品国产欧美日韩| 最新高清无码专区| 国产一区二区三区香蕉| 欧美狂野另类xxxxoooo| 中文字幕一区免费在线观看| 老司机午夜精品99久久| 欧美少妇bbb| 中文字幕一区二区三区不卡在线| 麻豆一区二区99久久久久| 欧美亚洲动漫精品| 国产精品久久久久影院亚瑟| 美女尤物国产一区| 欧美日韩精品一区视频| 中文字幕一区免费在线观看| 国产精品18久久久久久vr| 91精品国产综合久久福利| 亚洲免费av高清| 不卡视频一二三| 久久久www免费人成精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 一本久久a久久精品亚洲| 国产视频不卡一区| 国内国产精品久久| 日韩欧美色综合网站| 日本美女一区二区三区| 欧美喷水一区二区| 一区二区三区国产| 在线观看视频一区| 亚洲一区精品在线| 欧美色国产精品| 亚洲一区中文日韩| 欧美在线啊v一区| 亚洲一区精品在线| 欧美亚洲免费在线一区| 亚洲综合丝袜美腿| 欧美性生活影院| 亚洲亚洲精品在线观看| 欧美性一区二区| 亚洲一级电影视频| 欧美日韩精品一区二区三区| 亚洲一区二区三区四区在线观看 | 亚洲高清视频在线| 欧洲精品在线观看| 亚洲第一成年网| 欧美日韩视频在线第一区| 亚洲精品免费播放| 欧美性生活久久| 午夜精品福利在线| 欧美一区二区视频在线观看2022| 午夜精品久久久| 日韩欧美第一区| 国产乱子伦一区二区三区国色天香| 久久久精品蜜桃| 成人网页在线观看| 综合在线观看色| 欧美日韩精品一区二区三区 | 色婷婷综合久久久久中文 | 亚洲一区在线观看视频| 欧美三级资源在线| 日本麻豆一区二区三区视频| 欧美成人一区二区三区在线观看 | 欧美精品乱码久久久久久按摩 | 欧美主播一区二区三区| 丝袜亚洲另类欧美| 精品国产乱码久久久久久老虎| 国产麻豆欧美日韩一区| 午夜婷婷国产麻豆精品| 91精品国产91久久久久久一区二区| 免费成人在线视频观看| 日本一区免费视频| 欧美在线小视频| 蜜桃视频在线观看一区| 国产亚洲精品7777| 欧美三日本三级三级在线播放| 蜜臀国产一区二区三区在线播放| 国产片一区二区| 欧美日韩一二三区| 狠狠色狠狠色综合系列| 中文字幕一区二区三区不卡在线| 欧美日韩aaa| 高清国产午夜精品久久久久久| 亚洲男女一区二区三区| 91麻豆精品国产无毒不卡在线观看| 国内外成人在线视频| 亚洲色图欧美偷拍| 欧美一区二区在线播放| 不卡电影免费在线播放一区| 亚洲成人三级小说| 国产日韩在线不卡| 在线不卡a资源高清| 成人综合激情网| 视频一区在线播放| 中文av一区特黄| 正在播放一区二区| 99久久精品国产一区二区三区 | 色婷婷激情综合| 麻豆成人久久精品二区三区小说| 国产精品不卡在线| 日韩欧美一区中文| 91福利在线播放| 国产乱对白刺激视频不卡| 一区二区三区欧美激情| 久久伊99综合婷婷久久伊| 欧美亚洲动漫精品| 成人黄色av电影| 久久99久久久久| 亚洲午夜私人影院| 国产精品久久久久aaaa| 欧美成人激情免费网| 欧美性受xxxx黑人xyx| av在线不卡免费看| 国产一区二区三区在线观看精品 | 91黄色免费网站| 国产超碰在线一区| 韩国女主播一区| 水野朝阳av一区二区三区| 亚洲蜜臀av乱码久久精品| 国产欧美精品国产国产专区| 欧美r级在线观看| 欧美一区二区三区电影| 欧美日韩亚洲综合| 色呦呦网站一区| 99久久精品免费看| 成人一区二区三区视频| 蜜臀精品一区二区三区在线观看 | 一区二区三区不卡视频在线观看 | 99精品欧美一区| 欧美理论片在线| 免费成人深夜小野草| 欧美疯狂做受xxxx富婆| 亚洲人一二三区| 5月丁香婷婷综合| 欧美在线啊v一区| 欧美在线视频日韩| 欧美亚洲动漫制服丝袜| 91官网在线免费观看| 91麻豆国产福利精品|