首页 技术 正文
技术 2022年11月11日
0 收藏 406 点赞 4,603 浏览 2900 个字

SYSMETS.c

#include <windows.h>#include "SYSMETS.H"//自定义的单元,所以用"",不是用<>//消息循环处理函数,Windows回调函数
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//Windows程序的入口函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int ICmdShow) {
static TCHAR szAppName[] = TEXT("windowOfC"); HWND hwnd;//窗体句柄变量
MSG msg;//消息变量
WNDCLASS wndclass;//窗口类变量 //配置窗口类结构
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;//设置处理消息循环的函数
wndclass.cbClsExtra = ;
wndclass.cbWndExtra = ;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)COLOR_WINDOW;
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName; //注册窗口类
if (!RegisterClass(&wndclass)) {
MessageBox(NULL, TEXT("注册窗口类失败!"), szAppName, MB_ICONERROR);
return ;
} //创建窗口
hwnd = CreateWindow(szAppName,
TEXT("获取Windows图形构件大小信息"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL); //显示窗口
ShowWindow(hwnd, ICmdShow);
//更新窗口内容
UpdateWindow(hwnd); //得到Windows消息
while (GetMessage(&msg, NULL, , )) {
TranslateMessage(&msg);
DispatchMessage(&msg);
} return msg.wParam;
};//消息处理方法,windows操作系统的回调函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc;//图形设备描述表变量
PAINTSTRUCT ps; static int cxChar, cxCaps, cyChar;//文字大小的变量
int i;//循环显示构件信息的变量
TCHAR szBuffer[];//输出构建大小的变量
TEXTMETRIC tm;//字体信息结构 int iSysments;//系统返回的Windows构件大小 switch (message) {
case WM_CREATE: //得到设备描述表
hdc = GetDC(hwnd); //获取文字大小信息
GetTextMetrics(hdc, &tm); cxChar = tm.tmAveCharWidth;
cxCaps = (tm.tmPitchAndFamily & ? : )*cxChar / ;
cyChar = tm.tmHeight + tm.tmExternalLeading; //释放设备描述表
ReleaseDC(hwnd, hdc); return ;
case WM_PAINT: //得到设备描述表
hdc = BeginPaint(hwnd, &ps); for (i = ; i < NUMLINES; i++) {
//输出ID
TextOut(hdc, , cyChar*i, sysmetrics[i].szLabel, lstrlen(sysmetrics[i].szLabel)); //输出原来的英文描述信息
TextOut(hdc, * cxCaps, cyChar*i, sysmetrics[i].szDesc, lstrlen(sysmetrics[i].szDesc));
//设置文字对齐方式
SetTextAlign(hdc, TA_RIGHT | TA_TOP); //得到当前Windows构件大小
iSysments = GetSystemMetrics(sysmetrics[i].iIndex);
TextOut(hdc, * cxCaps + * cxChar, cyChar*i, szBuffer, wsprintf(szBuffer, TEXT("%5d"), iSysments));
//设置文字对齐方式
SetTextAlign(hdc, TA_LEFT | TA_TOP); //输出原来的英文描述信息
TextOut(hdc, * cxCaps + * cxChar, cyChar*i, sysmetrics[i].szCnDesc, lstrlen(sysmetrics[i].szCnDesc));
//设置文字对齐方式
SetTextAlign(hdc, TA_LEFT | TA_TOP);
} //释放设备描述表
EndPaint(hwnd, &ps); return ;
case WM_DESTROY:
PostQuitMessage(); return ;
} return DefWindowProc(hwnd, message, wParam, lParam);
};

SYSMETS.h

#pragma once //保证相同内容只编译一次#include <windows.h>//宏定义(NUMLINES在预编译时候,直接被后面内容替换掉)
#define NUMLINES ((int)(sizeof sysmetrics/ sizeof sysmetrics[0]))struct
{
int iIndex;
TCHAR * szLabel;
TCHAR * szDesc;
TCHAR * szCnDesc;//这是我增加的内容,显示中文描述信息,对上面英文描述信息的翻译文字
}
/*
1,这是一个结构数组,数组中的每个结构描述当前获取的windows构件
2,数组中的结构元素被我修改了一下,每个结构元素外围都增加了"{}",这样程序可读性应该是更好了,原代码没有"{}"
*/
sysmetrics[] = {
{
SM_CXSCREEN,TEXT("SM_CXSCREEN"),TEXT("Screen width in pixels"),TEXT("屏幕宽度(单位:像素)")
},
{
SM_CYSCREEN,TEXT("SM_CYSCREEN"),TEXT("Screen height in pixels"),TEXT("屏幕高度(单位:像素)")
}
//还有很多,待续
};
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,495
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,909
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,741
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,496
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,134
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,298