这是我测试的一个程序,实现的内容很简单,生成一个窗口,再用vs2005添加图标资源,可是添加完后再编译程序却说我““IDI_ICON”: 未声明的标识符”
有人知道为什么吗?
#include<windows.h>
#include"resource.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
TCHAR szAppName[]=TEXT("IconDemo");
MSG msg;
HWND hwnd;
WNDCLASS wndclass;
wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH)COLOR_WINDOW;
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("Icon Demo"),
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 (int)msg.wParam;
}LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HICON hIcon;
static int cxIcon,cyIcon,cxClient,cyClient;
HDC hdc;
HINSTANCE hInstance;
PAINTSTRUCT ps;
int x,y;
switch(message)
{
case WM_CREATE:
hInstance=((LPCREATESTRUCT) lParam)->hInstance;
hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
cxIcon=GetSystemMetrics(SM_CXICON);
cyIcon=GetSystemMetrics(SM_CYICON);
return 0; case WM_SIZE:
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);
return 0; case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
for(y=0;y<cyClient;y+=cyIcon)
for(x=0;x<cxClient;x+=cxIcon)
DrawIcon(hdc,x,y,hIcon);
EndPaint(hwnd,&ps);
return 0; case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
d:\program files\microsoft visual studio 8\vc\projects\practise\icondemo\icondemo\icondemo.cpp(20) : error C2065: “IDI_ICON”: 未声明的标识符
有人知道为什么吗?
#include<windows.h>
#include"resource.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
TCHAR szAppName[]=TEXT("IconDemo");
MSG msg;
HWND hwnd;
WNDCLASS wndclass;
wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH)COLOR_WINDOW;
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("Icon Demo"),
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 (int)msg.wParam;
}LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HICON hIcon;
static int cxIcon,cyIcon,cxClient,cyClient;
HDC hdc;
HINSTANCE hInstance;
PAINTSTRUCT ps;
int x,y;
switch(message)
{
case WM_CREATE:
hInstance=((LPCREATESTRUCT) lParam)->hInstance;
hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
cxIcon=GetSystemMetrics(SM_CXICON);
cyIcon=GetSystemMetrics(SM_CYICON);
return 0; case WM_SIZE:
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);
return 0; case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
for(y=0;y<cyClient;y+=cyIcon)
for(x=0;x<cxClient;x+=cxIcon)
DrawIcon(hdc,x,y,hIcon);
EndPaint(hwnd,&ps);
return 0; case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
d:\program files\microsoft visual studio 8\vc\projects\practise\icondemo\icondemo\icondemo.cpp(20) : error C2065: “IDI_ICON”: 未声明的标识符
解决方案 »
- 奇怪的连接问题?
- 象QQ等软件中,一些控件都不是标准控件,难道都是自动做的吗?代码量太大了
- RegQueryValueEx取不到数据?
- 巨简单的一个CRecordset查询问题,能帮我解决者,我可以把我的分全给你,up者有分
- 请教一个简单的ODBC数据库编程的数据集更新问题
- vc6.0中的一个小问题
- 关于word类函数的问题
- 如何通过232串口发送一个数组?谢谢
- Inside MFC edition four 和edition five区别很大么?
- file has been modified outsid of the source editor?怎么解决?
- 关于文件操作的几个问题,百分就教
- 关于转义字符
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by icondemo.rc
//
#define IDI_ICON1 101// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif好像没有
wndclass.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
上面的IDI_ICON应IDI_ICON1吧!下面的一样吧!
case WM_CREATE:
hInstance=((LPCREATESTRUCT) lParam)->hInstance;
hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
cxIcon=GetSystemMetrics(SM_CXICON);
cyIcon=GetSystemMetrics(SM_CYICON);
return 0;
可是为什么会在resource里定义成ICON1呢?