Windows Mobile 编程 (Win32) - 获取设备能力

《Windows 程序设计》第五章重点讲述图形基础。首先一个示例代码是获取设备描述表信息。代码与Windows Mobile 编程 (Win32) - 输出文本中的代码类似。

#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, LPTSTR lpCmdLine, int nCmdShow)
{static TCHAR szAppName[] = TEXT("DevCaps1");HWND     hwnd;MSG      msg;WNDCLASS wc;ZeroMemory(&wc, sizeof(wc));wc.style         = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc   = WndProc;wc.hInstance     = hInstance;wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wc.lpszClassName = szAppName;if (!RegisterClass(&wc)){MessageBox(NULL, TEXT("RegisterClass() failed!"), szAppName, MB_ICONERROR);return 0;}hwnd = CreateWindow(szAppName, TEXT("Device Capabilities"),WS_OVERLAPPED | WS_SYSMENU,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL);if (hwnd == NULL){MessageBox(NULL, TEXT("CreateWindow() failed!"), szAppName, MB_ICONERROR);return 0;}ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);while(GetMessage(&msg, NULL, 0, 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++){ExtTextOut(hdc, 0, cyChar * i, 0, NULL,devcaps[i].szDesc,lstrlen(devcaps[i].szDesc),NULL);SetTextAlign(hdc, TA_RIGHT | TA_TOP);ExtTextOut(hdc, cxChar * 47, cyChar * i, 0, NULL,szBuffer,wsprintf(szBuffer, TEXT("%5d"), GetDeviceCaps(hdc, devcaps[i].iIndex)),NULL);SetTextAlign (hdc, TA_LEFT | TA_TOP) ;}EndPaint(hwnd, &ps);return 0;case WM_DESTROY:PostQuitMessage(0);return 0 ;}return DefWindowProc(hwnd, message, wParam, lParam);
}

转载于:https://www.cnblogs.com/colajar/archive/2009/03/12/1409719.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty : writeAndFlush的线程安全及并发问题

使用Netty编程时&#xff0c;我们经常会从用户线程&#xff0c;而不是Netty线程池发起write操作&#xff0c;因为我们不能在netty的事件回调中做大量耗时操作。那么问题来了 – 1&#xff0c; writeAndFlush是线程安全的吗&#xff1f; 2&#xff0c; 是否使用了锁&#xff0c;…

[翻译-ASP.NET MVC]Contact Manager开发之旅

本翻译系列为asp.net mvc官方实例教程。在这个系列中&#xff0c;Stephen Walther将演示如何通过ASP.NET MVC framework结合单元测试、TDD、Ajax、软件设计原则及设计模式创建一个完整的Contact Manager应用。本系列共七个章节&#xff0c;也是七次迭代过程。本人将陆续对其进行…

数据库 日期格式操作

sql server: 日期转字符串-日期select CONVERT(varchar(100), GETDATE(), 23) from RegionRealtimeData 日期转字符串-全select CONVERT(varchar(100), GETDATE(), 20) from RegionRealtimeData 字符串转日期-日期select CONVERT(date, 2016-02-11, 23) from RegionRealtimeDat…

jsp输出所有请求头的名称

Enumeration headernamesrequest.getHeaderNames();while(headernames.hasMoreElements()){String headernameheadernames.nextElement();out.println(headername "-->" request.getHeader(headername) "");}out.println("");更多专业前端知识…

Spring4:具有Java 8 Date-Time API的@DateTimeFormat

在Spring 3.0中作为Formatter SPI的一部分引入的DateTimeFormat批注可用于解析和打印Web应用程序中的本地化字段值。 在Spring 4.0中&#xff0c; DateTimeFormat批注可以直接与Java 8 Date-Time API&#xff08; java.time &#xff09;一起使用。 在Spring中&#xff0c;可以…

一、rollup

参考&#xff1a;reduxreach-routerrollup-starter-librollup-starter-approller-clicreate-react-library 一、安装 npm install --global rollup二、命令&#xff1a; rollup -c 默认指向rollup.config.jsimport babel from rollup-plugin-babel; import commonjs from ro…

从一本书看经济危机中创业者的机会

最近抽时间在看一本书《赢道&#xff1a;成功创业者的28条戒律》&#xff0c;赢道营销总裁邓超明、中国企业家联合会秘书长刘洋和资深IT经理人代腾飞三位创业者联手所写。就如同网上所介绍的&#xff0c;这本书分析了近30年来国内外100位风云人物创业成败之道&#xff0c;讲述了…

JSF中run项目时候Tomcat8启动不了的一种方法

