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

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

?? handshake.cpp

?? Windows via C/C++, Fifth Edition圖書源代碼
?? CPP
字號:
/******************************************************************************
Module:  Handshake.cpp
Notices: Copyright (c) 2008 Jeffrey Richter & Christophe Nasarre
******************************************************************************/


#include "..\CommonFiles\CmnHdr.h"     /* See Appendix A. */
#include <windowsx.h>
#include <tchar.h>
#include "Resource.h"


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


// This event is signaled when the client has a request for the server
HANDLE g_hevtRequestSubmitted;

// This event is signaled when the server has a result for the client
HANDLE g_hevtResultReturned;

// The buffer shared between the client and server threads
TCHAR  g_szSharedRequestAndResultBuffer[1024];

// The special value sent from the client that causes the 
// server thread to terminate cleanly.
TCHAR  g_szServerShutdown[] = TEXT("Server Shutdown");

// The server thread will check that the main dialog is no longer alive
// when the shutdown message is received.
HWND   g_hMainDlg;


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


// This is the code executed by the server thread
DWORD WINAPI ServerThread(PVOID pvParam) {

   // Assume that the server thread is to run forever
   BOOL fShutdown = FALSE;

   while (!fShutdown) {

      // Wait for the client to submit a request
      WaitForSingleObject(g_hevtRequestSubmitted, INFINITE);

      // Check to see if the client wants the server to terminate
      fShutdown = 
         (g_hMainDlg == NULL) &&
         (_tcscmp(g_szSharedRequestAndResultBuffer, g_szServerShutdown) == 0);

      if (!fShutdown) {
         // Process the client's request (reverse the string)
         _tcsrev(g_szSharedRequestAndResultBuffer);
      }

      // Let the client process the request's result
      SetEvent(g_hevtResultReturned);
   }

   // The client wants us to shut down, exit
   return(0);
}


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


BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) {

   chSETDLGICONS(hwnd, IDI_HANDSHAKE);

   // Initialize the edit control with some test data request
   Edit_SetText(GetDlgItem(hwnd, IDC_REQUEST), TEXT("Some test data"));

   // Store the main dialog window handle
   g_hMainDlg = hwnd;

   return(TRUE);
}


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


void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {

   switch (id) {

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

      case IDC_SUBMIT:  // Submit a request to the server thread
      
         // Copy the request string into the shared data buffer
         Edit_GetText(GetDlgItem(hwnd, IDC_REQUEST), 
            g_szSharedRequestAndResultBuffer, 
            _countof(g_szSharedRequestAndResultBuffer));

         // Let the server thread know that a request is ready in the buffer
         // Wait for the server to process the request and give us the result
         SignalObjectAndWait(g_hevtRequestSubmitted, g_hevtResultReturned, INFINITE, false);

         // Let the user know the result
         Edit_SetText(GetDlgItem(hwnd, IDC_RESULT), 
            g_szSharedRequestAndResultBuffer);

         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);
   }

   return(FALSE);
}


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


