这段代码错在哪里?怎样修改才能顺利通过?附代码,和错误提示.

寻找科技 2009-09-14 01:08:58
这段代码错在哪里?怎样修改才能顺利通过?附代码,和错误提示.

SYSMETS.H
-------

/*
SYSMETS.H -- System metrics display structure
*/

#define NUMLINES ((int)(sizeof sysmetrics / sizeof sysmetrics[0]))

struct
{
int Index;
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"),
SM_CXVSCROLL,TEXT("SM_CXVSCROLL"),
TEXT("Vertical scroll width"),
SM_CYHSCROLL,TEXT("SM_CYHSCROLL"),
TEXT("Horizontal scroll height"),
SM_CYCAPTION,TEXT("SM_CYCAPTION"),
TEXT("Caption bar height"),
SM_CXBORDER,TEXT("SM_CXBORDER"),
TEXT("Window border width"),
SM_CYBORDER,TEXT("SM_CYBORDER"),
TEXT("Window border height"),
SM_CXFIXEDFRAME,TEXT("SM_CXFIXEDFRAME"),
TEXT("Dialog window frame width"),
SM_CYFIXEDFRAME,TEXT("SM_CYFIXEDFRAME"),
TEXT("Dialog window frame height"),
SM_CYVTHUMB,TEXT("SM_CYVTHUMB"),
TEXT("Vertical scroll thumb height"),
SM_CXHTHUMB,TEXT("SM_CXHTHUMB"),
TEXT("Horizontal scroll thumb width"),
SM_CXICON,TEXT("SM_CXICON"),
TEXT("Icon width"),
SM_CYICON,TEXT("SM_CYICON"),
TEXT("Icon height"),
SM_CXCURSOR,TEXT("SM_CXCURSOR"),
TEXT("Cursor width"),
SM_CYCURSOR,TEXT("SM_CYCURSOR"),
TEXT("Cursor height"),
SM_CYMENU,TEXT("SM_CYMENU"),
TEXT("Menu bar height"),
SM_CXFULLSCREEN,TEXT("SM_CXFULLSCREEN"),
TEXT("Full screen client area width"),
SM_CYFULLSCREEN,TEXT("SM_CYFULLSCREEN"),
TEXT("Full screen client area height"),
SM_CYKANJIWINDOW,TEXT("SM_CYKANJIWINDOW"),
TEXT("Kanji window height"),
SM_MOUSEPRESENT,TEXT("SM_MOUSEPRESENT"),
TEXT("Mouse present flag"),
SM_CYVSCROLL,TEXT("SM_CYVSCROLL"),
TEXT("Vertical scroll arrow height"),
SM_CXHSCROLL,TEXT("SM_CXHSCROLL"),
TEXT("Horizontal scroll arrow width"),
SM_DEBUG,TEXT("SM_DEBUG"),
TEXT("Debug version flag"),
SM_SWAPBUTTON,TEXT("SM_SWAPBUTTON"),
TEXT("Mouse buttons swapped flag"),
SM_CXMIN,TEXT("SM_CXMIN"),
TEXT("Minimum window width"),
SM_CYMIN,TEXT("SM_CYMIN"),
TEXT("Minimum window height"),
SM_CXSIZE,TEXT("SM_CXSIZE"),
TEXT("Min/Max/Close button width"),
SM_CYSIZE,TEXT("SM_CYSIZE"),
TEXT("Min/Max/Close button height"),
SM_CXSIZEFRAME,TEXT("SM_CXSIZEFRAME"),
TEXT("Window sizing frame width"),
SM_CYSIZEFRAME,TEXT("SM_CYSIZEFRAME"),
TEXT("Window sizing frame height"),
SM_CXMINTRACK,TEXT("SM_CXMINTRACK"),
TEXT("Minimum window tracking width"),
SM_CYMINTRACK,TEXT("SM_CYMINTRACK"),
TEXT("Minimum window tracking height"),
SM_CXDOUBLECLK,TEXT("SM_CXDOUBLECLK"),
TEXT("Double click x tolerance"),
SM_CYDOUBLECLK,TEXT("SM_CYDOUBLECLK"),
TEXT("Double click y tolerance"),
SM_CXICONSPACING,TEXT("SM_CXICONSPACING"),
TEXT("Horizontal icon spacing"),
SM_CYICONSPACING,TEXT("SM_CYICONSPACING"),
TEXT("Vertical icon spacing"),
SM_MENUDROPALIGNMENT,TEXT("SM_MENUDROPALIGNMENT"),
TEXT("Left or right menu drop"),
SM_PENWINDOWS,TEXT("SM_PENWINDOWS"),
TEXT("Pen extensions installed"),
SM_DBCSENABLED,TEXT("SM_DBCSENABLED"),
TEXT("Double-Byte Char Set enabled"),
SM_CMOUSEBUTTONS,TEXT("SM_CMOUSEBUTTONS"),
TEXT("Number of mouse buttons"),
SM_SECURE,TEXT("SM_SECURE"),
TEXT("Security present flag"),
SM_CXEDGE,TEXT("SM_CXEDGE"),
TEXT("3-D border width"),
SM_CYEDGE,TEXT("SM_CYEDGE"),
TEXT("3_D border height"),
SM_CXMINSPACING,TEXT("SM_CXMINSPACING"),
TEXT("Minimized window spacing width"),
SM_CYMINSPACING,TEXT("SM_CYMINSPACING"),
TEXT("Minimized window spacing height"),
SM_CXSMICON,TEXT("SM_CXSMICON"),
TEXT("Small icon width"),
SM_CYSMICON,TEXT("SM_CYSMICON"),
TEXT("Small icon height"),
SM_CYSMCAPTION,TEXT("SM_CYSMCAPTION"),
TEXT("Small caption height"),
SM_CXSMSIZE,TEXT("SM_CXSMSIZE"),
TEXT("Small caption button width"),
SM_CYSMSIZE,TEXT("SM_CYSMSIZE"),
TEXT("Small caption button height"),
SM_CXMENUSIZE,TEXT("SM_CXMENUSIZE"),
TEXT("Menu bar button width"),
SM_CYMENUSIZE,TEXT("SM_CYMENUSIZE"),
TEXT("Menu bar button height"),
SM_ARRANGE,TEXT("SM_ARRANGE"),
TEXT("How minimized windows arranged"),
SM_CXMINIMIZED,TEXT("SM_CXMINIMIZED"),
TEXT("Minimized window width"),
SM_CYMINIMIZED,TEXT("SM_CYMINIMIZED"),
TEXT("Minimized window height"),
SM_CXMAXTRACK,TEXT("SM_CXMAXTRACK"),
TEXT("Maximum draggable width"),
SM_CYMAXTRACK,TEXT("SM_CYMAXTRACK"),
TEXT("Maximum draggable height"),
SM_CXMAXIMIZED,TEXT("SM_CXMAXIMIZED"),
TEXT("Width of maximized window"),
SM_CYMAXIMIZED,TEXT("SM_CYMAXIMIZED"),
TEXT("Height of maximized window"),
SM_NETWORK,TEXT("SM_NETWORK"),
TEXT("Network present flag"),
SM_CLEANBOOT,TEXT("SM_CLEANBOOT"),
TEXT("How system was booted"),
SM_CXDRAG,TEXT("SM_CXDRAG"),
TEXT("Avoid drag x tolerance"),
SM_CYDRAG,TEXT("SM_CYDRAG"),
TEXT("Avoid drag y tolerance"),
SM_SHOWSOUNDS,TEXT("SM_SHOWSOUNDS"),
TEXT("Present sounds visually"),
SM_CXMENUCHECK,TEXT("SM_CXMENUCHECK"),
TEXT("Menu check-mark width"),
SM_CYMENUCHECK,TEXT("SM_CYMENUCHECK"),
TEXT("Menu check-mark height"),
SM_SLOWMACHINE,TEXT("SM_SLOWMACHINE"),
TEXT("Slow processor flag"),
SM_MIDEASTENABLED,TEXT("SM_MIDEASTENABLED"),
TEXT("Hebrew and Arabic enabled flag"),
SM_MOUSEWHEELPRESENT,TEXT("SM_MOUSEWHEELPRESENT"),
TEXT("Mouse wheel present flag"),
SM_XVIRTUALSCREEN,TEXT("SM_XVIRTUALSCREEN"),
TEXT("Virtual screen x origin"),
SM_YVIRTUALSCREEN,TEXT("SM_YVIRTUALSCREEN"),
TEXT("Virtual screen y origin"),
SM_CXVIRTUALSCREEN,TEXT("SM_CXVIRTUALSCREEN"),
TEXT("Virtual screen width"),
SM_CYVIRTUALSCREEN,TEXT("SM_CYVIRTUALSCREEN"),
TEXT("Virtual screen height"),
SM_CMONITORS,TEXT("SM_CMONITORS"),
TEXT("Number of monitors"),
SM_SAMEDISPLAYFORMAT,TEXT("SM_SAMEDISPLAYFORMAT"),
TEXT("Same color format flag")
}


