Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22178
  • 博文数量: 22
  • 博客积分: 960
  • 博客等级: 准尉
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-06 12:49
文章分类
文章存档

2011年(1)

2009年(21)

我的朋友
最近访客

分类: WINDOWS

2009-10-06 13:49:04

// sysmets.h 文件
#define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics[0]))
struct
{
int iIndex;
TCHAR *szLabel;
TCHAR *szDesc;
}
sysmetrics [] =
{
{SM_CXSCREEN, TEXT("SM_CXSCREEN"), TEXT("Screen width in pixels")},
{SM_CYSCREEN, TEXT("SM_CYSCREEN"), TEXT("Screen height in pixels")}
};

// CPP文件
#include
#include"sysmets.h"
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName [] = TEXT ("SysMets1");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WndProc;
wndclass.lpszClassName = szAppName;
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW;

if (!RegisterClass(&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR);
return 0;
}

hwnd = CreateWindow (
szAppName,
TEXT ("Get System Metrics No.1"),
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;
HDC hdc;
int i;
PAINTSTRUCT ps;
TCHAR szBuffer[10];
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);
break;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps);
for (i = 0; i < NUMLINES; i++)
{
TextOut (
hdc,
0,
cyChar * i,
sysmetrics[i].szLabel,
lstrlen (sysmetrics[i].szLabel)
);

TextOut (
hdc,
22 * cxCaps,
cyChar * i,
sysmetrics[i].szDesc,
lstrlen (sysmetrics[i].szDesc)
);

SetTextAlign (hdc, TA_RIGHT | TA_TOP);

wsprintf(szBuffer, TEXT("%d"), GetSystemMetrics (sysmetrics[i].iIndex));
TextOut (
hdc,
22 * cxCaps + 40 * cxChar,
cyChar * i,
szBuffer,
lstrlen(szBuffer)
);
SetTextAlign (hdc, TA_LEFT | TA_TOP);
}
EndPaint (hwnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
}
return DefWindowProc (hwnd, message, wParam, lParam);
}
Windows应用程序捆绑核心编程

内容介绍:
本书所介绍的内容与计算机防护技术相关。本书基于作者在计算机编程方面的多年实践经验,对当今国际上最新的应用程序间的通信、挂钩、捆绑技术作了较为具体、系统的归纳和总结,并给出了大量的实例。本书中很多的技术还没有公开,属于底层热门技术,所给出的很多程序代码可以直接用于商业软件的制作。本书旨在为对通信、挂钩和捆绑等方面编程感兴趣的读者提供参考,适合于中高级软件开发人员使用,还可以作为计算机和信息类专业高年级学生学习的辅助读物。

目录

前言

第1章 再谈计算机内存访问

第2章 再谈PE文件结构

第3章 进程之间通信概述及初级技术



阅读(385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~