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

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

?? devcaps2.c

?? widows編程例題程序13-18章
?? 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一区二区三区免费野_久草精品视频
一区二区三区波多野结衣在线观看| 精品女同一区二区| 18成人在线观看| 一本到高清视频免费精品| 亚洲精品视频免费看| 欧美色精品天天在线观看视频| 五月天激情综合网| 日韩欧美区一区二| 国产精品一区在线| 国产精品动漫网站| 在线观看免费一区| 精品一区二区三区欧美| 欧美激情一区二区三区四区| 91丨九色丨国产丨porny| 亚洲电影在线播放| 久久婷婷成人综合色| 99久久精品免费看| 日韩在线观看一区二区| 久久久久久影视| 色久优优欧美色久优优| 美女国产一区二区三区| 国产精品美女一区二区三区| 精品视频一区三区九区| 国产又黄又大久久| 玉米视频成人免费看| 日韩欧美一区二区在线视频| 丰满放荡岳乱妇91ww| 亚洲1区2区3区4区| 国产欧美一区二区在线| 欧美日韩中文国产| 国产不卡在线播放| 五月天婷婷综合| 国产精品高清亚洲| 日韩精品一区二区三区swag| 一本一道综合狠狠老| 麻豆精品在线播放| 一区二区三区色| 久久久久国色av免费看影院| 欧美精品久久天天躁| 丁香婷婷综合色啪| 免费精品视频在线| 亚洲免费观看高清完整版在线| 欧美一区二区成人| 91网站在线观看视频| 激情综合色综合久久| 亚洲一区二区三区四区五区黄| 久久久久久久久久久久久女国产乱 | 色婷婷久久一区二区三区麻豆| 免费观看在线色综合| 亚洲精选视频在线| 中文字幕欧美日韩一区| 精品国产伦一区二区三区观看方式| 在线精品国精品国产尤物884a| 国产jizzjizz一区二区| 久草精品在线观看| 日韩综合小视频| 亚洲国产欧美日韩另类综合| 亚洲视频图片小说| 国产女人aaa级久久久级 | 日本韩国欧美一区二区三区| 国产精品亚洲专一区二区三区 | 奇米亚洲午夜久久精品| 亚洲四区在线观看| 国产精品剧情在线亚洲| 久久久午夜精品| 久久蜜桃一区二区| xf在线a精品一区二区视频网站| 91超碰这里只有精品国产| 欧美三片在线视频观看| 色香色香欲天天天影视综合网| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 色综合久久久久综合体| 99麻豆久久久国产精品免费优播| 国产不卡在线一区| 懂色av一区二区夜夜嗨| 国产91在线看| 成人免费视频一区二区| 成人深夜福利app| 丁香一区二区三区| 99精品视频在线免费观看| 99精品久久99久久久久| 91丨porny丨在线| 欧美在线不卡一区| 制服.丝袜.亚洲.中文.综合| 4438x成人网最大色成网站| 日韩欧美一区二区久久婷婷| 欧美成人一区二区三区片免费| 欧美一级生活片| 亚洲精品一区二区三区影院| 久久久青草青青国产亚洲免观| 国产亚洲精品aa| 日韩美女视频19| 亚洲一区二区在线视频| 奇米亚洲午夜久久精品| 国产传媒欧美日韩成人| 91视频一区二区三区| 欧美午夜精品久久久久久孕妇 | 国内久久精品视频| 不卡的av网站| 欧美中文一区二区三区| 日韩欧美国产一区二区三区| 久久久国产精品不卡| 日韩美女精品在线| 偷拍日韩校园综合在线| 国产专区欧美精品| bt7086福利一区国产| 欧美日韩电影在线播放| 久久午夜国产精品| 亚洲精品成a人| 美国十次综合导航| www.欧美色图| 这里是久久伊人| 欧美国产日韩一二三区| 亚洲成人av一区二区三区| 精品一区精品二区高清| 91蜜桃网址入口| 日韩午夜电影av| 国产精品久久99| 日韩av电影天堂| 成人免费va视频| 欧美一级午夜免费电影| 亚洲欧洲无码一区二区三区| 美腿丝袜亚洲色图| 色偷偷88欧美精品久久久| 精品久久久影院| 亚洲国产成人porn| 99热精品国产| 久久久久国产精品厨房| 午夜精品免费在线| k8久久久一区二区三区 | 国产精品一二三在| 欧美日韩亚洲综合| 国产精品日日摸夜夜摸av| 久久精品国产久精国产爱| 91行情网站电视在线观看高清版| 欧美成人一级视频| 亚洲无人区一区| 91在线观看地址| 国产日产欧美一区二区三区 | 久久在线观看免费| 午夜在线成人av| 91麻豆自制传媒国产之光| 久久综合色婷婷| 男人操女人的视频在线观看欧美| 色狠狠综合天天综合综合| 日本一区二区成人在线| 狠狠色狠狠色综合日日91app| 在线综合+亚洲+欧美中文字幕| 亚洲日本青草视频在线怡红院 | 色婷婷激情久久| 欧美国产1区2区| 麻豆视频一区二区| 欧美一区二区三区啪啪| 亚洲国产精品久久人人爱| 91久久精品一区二区| 亚洲欧美日韩系列| 不卡的av在线| 最新不卡av在线| 成人在线综合网站| 国产精品美女久久久久久2018 | 久久激情五月婷婷| 欧美福利视频一区| 亚洲成年人影院| 欧美日韩国产高清一区二区三区 | 国产精品短视频| 成人丝袜高跟foot| 亚洲国产精品传媒在线观看| 国产精华液一区二区三区| 日韩一区二区电影| 久久精品国产亚洲高清剧情介绍| 日韩欧美亚洲国产另类| 九九九精品视频| 久久久激情视频| 99在线热播精品免费| 中文字幕在线不卡视频| 色综合天天综合网天天狠天天| 国产精品久久久久久久第一福利| 成人黄色小视频| 亚洲日本在线看| 欧美亚洲免费在线一区| 亚洲男女一区二区三区| 欧美日韩亚洲另类| 热久久国产精品| 精品国产91洋老外米糕| 国产成人精品午夜视频免费| 国产女主播一区| 在线免费观看不卡av| 午夜成人免费视频| 精品久久久久一区二区国产| 粉嫩蜜臀av国产精品网站| 一区二区三区蜜桃网| 91精品国产综合久久精品图片| 精品一区二区三区av| 亚洲国产电影在线观看| 欧洲一区二区三区在线| 奇米精品一区二区三区在线观看| 国产午夜精品久久久久久久 | 成人h动漫精品一区二区| 一区二区三区四区国产精品| 欧美一卡二卡三卡|