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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cmnhdr.h

?? Windows via C/C++, Fifth Edition圖書源代碼
?? H
字號(hào):
/******************************************************************************
Module:  CmnHdr.h
Notices: Copyright (c) 2008 Jeffrey Richter & Christophe Nasarre
Purpose: Common header file containing handy macros and definitions
         used throughout all the applications in the book.
         See Appendix A.
******************************************************************************/


#pragma once   // Include this header file once per compilation unit


//////////////////////// Windows Version Build Option /////////////////////////


// = 0x0600 for VISTA level from sdkddkver.h
#define _WIN32_WINNT _WIN32_WINNT_LONGHORN 
#define WINVER       _WIN32_WINNT_LONGHORN 


//////////////////////////// Unicode Build Option /////////////////////////////


// Always compiler using Unicode.
#ifndef UNICODE
	#define UNICODE
#endif

// When using Unicode Windows functions, use Unicode C-Runtime functions too.
#ifdef UNICODE
   #ifndef _UNICODE
      #define _UNICODE
   #endif
#endif


///////////////////////// Include Windows Definitions /////////////////////////

#pragma warning(push, 3)
#include <Windows.h>
#pragma warning(pop) 
#pragma warning(push, 4)
#include <CommCtrl.h>
#include <process.h>       // For _beginthreadex


///////////// Verify that the proper header files are being used //////////////


#ifndef FILE_SKIP_COMPLETION_PORT_ON_SUCCESS
#pragma message("You are not using the latest Platform SDK header/library ")
#pragma message("files. This may prevent the project from building correctly.")
#endif


////////////// Allow code to compile cleanly at warning level 4 ///////////////


/* nonstandard extension 'single line comment' was used */
#pragma warning(disable:4001)

// unreferenced formal parameter
#pragma warning(disable:4100)

// Note: Creating precompiled header 
#pragma warning(disable:4699)

// function not inlined
#pragma warning(disable:4710)

// unreferenced inline function has been removed
#pragma warning(disable:4514)

// assignment operator could not be generated
#pragma warning(disable:4512)

// conversion from 'LONGLONG' to 'ULONGLONG', signed/unsigned mismatch
#pragma warning(disable:4245)

// 'type cast' : conversion from 'LONG' to 'HINSTANCE' of greater size
#pragma warning(disable:4312)

// 'argument' : conversion from 'LPARAM' to 'LONG', possible loss of data
#pragma warning(disable:4244)

// 'wsprintf': name was marked as #pragma deprecated
#pragma warning(disable:4995)

// unary minus operator applied to unsigned type, result still unsigned
#pragma warning(disable:4146)

// 'argument' : conversion from 'size_t' to 'int', possible loss of data
#pragma warning(disable:4267)

// nonstandard extension used : nameless struct/union
#pragma warning(disable:4201)

///////////////////////// Pragma message helper macro /////////////////////////


/* 
When the compiler sees a line like this:
   #pragma chMSG(Fix this later)

it outputs a line like this:

  c:\CD\CmnHdr.h(82):Fix this later

You can easily jump directly to this line and examine the surrounding code.
*/

#define chSTR2(x) #x
#define chSTR(x)  chSTR2(x)
#define chMSG(desc) message(__FILE__ "(" chSTR(__LINE__) "):" #desc)


////////////////////////////// chINRANGE Macro ////////////////////////////////


// This macro returns TRUE if a number is between two others
#define chINRANGE(low, Num, High) (((low) <= (Num)) && ((Num) <= (High)))



///////////////////////////// chSIZEOFSTRING Macro ////////////////////////////


// This macro evaluates to the number of bytes needed by a string.
#define chSIZEOFSTRING(psz)   ((lstrlen(psz) + 1) * sizeof(TCHAR))



/////////////////// chROUNDDOWN & chROUNDUP inline functions //////////////////


// This inline function rounds a value down to the nearest multiple
template <class TV, class TM>
inline TV chROUNDDOWN(TV Value, TM Multiple) {
   return((Value / Multiple) * Multiple);
}


// This inline function rounds a value down to the nearest multiple
template <class TV, class TM>
inline TV chROUNDUP(TV Value, TM Multiple) {
   return(chROUNDDOWN(Value, Multiple) + 
      (((Value % Multiple) > 0) ? Multiple : 0));
}



///////////////////////////// chBEGINTHREADEX Macro ///////////////////////////


// This macro function calls the C runtime's _beginthreadex function. 
// The C runtime library doesn't want to have any reliance on Windows' data 
// types such as HANDLE. This means that a Windows programmer needs to cast
// values when using _beginthreadex. Since this is terribly inconvenient, 
// I created this macro to perform the casting.
typedef unsigned (__stdcall *PTHREAD_START) (void *);

#define chBEGINTHREADEX(psa, cbStackSize, pfnStartAddr, \
   pvParam, dwCreateFlags, pdwThreadId)                 \
      ((HANDLE)_beginthreadex(                          \
         (void *)        (psa),                         \
         (unsigned)      (cbStackSize),                 \
         (PTHREAD_START) (pfnStartAddr),                \
         (void *)        (pvParam),                     \
         (unsigned)      (dwCreateFlags),               \
         (unsigned *)    (pdwThreadId)))


