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

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

?? devcaps2.c

?? Programming Visual C++ 5th edition source code
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*------------------------------------------------------------------
   DEVCAPS2.C -- Displays Device Capability Information (Version 2)
                 (c) Charles Petzold, 1998
------------------------------------------------------------------*/

#include <windows.h>
#include "resource.h"

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
void DoBasicInfo    (HDC, HDC, int, int) ;
void DoOtherInfo    (HDC, HDC, int, int) ;
void DoBitCodedCaps (HDC, HDC, int, int, int) ;

typedef struct
{
     int     iMask ;
     TCHAR * szDesc ;
}
BITS ;

#define IDM_DEVMODE      1000

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("DevCaps2") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
     
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = szAppName ;
     wndclass.lpszClassName = szAppName ;
     
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateWindow (szAppName, NULL,
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
     
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
     
     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static TCHAR            szDevice[32], szWindowText[64] ;
     static int              cxChar, cyChar, nCurrentDevice = IDM_SCREEN,
                                             nCurrentInfo   = IDM_BASIC ;
     static DWORD            dwNeeded, dwReturned ;
     static PRINTER_INFO_4 * pinfo4 ;
     static PRINTER_INFO_5 * pinfo5 ;
     DWORD                   i ;
     HDC                     hdc, hdcInfo ;
     HMENU                   hMenu ;
     HANDLE                  hPrint ;
     PAINTSTRUCT             ps ;
     TEXTMETRIC              tm ;
     
     switch (message)
     {
     case WM_CREATE :
          hdc = GetDC (hwnd) ;
          SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;
          GetTextMetrics (hdc, &tm) ;
          cxChar = tm.tmAveCharWidth ;
          cyChar = tm.tmHeight + tm.tmExternalLeading ;
          ReleaseDC (hwnd, hdc) ;
                                           // fall through
     case WM_SETTINGCHANGE:
          hMenu = GetSubMenu (GetMenu (hwnd), 0) ;
          
          while (GetMenuItemCount (hMenu) > 1)
               DeleteMenu (hMenu, 1, MF_BYPOSITION) ;

               // Get a list of all local and remote printers
               // 
               // First, find out how large an array we need; this
               //   call will fail, leaving the required size in dwNeeded
               //
               // Next, allocate space for the info array and fill it
               // 
               // Put the printer names on the menu.

          if (GetVersion () & 0x80000000)         // Windows 98
          {
               EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 5, NULL, 
                             0, &dwNeeded, &dwReturned) ;

               pinfo5 = malloc (dwNeeded) ;

               EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 5, (PBYTE) pinfo5,
                             dwNeeded, &dwNeeded, &dwReturned) ;

               for (i = 0 ; i < dwReturned ; i++)
               {
                    AppendMenu (hMenu, (i+1) % 16 ? 0 : MF_MENUBARBREAK, i + 1, 
                                pinfo5[i].pPrinterName) ;
               }
               free (pinfo5) ;
          }
          else                                    // Windows NT
          {
               EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, NULL, 
                             0, &dwNeeded, &dwReturned) ;

               pinfo4 = malloc (dwNeeded) ;

               EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, (PBYTE) pinfo4,
                             dwNeeded, &dwNeeded, &dwReturned) ;

               for (i = 0 ; i < dwReturned ; i++)
               {
                    AppendMenu (hMenu, (i+1) % 16 ? 0 : MF_MENUBARBREAK, i + 1, 
                                pinfo4[i].pPrinterName) ;
               }
               free (pinfo4) ;
          }
          
          AppendMenu (hMenu, MF_SEPARATOR, 0, NULL) ;
          AppendMenu (hMenu, 0, IDM_DEVMODE, TEXT ("Properties")) ;
          
          wParam = IDM_SCREEN ;
                                             // fall through
     case WM_COMMAND :
          hMenu = GetMenu (hwnd) ;
          
          if (LOWORD (wParam) == IDM_SCREEN ||         // IDM_SCREEN & Printers
              LOWORD (wParam) < IDM_DEVMODE)       
          {
               CheckMenuItem (hMenu, nCurrentDevice, MF_UNCHECKED) ;
               nCurrentDevice = LOWORD (wParam) ;
               CheckMenuItem (hMenu, nCurrentDevice, MF_CHECKED) ;
          }
          else if (LOWORD (wParam) == IDM_DEVMODE)     // Properties selection
          {
               GetMenuString (hMenu, nCurrentDevice, szDevice,
                              sizeof (szDevice) / sizeof (TCHAR), MF_BYCOMMAND);
               
               if (OpenPrinter (szDevice, &hPrint, NULL))
               {
                    PrinterProperties (hwnd, hPrint) ;
                    ClosePrinter (hPrint) ;
               }
          }
          else                               // info menu items
          {
               CheckMenuItem (hMenu, nCurrentInfo, MF_UNCHECKED) ;
               nCurrentInfo = LOWORD (wParam) ;
               CheckMenuItem (hMenu, nCurrentInfo, MF_CHECKED) ;
          }
          InvalidateRect (hwnd, NULL, TRUE) ;
          return 0 ;
          
     case WM_INITMENUPOPUP :
          if (lParam == 0)
               EnableMenuItem (GetMenu (hwnd), IDM_DEVMODE,
                    nCurrentDevice == IDM_SCREEN ? MF_GRAYED : MF_ENABLED) ;
          return 0 ;
          
     case WM_PAINT :
          lstrcpy (szWindowText, TEXT ("Device Capabilities: ")) ;
          
          if (nCurrentDevice == IDM_SCREEN)
          {
               lstrcpy (szDevice, TEXT ("DISPLAY")) ;
               hdcInfo = CreateIC (szDevice, NULL, NULL, NULL) ;
          }
          else
          {
               hMenu = GetMenu (hwnd) ;
               GetMenuString (hMenu, nCurrentDevice, szDevice,
                              sizeof (szDevice), MF_BYCOMMAND) ;
               hdcInfo = CreateIC (NULL, szDevice, NULL, NULL) ;
          }
          
          lstrcat (szWindowText, szDevice) ;
          SetWindowText (hwnd, szWindowText) ;
          
          hdc = BeginPaint (hwnd, &ps) ;
          SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;
          
          if (hdcInfo)
          {
               switch (nCurrentInfo)
               {
               case IDM_BASIC :
                    DoBasicInfo (hdc, hdcInfo, cxChar, cyChar) ;
                    break ;
                    
               case IDM_OTHER :
                    DoOtherInfo (hdc, hdcInfo, cxChar, cyChar) ;
                    break ;
                    
               case IDM_CURVE :
               case IDM_LINE :
               case IDM_POLY :
               case IDM_TEXT :
                    DoBitCodedCaps (hdc, hdcInfo, cxChar, cyChar,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区不卡| 欧美日韩成人高清| 久久久久综合网| 国产成人精品三级| 亚洲欧美中日韩| 91久久精品国产91性色tv| 一区二区三区**美女毛片| 精品婷婷伊人一区三区三| 亚洲成人av一区| 精品国产免费一区二区三区四区| 日韩电影在线看| 久久精品欧美一区二区三区麻豆| 成人综合在线视频| 亚洲综合色婷婷| 欧美一区二区三区成人| 国产一区福利在线| 中文字幕一区二区三区不卡 | 日本久久一区二区三区| 亚洲3atv精品一区二区三区| 欧美一区二区三区在线观看 | 免费成人深夜小野草| 久久综合一区二区| 91免费小视频| 九色综合狠狠综合久久| 亚洲图片激情小说| 日韩一级视频免费观看在线| 成人免费视频一区| 午夜精品影院在线观看| 久久九九99视频| 欧美美女一区二区在线观看| 国产风韵犹存在线视精品| 一区二区三区四区在线免费观看| 69av一区二区三区| jizzjizzjizz欧美| 捆绑变态av一区二区三区| 成人欧美一区二区三区1314| 日韩欧美一区二区视频| 色伊人久久综合中文字幕| 国产综合一区二区| 亚洲一区在线播放| 国产精品丝袜一区| 欧美大片在线观看一区二区| 一本大道久久a久久精品综合| 精品亚洲aⅴ乱码一区二区三区| 亚洲免费电影在线| 久久精品人人做人人爽97| 欧美日韩国产大片| 99久久99精品久久久久久 | 亚洲欧洲国产日本综合| 日韩女优电影在线观看| 欧美专区在线观看一区| 成人免费视频app| 韩国一区二区视频| 亚州成人在线电影| 亚洲人成7777| 亚洲国产成人午夜在线一区 | 91黄色小视频| 成人性生交大合| 激情欧美一区二区| 日韩国产精品大片| 色成人在线视频| 一区二区三区在线免费视频| 国产片一区二区三区| 欧美一区三区四区| 欧美日韩一区二区不卡| 一本大道久久a久久精二百| 成人一区二区三区视频| 国产精品一区二区久激情瑜伽| 免费av成人在线| 无码av免费一区二区三区试看| 亚洲美女屁股眼交| 亚洲天堂免费在线观看视频| 中文字幕五月欧美| 18成人在线视频| 国产精品免费视频网站| 日本一二三不卡| 亚洲国产高清在线| 国产精品青草综合久久久久99| 久久久久久毛片| 国产午夜亚洲精品羞羞网站| 亚洲精品一区二区三区四区高清| 日韩欧美在线综合网| 欧美成人精品福利| 久久久久久久久久久黄色| 久久伊人中文字幕| 日本一区二区视频在线| 中文字幕免费一区| 中文字幕亚洲在| 亚洲裸体在线观看| 亚洲一二三专区| 日韩国产欧美在线视频| 久久国产福利国产秒拍| 国产一区视频网站| av一区二区不卡| 色综合中文字幕国产| 欧美高清www午色夜在线视频| 欧美亚洲动漫另类| 欧美一级欧美三级| 欧美精品一区视频| 国产蜜臀av在线一区二区三区| 中文字幕在线免费不卡| 亚洲综合丝袜美腿| 麻豆传媒一区二区三区| 国产在线国偷精品产拍免费yy| 成人美女在线视频| 欧美亚洲免费在线一区| 日韩欧美一级二级| 国产精品久久久久久久久免费丝袜| 亚洲裸体xxx| 久久99在线观看| 91日韩精品一区| 欧美一级在线观看| 国产精品乱码一区二区三区软件| 亚洲欧美另类久久久精品| 婷婷一区二区三区| 成人精品视频一区| 91精品在线免费观看| 亚洲国产电影在线观看| 亚洲宅男天堂在线观看无病毒| 九九精品一区二区| 在线中文字幕一区二区| 欧美精品一区二区三区一线天视频| 欧美国产1区2区| 日韩一区精品字幕| 成人福利视频在线| 精品乱人伦小说| 一区二区三区成人| 国产不卡视频在线播放| 欧美片网站yy| 一色屋精品亚洲香蕉网站| 蜜芽一区二区三区| 91福利小视频| 国产日产亚洲精品系列| 日本aⅴ精品一区二区三区| 99精品久久只有精品| 日韩精品一区二区三区在线观看 | 亚洲国产精品一区二区久久| 亚洲精品视频免费观看| 精品一区二区三区av| 在线精品观看国产| 欧美国产日产图区| 久久超碰97中文字幕| 精品视频色一区| 中文字幕在线一区免费| 精品一区二区三区在线视频| 欧美在线短视频| 亚洲私人黄色宅男| 国产乱子轮精品视频| 在线综合+亚洲+欧美中文字幕| 亚洲嫩草精品久久| 国产高清不卡二三区| 日韩欧美色综合网站| 日韩精品视频网| 欧美在线观看视频一区二区三区 | 亚洲激情自拍偷拍| 成人av网站在线| 国产欧美一区二区精品久导航 | 韩国一区二区三区| 欧美一区2区视频在线观看| 亚洲高清视频在线| 91成人在线观看喷潮| 亚洲人成亚洲人成在线观看图片| 成人免费毛片嘿嘿连载视频| 久久久99精品久久| 国产精品一二三在| 久久精品视频在线免费观看| 国模无码大尺度一区二区三区| 日韩欧美国产精品一区| 免费成人在线视频观看| 欧美一级黄色录像| 蜜桃一区二区三区四区| 日韩欧美一二区| 精品一区二区在线播放| 久久网站最新地址| 高清在线不卡av| 国产精品欧美久久久久无广告| 夫妻av一区二区| 1区2区3区精品视频| 色94色欧美sute亚洲线路一久| 一区二区三区四区不卡在线| 日本韩国欧美在线| 亚洲va天堂va国产va久| 91精品国产色综合久久不卡蜜臀| 奇米一区二区三区av| 精品国产sm最大网站| 国产福利一区二区三区视频| 国产网红主播福利一区二区| 成人午夜激情影院| 亚洲人成电影网站色mp4| 欧美性一区二区| 蜜臀99久久精品久久久久久软件| 亚洲精品一区二区三区影院| 从欧美一区二区三区| 亚洲综合色视频| 欧美一区二区精品| 成人av手机在线观看| 首页亚洲欧美制服丝腿| 国产丝袜美腿一区二区三区| 91免费视频网址| 蜜臀av一级做a爰片久久|