#include "sysmets.h"
#include "headers.h"
LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam ,LPARAM lParam);
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )
{
static TCHAR szAppName[]=TEXT("sysmets1");
HWND hwnd;
MSG msg;
WNDCLASS wc;
wc.style=CS_HREDRAW |CS_VREDRAW;
wc.lpfnWndProc=WinProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName=szAppName;
wc.lpszClassName=NULL;
if(!RegisterClass(&wc))
{
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 WinProc(HWND hwnd,UINT message,WPARAM wParam ,LPARAM lParam)
{
HDC hdc;
static int cxChar,cxCaps,cyChar;
int i;
PAINTSTRUCT ps;
TCHAR szBuffer[10];
TEXTMETRIC tm;
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
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,strlen(sysmetrics[i].szLabel));
TextOut(hdc,22*cxCaps,cyChar*i,sysmetrics[i].szDesc,strlen(sysmetrics[i].szDesc));
TextOut(hdc,22*cxCaps+40*cxCaps,cyChar*i,szBuffer,wsprintf(szBuffer,TEXT("%5d"),
GetSystemMetrics(sysmetrics[i].Index)));
SetTextAlign(hdc,TA_LEFT|TA_TOP);
}
EndPaint(hwnd,&ps);
break;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
error C2146:语法错误 : 缺少“;”(在标识符“LRESULT”的前面)
error C2143: 语法错误 : 缺少“;”(在“__stdcall”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2377: “LRESULT”: 重定义;typedef 不能由任何其他符号重载
1> c:/program files/microsoft sdks/windows/v6.0a/include/windef.h(185) : 参见“LRESULT”的声明
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
:error C2440: “=”: 无法从“int (__stdcall *)(HWND,UINT,WPARAM,LPARAM)”转换为“WNDPROC”
1> 该转换要求 reinterpret_cast、C 样式转换或函数类型转换
error C2143: 语法错误 : 缺少“;”(在“__stdcall”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2086: “int LRESULT”: 重定义
参见“LRESULT”的声明
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int