////////////////// DebugBreak Improvement for x86 platforms ///////////////////


#ifdef _X86_
   #define DebugBreak()    _asm { int 3 }
#endif


/////////////////////////// Software Exception Macro //////////////////////////


// Useful macro for creating your own software exception codes
#define MAKESOFTWAREEXCEPTION(Severity, Facility, Exception) \
   ((DWORD) ( \
   /* Severity code    */  (Severity       ) |     \
   /* MS(0) or Cust(1) */  (1         << 29) |     \
   /* Reserved(0)      */  (0         << 28) |     \
   /* Facility code    */  (Facility  << 16) |     \
   /* Exception code   */  (Exception <<  0)))


/////////////////////////// Quick MessageBox Macro ////////////////////////////


inline void chMB(PCSTR szMsg) {
   char szTitle[MAX_PATH];
   GetModuleFileNameA(NULL, szTitle, _countof(szTitle));
   MessageBoxA(GetActiveWindow(), szMsg, szTitle, MB_OK);
}


//////////////////////////// Assert/Verify Macros /////////////////////////////


inline void chFAIL(PSTR szMsg) {
   chMB(szMsg);
   DebugBreak();
}


// Put up an assertion failure message box.
inline void chASSERTFAIL(LPCSTR file, int line, PCSTR expr) {
   char sz[2*MAX_PATH];
   wsprintfA(sz, "File %s, line %d : %s", file, line, expr);
   chFAIL(sz);
}


// Put up a message box if an assertion fails in a debug build.
#ifdef _DEBUG
   #define chASSERT(x) if (!(x)) chASSERTFAIL(__FILE__, __LINE__, #x)
#else
   #define chASSERT(x)
#endif


// Assert in debug builds, but don't remove the code in retail builds.
#ifdef _DEBUG
   #define chVERIFY(x) chASSERT(x)
#else
   #define chVERIFY(x) (x)
#endif


/////////////////////////// chHANDLE_DLGMSG Macro /////////////////////////////


// The normal HANDLE_MSG macro in WindowsX.h does not work properly for dialog
// boxes because DlgProc returns a BOOL instead of an LRESULT (like
// WndProcs). This chHANDLE_DLGMSG macro corrects the problem:
#define chHANDLE_DLGMSG(hWnd, message, fn)                 \
   case (message): return (SetDlgMsgResult(hWnd, uMsg,     \
      HANDLE_##message((hWnd), (wParam), (lParam), (fn))))


//////////////////////// Dialog Box Icon Setting Macro ////////////////////////


// Sets the dialog box icons
inline void chSETDLGICONS(HWND hWnd, int idi) {
   SendMessage(hWnd, WM_SETICON, ICON_BIG,  (LPARAM) 
      LoadIcon((HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE), 
         MAKEINTRESOURCE(idi)));
   SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM) 
      LoadIcon((HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE), 
      MAKEINTRESOURCE(idi)));
}
    

/////////////////////////// Common Linker Settings ////////////////////////////


#pragma comment(linker, "/nodefaultlib:oldnames.lib")

