spongebobyey 发表于 2019-10-9 08:01:44

获取设备尺寸

本帖最后由 spongebobyey 于 2019-10-9 08:05 编辑

设置结构体#define NUMBERLINES (int)(sizeof(Sysmetrics)/sizeof(Sysmetrics))
struct
{
    intiIndex;
        TCHAR *szLabel;
        TCHAR *szDesc;
}Sysmetrics[]=
{
SM_CMOUSEBUTTONS,TEXT("SM_CMOUSEBUTTONS"),
                   TEXT("arranged minimized windows"),
SM_CMONITORS,    TEXT("SM_CMONITORS"),
                                   TEXT("The number of display monitors on a desktop")
};

结构体中的值在GetSystemMetrics()函数中可以找到
在WINDPROC 中定义的局部变量

    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    size_t iTarget;
    int i;

    TEXTMETRIC tm;
    static int cxChar,cyChar,cxCaps;


设置字符的宽度,高度,大写宽度
       
case WM_CREATE:
      hdc=GetDC(hWnd);
      
        GetTextMetrics(hdc,&tm);

      cxChar=tm.tmAveCharWidth;
        cyChar=tm.tmHeight+tm.tmExternalLeading;
        cxCaps=(tm.tmPitchAndFamily &1 ?3:2)*cxChar/2;

      ReleaseDC(hWnd,hdc);
        return 0;
break;

打印代码
       
        case WM_PAINT:
                hdc = BeginPaint(hWnd, &ps);

                for(i=0;i<NUMBERLINES;i++)
                {
                        StringCchLength(Sysmetrics.szLabel,1024,&iTarget);
                        TextOut(hdc,0,cyChar*i,Sysmetrics.szLabel,iTarget);

                        StringCchLength(Sysmetrics.szDesc,1024,&iTarget);
                        TextOut(hdc,22*cxCaps,cyChar*i,Sysmetrics.szDesc,iTarget);
   
                        SetTextAlign(hdc,TA_RIGHT |TA_TOP);
                        StringCchPrintf(szBuffer,10,TEXT("%5d"),GetSystemMetrics(Sysmetrics.iIndex));
                        StringCchLength(szBuffer,10,&iTarget);
                        TextOut(hdc,22*cxCaps+50*cxChar,cyChar*i,szBuffer,iTarget);

                        SetTextAlign(hdc,TA_LEFT|TA_TOP);
                }

                EndPaint(hWnd, &ps);
        break;

lh1996 发表于 2019-10-9 08:23:52

看看学习一下
页: [1]
查看完整版本: 获取设备尺寸