64,685
社区成员
发帖
与我相关
我的任务
分享
//请大家帮我看下我这段代码
//为什么编译器会提示,变量为定义
//我都在头文件里面定义好了的,迷茫
//.hpp
#define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics[0]))
struct
{
int iIndex ;
TCHAR *szLable ;
TCHAR *szDesc ;
}
sysmetrics [] =
{
SM_CXSCREEN, TEXT("SM_CXSCREEN"),
TEXT("Screen width in pixels"),
SM_CYSCREEN, TEXT("SM_CYSCREEN"),
TEXT("Screen height in pixles"),
SM_CXVSCROLL, TEXT("SM_CXSCROLL"),
TEXT("Vertical scroll width"),
SM_CYHSCROLL, TEXT("SM_CYHSCROLL"),
TEXT("Horizontal scroll heigth"),
SM_CYCAPTION, TEXT("SM_CYCAPTION"),
TEXT("Caption bar heigth"),
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 wndth"),
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("SSM_CXICON,"),
TEXT("lcon width"),
SM_CYICON, TEXT("SM_CYICON"),
TEXT("lcon 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 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 sizeing frame width"),
SM_CYSIZEFRAME, TEXT("SM_CYSIZEFRAME"),
TEXT("window sizeing 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_DXDRAG"),
TEXT("avokl 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")
};
//这是我刚才用GCC编译出现的错误提示
//和我用VC2003效果是一样的
//问题还是在这郁闷
/*hh.cpp:86: error: `szLable' undeclared (first use this function)
hh.cpp:86: error: (Each undeclared identifier is reported only once for each function it appears in.)
hh.cpp:87: error: `sysmetrice' undeclared (first use this function)
hh.cpp:90: error: `szDesc' undeclared (first use this function)
hh.cpp:97: error: `iIndex' undeclared (first use this function)
make.exe: *** [hh.o] Error 1
Execution terminated
*/
//错误的提示就是
// iIndex ;
szLable ;
szDesc
这几个变量未定义
郁闷了
//system.h就是我前面那个
头文件的名字
我在1楼贴出来的
//.cpp
#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("SysMetsl");
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(COLOR_WINDOW+1);
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;
PAINTSTRUCT ps;
TEXTMETRIC tm;
int i;
TCHAR szBuffer[10];
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],szLable,
lstrlen(sysmetrice[i],szLable));
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);
}