// Needed for supporting XP/Vista styles.
#if defined(_M_IA64)
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='IA64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#if defined(_M_X64)
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.6000.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#if defined(M_IX86)
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif


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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣91| 最新日韩在线视频| 盗摄精品av一区二区三区| 亚洲综合在线视频| 久久人人爽爽爽人久久久| 91免费看视频| 国产成人午夜精品5599| 五月婷婷激情综合| 中文字幕在线视频一区| 日韩视频国产视频| 在线免费观看成人短视频| 国产成人8x视频一区二区| 日韩高清一级片| 一区二区三区 在线观看视频| 久久久久国产精品麻豆ai换脸| 911国产精品| 久久影院视频免费| 成人黄色免费短视频| 日本欧美在线看| 亚洲人成小说网站色在线| 色狠狠色噜噜噜综合网| 国产精品正在播放| 日本成人在线电影网| 亚洲色大成网站www久久九九| 欧美成人a∨高清免费观看| 在线观看网站黄不卡| 国产成人亚洲综合a∨婷婷图片| 日韩中文欧美在线| 亚洲日本欧美天堂| 国产精品丝袜一区| 精品国产凹凸成av人导航| 欧美日韩aaaaaa| 在线中文字幕不卡| av高清久久久| 国产91色综合久久免费分享| 精品一区二区免费视频| 日本少妇一区二区| 亚洲国产成人av| 一区二区高清免费观看影视大全| 久久久久久麻豆| 日本韩国精品在线| 色综合久久中文字幕| 不卡免费追剧大全电视剧网站| 国产一区999| 精品一区二区三区在线观看国产| 免费精品视频在线| 日本欧美肥老太交大片| 性久久久久久久| 亚洲第一在线综合网站| 一区二区国产视频| 亚洲一区免费观看| 亚洲午夜久久久久久久久电影院| 亚洲男人天堂av| 亚洲精品乱码久久久久久黑人| 一区免费观看视频| 亚洲视频综合在线| 亚洲欧美国产三级| 亚洲精品免费电影| 亚洲一区二区成人在线观看| 亚洲国产一区在线观看| 亚洲超丰满肉感bbw| 亚洲福利视频导航| 亚洲成人一区在线| 久久er99热精品一区二区| 久久99国产精品免费网站| 国产最新精品免费| 成人丝袜视频网| 色综合久久久久网| 欧美日韩美少妇| 欧美一级午夜免费电影| 精品人在线二区三区| 久久久99免费| 国产精品久久久99| 一区二区免费视频| 石原莉奈一区二区三区在线观看 | 国产精品久久久久桃色tv| 中文乱码免费一区二区| 亚洲裸体xxx| 亚洲成人免费在线| 天天综合日日夜夜精品| 日韩av电影免费观看高清完整版 | 国产福利一区在线观看| 丁香激情综合国产| 91福利视频在线| 亚洲精品一区二区三区精华液| 中文在线资源观看网站视频免费不卡| 国产精品高清亚洲| 午夜亚洲福利老司机| 久久www免费人成看片高清| 国产精品白丝jk白祙喷水网站 | 日韩一区二区在线观看视频播放| 欧美精品一区二区精品网| 国产精品天天看| 亚洲在线视频免费观看| 精品一区二区三区免费播放| 99久久免费视频.com| 欧美乱妇一区二区三区不卡视频| 久久综合久久久久88| 亚洲精品免费在线观看| 国产在线不卡视频| 日本精品视频一区二区| 久久日韩精品一区二区五区| 亚洲免费高清视频在线| 激情久久久久久久久久久久久久久久| 色综合色综合色综合| 日韩亚洲欧美成人一区| 亚洲欧美一区二区三区极速播放| 久久精品国产一区二区三| 一本久久a久久精品亚洲| 久久伊人中文字幕| 亚洲国产精品尤物yw在线观看| 国产精品一区专区| 91最新地址在线播放| 欧美一卡二卡在线观看| 综合网在线视频| 国产在线播放一区三区四| 欧美人xxxx| 亚洲女与黑人做爰| 激情都市一区二区| 制服丝袜日韩国产| 一区二区三区在线视频观看58| 国产精品夜夜嗨| 日韩精品一区二区三区视频播放 | 欧美美女视频在线观看| 自拍偷在线精品自拍偷无码专区| 久久99久久久久| 欧美日韩一区不卡| 国产精品国产三级国产aⅴ中文 | 免费观看30秒视频久久| 欧美性猛片xxxx免费看久爱| 国产精品国产精品国产专区不蜜| 国产在线精品一区二区不卡了 | 欧美唯美清纯偷拍| 国产精品国产自产拍高清av| 国产剧情av麻豆香蕉精品| 91精品国产综合久久精品图片| 亚洲精品成人悠悠色影视| 豆国产96在线|亚洲| 久久亚洲综合av| 美洲天堂一区二卡三卡四卡视频| 欧美三级乱人伦电影| 一区二区三区久久久| 一本一道久久a久久精品| 亚洲免费观看高清完整| 成人av在线影院| 国产精品久久久久久久岛一牛影视| 国产精品888| 久久综合九色综合欧美亚洲| 经典三级一区二区| 精品裸体舞一区二区三区| 蜜桃久久精品一区二区| 欧美日韩国产精品自在自线| 亚洲午夜久久久久久久久久久 | 91色|porny| 亚洲天堂中文字幕| 一本色道久久综合狠狠躁的推荐| 亚洲免费高清视频在线| 欧美中文字幕亚洲一区二区va在线| 亚洲视频狠狠干| 色国产综合视频| 亚洲精品国产高清久久伦理二区 | 欧美日韩在线一区二区| 亚洲成人一区在线| 欧美日韩成人在线| 日韩不卡免费视频| 日韩精品一区二区三区视频| 婷婷久久综合九色综合绿巨人| 欧美精品第一页| 轻轻草成人在线| 久久久亚洲午夜电影| 成人性色生活片免费看爆迷你毛片| 国产精品久久777777| 91国在线观看| 日本亚洲一区二区| 久久久精品人体av艺术| av电影天堂一区二区在线观看| 亚洲男人的天堂在线观看| 在线观看不卡一区| 男人的天堂久久精品| 国产午夜久久久久| 色综合亚洲欧洲| 日本免费新一区视频| 26uuu欧美| 91蜜桃视频在线| 婷婷综合另类小说色区| 26uuu国产电影一区二区| 99热国产精品| 日本不卡一二三| 国产欧美视频一区二区三区| 日本二三区不卡| 日本va欧美va精品发布| 欧美激情在线一区二区| 91蜜桃视频在线| 五月天婷婷综合| 国产日产欧美精品一区二区三区| 欧美日本免费一区二区三区| 久久国产三级精品| 亚洲男帅同性gay1069| 日韩欧美一二三| 色婷婷综合久久|