把另一个博客内容迁移到这 我的问题是Tomcat是可以启动的 但是run那个jsp的时候七月 10, 2016 3:14:54 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse…

elasticsearch_dsl.exceptions.ValidationException: You cannot write to a wildcard index.

elasticsearch_dsl.exceptions.ValidationException: You cannot write to a wildcard index. 这里是因为版本不匹配的问题 查看es版本方法如下&#xff1a; 查看elasticsearch包与elasticsearch-dsl版本方法&#xff08;pip list&#xff09;如下&#xff1a; 因为我的es是5.1…

ListView执行notifyDatasetChanged无数据显示,getView未执行

自定义的一个ListView放到布局文件中&#xff0c;设置widthmatch_parent&#xff0c;heightwrap_content。 设置数据后执行notifyDatasetChanged。可以确定数据发生了变化&#xff0c;但是没有进入到getView中刷新数据。 经过尝试&#xff0c;设置height为match_parent之后数据…

在Java中对Singleton类进行双重检查锁定

Singleton类在Java开发人员中非常常见&#xff0c;但是它给初级开发人员带来了许多挑战。 他们面临的主要挑战之一是如何使Singleton保持为Singleton&#xff1f; 也就是说&#xff0c;无论出于何种原因&#xff0c;如何防止单个实例的多个实例。 对Singleton进行双重检查锁定是…

【转】解析.Net框架下的XML编程技术

【引自突破思维的禁忌的博客】一、前言 XML是微软.Net战略的一个重要组成部分&#xff0c;而且它可谓是XML Web服务的基石&#xff0c;所以掌握.Net框架下的XML技术自然显得非常重要了。本文将指导大家如何运用C#语言完成.Net框架下的XML文档的读写操作。首先&#xff0c;我会向…

line-height 属性

p.small {line-height:90%} p.big {line-height:200%} 该属性会影响行框的布局。在应用到一个块级元素时&#xff0c;它定义了该元素中基线之间的最小距离而不是最大距离。 line-height 与 font-size 的计算值之差&#xff08;在 CSS 中成为“行间距”&#xff09;分为两半&…

wstngfw中使用Viscosity连接OpenV-P-N服务器

wstngfw中使用Viscosity连接OpenV-P-N服务器 在本例中&#xff0c;将假设以下设置&#xff1a; 站点 A站点 B名称Beijing Office&#xff08;北京办公室&#xff09;名称Shenzheng Office&#xff08;深圳办公室&#xff09;WAN IP192.168.10.46WAN IP192.168.20.46LAN 子网192…

软件开发薪资调查

软件开发薪资调查 以下是根据朋友和自己面试过的几家公司的了解得到的结果&#xff0c;可能与实际数据有些出入&#xff0c;只做参考。 2&#xff5e;3年工作经验的&#xff1a;杭州 公司名 公司性质 待遇 灵川 欧美&#xff08;英国…

使用jXLS将Excel文件解析为JavaBeans

这篇文章展示了如何使用jXLS将Excel文件解析为JavaBeans列表。 这是我编写的通用实用程序方法&#xff1a; /** * Parses an excel file into a list of beans. * * param <T> the type of the bean * param xlsFile the excel data file to parse * param jxlsConfigF…

开张了!

今天开张了&#xff0c;试试看&#xff01; Code1using System; 2using System.Collections.Generic; 3using System.Text; 4 5namespace Model 6{ 7 public enum SiteType 8 { System,External,All}; 9 [Serializable]10 class SiteInfo11 {12 public i…

实时监听input输入框value的变化:

HTML5 标准事件 oninput 和 IE 专属事件 onpropertychange 事件实时监听输入框value的变化 oninput 事件在用户输入时触发。 该事件在 <input> 或 <textarea> 元素的值发生改变时触发。 提示&#xff1a; 该事件类似于 onchange 事件。不同之处在于 oninput 事件…

dubbo和zookeeper的关系

转载前言&#xff1a;网络上很多教程没有描述zookeeper和dubbo到底是什么关系、分别扮演了什么角色等信息&#xff0c;都是说一些似是而非的话&#xff0c;这里终于找到一篇文章&#xff0c;比较生动地描述了注册中心和微服务框架之间的关系&#xff0c;以及他们之间的合作分工…

测试Hibernate的最低配置

介绍 在上一篇文章中&#xff0c;我宣布了我打算创建个人Hibernate课程的意图。 首先要做的是最小的测试配置。 这些示例与Hibernate 4有关。 您只需要休眠 在实际的生产环境中&#xff0c;您不会单独使用Hibernate&#xff0c;因为您可以将其集成到JEE或Spring容器中。 要测试…