求大神帮帮忙

原创 2012年08月18日 11:24:27

/*---------------------------------------------------------
   DEVCAPS1.C -- Device Capabilities Display Program No. 1
                 (c) Charles Petzold, 1998
  ---------------------------------------------------------*/

#include <windows.h>

#define NUMLINES ((int) (sizeof devcaps / sizeof devcaps [0]))

struct
{
     int     iIndex ;
     TCHAR * szLabel ;
     TCHAR * szDesc ;
}
devcaps [] =
{
     HORZSIZE,      TEXT ("HORZSIZE"),     TEXT ("Width in millimeters:"),
     VERTSIZE,      TEXT ("VERTSIZE"),     TEXT ("Height in millimeters:"),
     HORZRES,       TEXT ("HORZRES"),      TEXT ("Width in pixels:"),
     VERTRES,       TEXT ("VERTRES"),      TEXT ("Height in raster lines:"),
     BITSPIXEL,     TEXT ("BITSPIXEL"),    TEXT ("Color bits per pixel:"),
     PLANES,        TEXT ("PLANES"),       TEXT ("Number of color planes:"),
     NUMBRUSHES,    TEXT ("NUMBRUSHES"),   TEXT ("Number of device brushes:"),
     NUMPENS,       TEXT ("NUMPENS"),      TEXT ("Number of device pens:"),
     NUMMARKERS,    TEXT ("NUMMARKERS"),   TEXT ("Number of device markers:"),
     NUMFONTS,      TEXT ("NUMFONTS"),     TEXT ("Number of device fonts:"),
     NUMCOLORS,     TEXT ("NUMCOLORS"),    TEXT ("Number of device colors:"),
     PDEVICESIZE,   TEXT ("PDEVICESIZE"),  TEXT ("Size of device structure:"),
     ASPECTX,       TEXT ("ASPECTX"),      TEXT ("Relative width of pixel:"),
     ASPECTY,       TEXT ("ASPECTY"),      TEXT ("Relative height of pixel:"),
     ASPECTXY,      TEXT ("ASPECTXY"),     TEXT ("Relative diagonal of pixel:"),
     LOGPIXELSX,    TEXT ("LOGPIXELSX"),   TEXT ("Horizontal dots per inch:"),
     LOGPIXELSY,    TEXT ("LOGPIXELSY"),   TEXT ("Vertical dots per inch:"),
     SIZEPALETTE,   TEXT ("SIZEPALETTE"),  TEXT ("Number of palette entries:"),
     NUMRESERVED,   TEXT ("NUMRESERVED"),  TEXT ("Reserved palette entries:"),
     COLORRES,      TEXT ("COLORRES"),     TEXT ("Actual color resolution:")
} ;

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("DevCaps1") ;
     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  = NULL ;
     wndclass.lpszClassName = szAppName ;
    
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
    
     hwnd = CreateWindow (szAppName, TEXT ("Device Capabilities"),
                          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 int  cxChar, cxCaps, cyChar ;
     TCHAR       szBuffer[10] ;
     HDC         hdc ;
     int         i ;
     PAINTSTRUCT ps ;
     TEXTMETRIC  tm ;
    
     switch (message)
     {
     case WM_CREATE:
          hdc = GetDC (hwnd) ;
         
          GetTextMetrics (hdc, &tm) ;
          cxChar = tm.tmAveCharWidth ;
          cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;
          cyChar = tm.tmHeight + tm.tmExternalLeading ;
         
          ReleaseDC (hwnd, hdc) ;
          return 0 ;
         
     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;
         
          for (i = 0 ; i < NUMLINES ; i++)
          {
               TextOut (hdc, 0, cyChar * i,
                        devcaps[i].szLabel,
                        lstrlen (devcaps[i].szLabel)) ;
              
               TextOut (hdc, 14 * cxCaps, cyChar * i,
                        devcaps[i].szDesc,
                        lstrlen (devcaps[i].szDesc)) ;
              
               SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;
              
               TextOut (hdc, 14 * cxCaps + 35 * cxChar, cyChar * i, szBuffer,
                        wsprintf (szBuffer, TEXT ("%5d"),
                             GetDeviceCaps (hdc, devcaps[i].iIndex))) ;
              
               SetTextAlign (hdc, TA_LEFT | TA_TOP) ;
          }
         
          EndPaint (hwnd, &ps) ;
          return 0 ;
         
     case WM_DESTROY:
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}
下面的这段程序是什么意思:

 static int  cxChar, cxCaps, cyChar ;
     TCHAR       szBuffer[10] ;
     HDC         hdc ;
     int         i ;
     PAINTSTRUCT ps ;
     TEXTMETRIC  tm ;
    
     switch (message)
     {
     case WM_CREATE:
          hdc = GetDC (hwnd) ;
         
          GetTextMetrics (hdc, &tm) ;
          cxChar = tm.tmAveCharWidth ;
          cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;
          cyChar = tm.tmHeight + tm.tmExternalLeading ;
         
          ReleaseDC (hwnd, hdc) ;
          return 0 ;
         
     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;
         
          for (i = 0 ; i < NUMLINES ; i++)
          {
               TextOut (hdc, 0, cyChar * i,
                        devcaps[i].szLabel,
                        lstrlen (devcaps[i].szLabel)) ;
              
               TextOut (hdc, 14 * cxCaps, cyChar * i,
                        devcaps[i].szDesc,
                        lstrlen (devcaps[i].szDesc)) ;
              
               SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;
              
               TextOut (hdc, 14 * cxCaps + 35 * cxChar, cyChar * i, szBuffer,
                        wsprintf (szBuffer, TEXT ("%5d"),
                             GetDeviceCaps (hdc, devcaps[i].iIndex))) ;
              
               SetTextAlign (hdc, TA_LEFT | TA_TOP) ;
          }
          
                    
求解释(case 语句除外)

例题4-6 师兄帮帮忙 UVa12412

例题4-6 师兄帮帮忙 UVa12412 感悟。 1、阅读书中题目,从网站下载英文原题,重点在看输出数据与格式。 2、开始编码,先搭函数框架,具体功能实现,待主体框架打好后,再进行。 3、程序测试比...
  • mrcrack
  • mrcrack
  • 2016年10月19日 13:36
  • 673

java大神的成神之路

一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=13...
  • liu136313
  • liu136313
  • 2015年12月20日 22:32
  • 1667

hdu 4506 小明系列故事——师兄帮帮忙(快速幂)

小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To...
  • u010527492
  • u010527492
  • 2013年07月22日 14:00
  • 420

大神们帮帮忙,launcher桌面UI的问题

桌面图标刚进入的时候是下图所示: 当选中之后,图中的圆圈和数据会被挡住,如下图所示: 图中显示圆圈和数据的控件是放在另外一个XML文件(layout_memory.xml)里面的,代码如下...
  • yaojuanmu2785
  • yaojuanmu2785
  • 2016年12月31日 03:51
  • 56

大神们帮帮忙,launcher桌面UI的问题

桌面图标刚进入的时候是下图所示: 当选中之后,图中的圆圈和数据会被挡住,如下图所示: 图中显示圆圈和数据的控件是放在另外一个XML文件(layout_memory.xml)里面的,代码如下...
  • meisuozheng2203
  • meisuozheng2203
  • 2017年01月01日 02:35
  • 77

机器学习方向的一些专家大神

李航:http://research.microsoft.com/en-us/people/hangli/,是MSRA Web Search and Mining Group高级研究员和主管,主要研究...
  • bu2013
  • bu2013
  • 2016年06月21日 21:23
  • 691

Vim 配置(整合网上大神的内容)

工欲善其事必先利其器,在Linux中开发,用vim是很推荐的。 如果更换得使用vim,使其用上去跟IDE一般顺手呢,下面是 借鉴了网上各位大神的推荐,经过整合后的内容。希望帮到大家。 首先你要下...
  • Lin00Kun11
  • Lin00Kun11
  • 2015年07月10日 15:42
  • 1118

iOS大神牛人的博客集合

王巍的博客:王巍目前在日本横滨任职于LINE。工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发。他的陈列柜中已有多款应用,其中番茄工作法工具非常棒。 http://onevca...
  • yutaotst
  • yutaotst
  • 2016年06月17日 15:47
  • 1068

Android 开发--CSDN博客大神汇总

转 http://blog.csdn.net/zhaokaiqiang1992/article/details/43731967本篇文章主要纪录我在学习过程中,发现的非常给力的CSDNBlog和个人...
  • llp1992
  • llp1992
  • 2015年02月12日 20:26
  • 14799

大神手册:优秀的iOS开发站点

工欲善其事必先利其器,每一次的惊叹背后都有不为人知的努力。分享和共赢,是开源的精神所在。感谢那些开诚布公,乐于助人的程序员们。从优秀到卓越,我们需要不停地向他人学习。 国内优秀的iOS网站国...
  • qq_30513483
  • qq_30513483
  • 2016年08月09日 10:51
  • 1022
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求大神帮帮忙
举报原因:
原因补充:

(最多只允许输入30个字)