int WINAPI _tWinMain(HINSTANCE hInstanceExe, HINSTANCE, PTSTR, int) {

   // Create & initialize the 2 nonsignaled, auto-reset events
   g_hevtRequestSubmitted = CreateEvent(NULL, FALSE, FALSE, NULL);
   g_hevtResultReturned   = CreateEvent(NULL, FALSE, FALSE, NULL);

   // Spawn the server thread
   DWORD dwThreadID;
   HANDLE hThreadServer = chBEGINTHREADEX(NULL, 0, ServerThread, NULL, 
      0, &dwThreadID);

   // Execute the client thread's user interface
   DialogBox(hInstanceExe, MAKEINTRESOURCE(IDD_HANDSHAKE), NULL, Dlg_Proc);
   g_hMainDlg = NULL;

   // The client's UI is closing, have the server thread shutdown
   _tcscpy_s(g_szSharedRequestAndResultBuffer, 
      _countof(g_szSharedRequestAndResultBuffer), g_szServerShutdown);
   SetEvent(g_hevtRequestSubmitted);

   // Wait for the server thread to acknowledge the shutdown AND
   // wait for the server thread to fully terminate
   HANDLE h[2];
   h[0] = g_hevtResultReturned;
   h[1] = hThreadServer;
   WaitForMultipleObjects(2, h, TRUE, INFINITE);
   
   // Properly clean up everything
   CloseHandle(hThreadServer);      
   CloseHandle(g_hevtRequestSubmitted);      
   CloseHandle(g_hevtResultReturned);      

   // The client thread terminates with the whole process
   return(0);
}


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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
卡一卡二国产精品| 床上的激情91.| 一级做a爱片久久| 亚洲视频一二三| 亚洲欧美激情插| 亚洲一区成人在线| 奇米精品一区二区三区在线观看 | 久久久噜噜噜久噜久久综合| 91精品国产乱| 久久精品一区二区三区四区| 国产欧美精品一区二区色综合朱莉| 精品理论电影在线观看 | 99久久婷婷国产| 在线一区二区三区四区五区| 欧美性三三影院| 日韩精品中文字幕在线不卡尤物| 精品国产露脸精彩对白| 精品成人在线观看| 国产精品美日韩| 亚洲成av人片一区二区| 日本不卡一区二区三区高清视频| 久88久久88久久久| 不卡高清视频专区| 制服丝袜亚洲网站| 中文字幕高清一区| 天天影视网天天综合色在线播放| 精久久久久久久久久久| 99久久777色| 欧美一二区视频| 国产精品不卡一区二区三区| 亚洲成人动漫在线观看| 国产精品一区二区x88av| 国产成人精品亚洲午夜麻豆| 91丨九色丨国产丨porny| 欧美精品在欧美一区二区少妇 | 精品一区二区在线看| 成人动漫一区二区在线| 日韩亚洲欧美高清| 中文字幕亚洲精品在线观看| 午夜影视日本亚洲欧洲精品| 国产成人午夜99999| 欧美色老头old∨ideo| 欧美精品一区二区三区一线天视频| 中文字幕在线一区免费| 全部av―极品视觉盛宴亚洲| 97久久超碰国产精品电影| 欧美日韩国产综合一区二区三区| 久久精品夜色噜噜亚洲a∨| 亚洲第一综合色| 91在线精品一区二区| 精品福利在线导航| 视频一区视频二区在线观看| kk眼镜猥琐国模调教系列一区二区| 日韩一级片网址| 亚洲午夜激情网站| 色综合视频一区二区三区高清| 日韩一区二区在线免费观看| 亚洲精品国产品国语在线app| 国产成人鲁色资源国产91色综| 91精品国产91热久久久做人人| 日本亚洲三级在线| 色偷偷久久人人79超碰人人澡| 中日韩av电影| 国产精品一区在线观看你懂的| 日韩欧美一区二区久久婷婷| 亚洲小少妇裸体bbw| 色爱区综合激月婷婷| 国产精品网站导航| 成人精品小蝌蚪| 亚洲国产经典视频| 国产成人h网站| 国产日韩欧美制服另类| 国产高清成人在线| 久久噜噜亚洲综合| 国产xxx精品视频大全| 久久精品夜夜夜夜久久| 国产精品主播直播| 欧美国产日本视频| 99久久久国产精品免费蜜臀| 亚洲人成网站在线| 91官网在线免费观看| 一区二区三国产精华液| 欧美日韩国产综合久久| 偷窥国产亚洲免费视频| 日韩一区二区三区高清免费看看| 秋霞影院一区二区| 2020国产精品自拍| 94-欧美-setu| 亚洲一区国产视频| 欧美一级电影网站| 国产精品亚洲午夜一区二区三区 | 国产女同性恋一区二区| 国产成人精品综合在线观看| 中文乱码免费一区二区| 91在线视频播放| 日韩福利电影在线| 久久久久久日产精品| 91免费国产在线观看| 五月婷婷激情综合网| 2020日本不卡一区二区视频| 本田岬高潮一区二区三区| 夜夜操天天操亚洲| 精品三级在线观看| 久久综合九色综合欧美就去吻| 粉嫩av一区二区三区| 欧美巨大另类极品videosbest | 久久综合久久99| 日本精品视频一区二区三区| 蜜桃视频在线一区| 国产精品二区一区二区aⅴ污介绍| 91福利国产成人精品照片| 久久国产剧场电影| 亚洲色图都市小说| 精品播放一区二区| 欧洲av一区二区嗯嗯嗯啊| 极品少妇一区二区三区精品视频| 亚洲欧洲国产专区| www国产亚洲精品久久麻豆| 日本精品免费观看高清观看| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲综合免费观看高清完整版| 精品福利一二区| 欧美日韩欧美一区二区| 成人激情免费网站| 久久国产精品99精品国产 | 国内成人自拍视频| 亚洲国产另类av| 国产精品久久久久影院老司 | 久久久电影一区二区三区| 在线精品亚洲一区二区不卡| 国产iv一区二区三区| 日韩在线a电影| 亚洲与欧洲av电影| 中文文精品字幕一区二区| 日韩欧美电影在线| 欧美日韩精品是欧美日韩精品| 成人av免费在线| 国产精品一级片在线观看| 蜜臀av一区二区在线免费观看| 一区二区三区欧美亚洲| 国产精品麻豆一区二区| 精品国产人成亚洲区| 欧美男同性恋视频网站| 91在线码无精品| 99精品视频在线观看免费| 国产传媒欧美日韩成人| 狂野欧美性猛交blacked| 婷婷综合另类小说色区| 亚洲一二三区视频在线观看| 亚洲精品视频免费观看| 国产精品久久久久桃色tv| 国产网红主播福利一区二区| 精品欧美一区二区在线观看| 91精选在线观看| 欧美日韩大陆一区二区| 欧美日韩视频在线观看一区二区三区| 99热这里都是精品| 97国产精品videossex| 99re6这里只有精品视频在线观看| 福利一区二区在线| 成人黄色777网| 91女神在线视频| 色综合av在线| 欧美日韩mp4| 欧美成人精品3d动漫h| 精品电影一区二区| 中文字幕的久久| 亚洲自拍偷拍九九九| 日韩精品三区四区| 精品制服美女久久| 成人h动漫精品一区二区| 一本大道久久a久久综合| 91久久免费观看| 91精品婷婷国产综合久久| 精品国产污污免费网站入口 | 91一区二区在线观看| 欧美在线色视频| 精品欧美乱码久久久久久| 国产女主播在线一区二区| 中文字幕综合网| 天堂久久一区二区三区| 国产成人av一区二区三区在线| 99热这里都是精品| 91精品国产综合久久婷婷香蕉| 久久久久久夜精品精品免费| 亚洲欧洲精品一区二区三区不卡| 狠狠狠色丁香婷婷综合久久五月| 99精品久久只有精品| 欧美蜜桃一区二区三区| 国产三级一区二区三区| 亚洲制服丝袜一区| 国产老肥熟一区二区三区| 91久久奴性调教| 国产日韩欧美麻豆| 亚洲高清不卡在线| 不卡一区二区三区四区| 欧美tickle裸体挠脚心vk| 一区二区成人在线视频| 国产馆精品极品| 777亚洲妇女|