亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美成人伊人久久综合网| 一区二区成人在线观看| 国产精品夫妻自拍| 亚洲一二三四区| 成人福利视频网站| 欧美一级视频精品观看| 亚洲美女视频在线观看| 国产一区二区伦理| 91精品国产91热久久久做人人| 欧美激情一区在线观看| 久久精品99国产精品日本| 色偷偷久久一区二区三区| 国产亚洲一二三区| 日本中文字幕一区二区视频 | 亚洲18色成人| 粉嫩在线一区二区三区视频| 日韩一区二区视频在线观看| 亚洲综合区在线| 波多野结衣亚洲一区| 欧美mv日韩mv| 麻豆精品新av中文字幕| 欧美性生活一区| 一区二区三区中文免费| 97精品久久久午夜一区二区三区 | 91精品国产91综合久久蜜臀| 亚洲黄色av一区| 99精品欧美一区二区三区小说 | 99精品一区二区三区| 久久久五月婷婷| 国产在线观看免费一区| 日韩欧美国产三级电影视频| 日韩二区三区四区| 777奇米四色成人影色区| 日韩精品电影在线观看| 69堂国产成人免费视频| 蜜臀久久99精品久久久久宅男| 欧美福利视频一区| 日韩高清一区在线| 欧美一区二区三区视频免费播放| 日本女优在线视频一区二区| 91超碰这里只有精品国产| 日本伊人午夜精品| 精品三级在线观看| 国产高清不卡二三区| 国产精品乱人伦中文| 色婷婷精品大视频在线蜜桃视频| 亚洲卡通欧美制服中文| 欧美麻豆精品久久久久久| 免费在线看一区| 精品福利一二区| 不卡一二三区首页| 亚洲精品国产a| 91精品国产高清一区二区三区 | 日日摸夜夜添夜夜添精品视频 | 欧美日韩成人综合| 日本不卡高清视频| 久久亚洲综合av| 91影视在线播放| 视频一区国产视频| 久久久久久亚洲综合影院红桃| 成人18视频日本| 视频一区视频二区中文| 国产婷婷色一区二区三区| 日本丶国产丶欧美色综合| 美女网站一区二区| 国产精品久久久久久久裸模| 欧美日韩精品一二三区| 国产一二三精品| 亚洲精品成人在线| 精品国产乱码久久久久久闺蜜| 成人三级伦理片| 日本视频中文字幕一区二区三区| 欧美精品一区二| 色吊一区二区三区| 久久99日本精品| 一区二区三区四区中文字幕| 欧美精品一区二区三| 色88888久久久久久影院按摩| 青青草视频一区| 亚洲日本欧美天堂| ww亚洲ww在线观看国产| 欧美午夜精品理论片a级按摩| 国产一区二区三区视频在线播放| 一区二区三区四区亚洲| 精品国偷自产国产一区| 欧亚一区二区三区| 成人激情黄色小说| 青青国产91久久久久久| 亚洲综合色网站| 亚洲区小说区图片区qvod| www国产成人| 在线不卡a资源高清| 99久久国产综合精品女不卡| 国产福利视频一区二区三区| 蜜桃久久久久久| 亚洲成va人在线观看| 亚洲欧洲精品一区二区三区不卡| 欧美成人国产一区二区| 欧美日韩国产免费一区二区| 色哟哟一区二区在线观看| 不卡的av网站| 福利91精品一区二区三区| 免费成人在线网站| 日韩vs国产vs欧美| 亚洲成人一区二区在线观看| 一区二区三区在线视频播放| 亚洲欧美日韩久久| 亚洲视频免费在线| 国产精品麻豆欧美日韩ww| 国产精品乱码久久久久久| 国产精品污www在线观看| 久久精品亚洲一区二区三区浴池| 欧美成人欧美edvon| 精品乱人伦小说| 337p日本欧洲亚洲大胆色噜噜| 欧美成人一级视频| 精品国产伦一区二区三区免费| 精品久久一区二区三区| 精品卡一卡二卡三卡四在线| 久久色中文字幕| 中文字幕第一区二区| 久久九九久久九九| 中文字幕精品—区二区四季| 亚洲三级在线看| 一二三区精品福利视频| 亚洲一二三区在线观看| 天天操天天干天天综合网| 美国欧美日韩国产在线播放| 久久国产视频网| 高清国产午夜精品久久久久久| 成人免费视频网站在线观看| 99久久久久免费精品国产| 色婷婷亚洲一区二区三区| 3d成人动漫网站| 久久夜色精品国产噜噜av| 国产精品萝li| 亚洲不卡在线观看| 美日韩一区二区三区| 粉嫩蜜臀av国产精品网站| 色av综合在线| 精品欧美黑人一区二区三区| 国产精品视频一二| 亚洲韩国一区二区三区| 喷水一区二区三区| 成人h动漫精品| 欧美三级视频在线| 久久嫩草精品久久久久| 中文字幕一区二区三区不卡| 亚洲成人午夜电影| 国产精一品亚洲二区在线视频| gogogo免费视频观看亚洲一| 欧美日韩一区不卡| 国产女人18毛片水真多成人如厕 | 亚洲另类一区二区| 日韩av一区二区在线影视| 国产不卡在线播放| 欧美日韩一区二区在线视频| 欧美成人综合网站| 亚洲综合在线视频| 激情综合一区二区三区| 色又黄又爽网站www久久| 久久综合五月天婷婷伊人| 亚洲精品成人少妇| 成人综合在线网站| 91精品国产一区二区| 日韩一区欧美一区| 狠狠色丁香婷综合久久| 精品视频一区二区不卡| 国产精品美女久久久久av爽李琼 | 欧美电视剧免费全集观看| 亚洲视频你懂的| 国产伦精品一区二区三区免费 | 一本色道久久综合亚洲91| 欧美mv和日韩mv的网站| 水蜜桃久久夜色精品一区的特点| 成人精品小蝌蚪| 精品女同一区二区| 日韩中文字幕区一区有砖一区| 91小宝寻花一区二区三区| 久久久精品天堂| 麻豆国产欧美日韩综合精品二区 | 亚洲一区二区美女| 91麻豆视频网站| 中文在线一区二区| 国产一区二区不卡| 欧美岛国在线观看| 天涯成人国产亚洲精品一区av| 色婷婷av久久久久久久| 日韩一区中文字幕| 懂色一区二区三区免费观看| 精品国产露脸精彩对白| 蜜桃av一区二区三区| 日韩欧美123| 蜜臀av一区二区三区| 日韩一区二区免费高清| 秋霞成人午夜伦在线观看| 91精品久久久久久蜜臀| 日韩精品每日更新| 欧美岛国在线观看| 国内外精品视频|