-------
SYSMETS1.C
-------

/*
SYSMETS1.C -- System Metrics Display Program No.1
(c) Charles Petzold,1998
*/

#include <windows.h>
#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.style = CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;

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);
return 0;

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);
TextOut(hdc,22*cxCaps+40*cxChar,cyChar*i,szBuffer,wsprintf(szBuffer,TEXT("%5d"),GetSystemMetrics(sysmetrics[i].iIndex)));
SetTextAlign(hdc,TA_LEFT|TA_TOP);
}
EndPaint(hwnd,&ps);
return 0;

case WM_DESTROY:
PostQuitMessage(0);

return 0;
}

return DefWindowProc(hwnd,message,wParam,lParam);
}


-------
错误提示:
-------

Deleting intermediate files and output files for project 'SYSMETS1 - Win32 Debug'.
--------------------Configuration: SYSMETS1 - Win32 Debug--------------------
Compiling...
SYSMETS1.CPP
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(152) : error C2065: 'SM_MOUSEWHEELPRESENT' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(154) : error C2065: 'SM_XVIRTUALSCREEN' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(156) : error C2065: 'SM_YVIRTUALSCREEN' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(158) : error C2065: 'SM_CXVIRTUALSCREEN' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(160) : error C2065: 'SM_CYVIRTUALSCREEN' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(162) : error C2065: 'SM_CMONITORS' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(164) : error C2065: 'SM_SAMEDISPLAYFORMAT' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets1.cpp(9) : error C2143: syntax error : missing ';' before 'PCH creation point'
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets1.cpp(79) : error C2039: 'iIndex' : is not a member of '__unnamed'
c:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(8) : see declaration of '__unnamed'
Error executing cl.exe.

SYSMETS1.exe - 9 error(s), 0 warning(s)

-------
编译环境为 VC++ 6.0
-------
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻找科技 2009-09-15
  • 打赏
  • 举报
回复
谢谢 wltg2001(红猪) 的解答,问题解决了.
前面几个错误是加了
#define WINVER 0x500

就解决了,倒数2.3,是我输错了,最后一个是不知不觉就解决了,也不知道是什么原因.
wltg2001 2009-09-14
  • 打赏
  • 举报
回复
刚才试了一下,直接加#define WINVER 0x500不行,不过这个错误的原因是还是因为WINVER 值太小了,你可以打开windows.h,将里面宏WINVER的值改成0x500试试
wltg2001 2009-09-14
  • 打赏
  • 举报
回复
在CPP文件前面加#define WINVER 0x0500试试
fengrx 2009-09-14
  • 打赏
  • 举报
回复
一些标识缺少定义,是不是少引用了头文件。
查找下哪个文件里边有它们的定义吧,例如:SM_MOUSEWHEELPRESENT 这个。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