这是用vc编的第一个c++程序,可是就报错了。哪位高手帮帮我这么一个菜鸟! 程序如下: 10
#include<windows.h>#include<stdio.h>LRESULTCALLBACKWinFlightProc(HWNDhwnd,UINTmsg,WPA...
#include <windows.h>
#include <stdio.h>
LRESULT CALLBACK WinFlightProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain (
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinFlightProc;
wndcls.lpszClassName="flight";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
HWND hwnd;
hwnd=CreateWindow("flight","航空订票系统",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WinFlightProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam
)
{
switch(msg)
{
case VM_PAINT:
//HDC hdc;
PAINTSTRUCT ps;
//hdc=BeginPaint(hdc,&ps);
BeginPaint(hwnd,&ps);
//TextOut(hdc,0,0,"欢迎来到航班系统",strlen("欢迎来到航班系统"));
EndPaint(hwnd,&ps);
break;
case VM_CHAR:
char array[20];
sprintf(array,"key is %c",wParam);
MessageBox(hwnd,array,NULL,0);
HDC hdc1;
hdc1=GetDC(hwnd);
TextOut(hdc1,CW_USEDEFAULT,CW_USEDEFAULT,"欢迎来到航班系统",strlen("欢迎来到航班系统"));
ReleaseDC(hwnd,hdc1);
case VM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked",NULL,0);
HDC hdc2;
hdc2=GetDC(hwnd);
TextOut(hdc2,CW_USEDEFAULT,CW_USEDEFAULT,"欢迎来到航班系统",strlen("欢迎来到航班系统"));
ReleaseDC(hwnd,hdc2);
case VM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否退出系统?",NULL,MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case VM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
return 0;
}
若在category中设置precomplied时设置成not using precomplied header
vc出错:
Compiling...
WinMain.cpp
h:\程序\winapi\航空订票系统\winmain.cpp(53) : error C2065: 'VM_PAINT' : undeclared identifier
h:\程序\winapi\航空订票系统\winmain.cpp(53) : error C2051: case expression not constant
等类似错误!
WinMain.obj - 10 error(s), 1 warning(s)
若设置成use precomplied header file.(pch) 并且在空中填上windows.h时,
vc出错误:fatal error C1852: 'Debug/航空订票系统.pch' is not a valid precompiled header file
我已经改过来了!但是还是出现
vc出错误:fatal error C1852: 'Debug/航空订票系统.pch' is not a valid precompiled header file
与设置category无关!错误一致! 展开
#include <stdio.h>
LRESULT CALLBACK WinFlightProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain (
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinFlightProc;
wndcls.lpszClassName="flight";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
HWND hwnd;
hwnd=CreateWindow("flight","航空订票系统",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WinFlightProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam
)
{
switch(msg)
{
case VM_PAINT:
//HDC hdc;
PAINTSTRUCT ps;
//hdc=BeginPaint(hdc,&ps);
BeginPaint(hwnd,&ps);
//TextOut(hdc,0,0,"欢迎来到航班系统",strlen("欢迎来到航班系统"));
EndPaint(hwnd,&ps);
break;
case VM_CHAR:
char array[20];
sprintf(array,"key is %c",wParam);
MessageBox(hwnd,array,NULL,0);
HDC hdc1;
hdc1=GetDC(hwnd);
TextOut(hdc1,CW_USEDEFAULT,CW_USEDEFAULT,"欢迎来到航班系统",strlen("欢迎来到航班系统"));
ReleaseDC(hwnd,hdc1);
case VM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked",NULL,0);
HDC hdc2;
hdc2=GetDC(hwnd);
TextOut(hdc2,CW_USEDEFAULT,CW_USEDEFAULT,"欢迎来到航班系统",strlen("欢迎来到航班系统"));
ReleaseDC(hwnd,hdc2);
case VM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否退出系统?",NULL,MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case VM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
return 0;
}
若在category中设置precomplied时设置成not using precomplied header
vc出错:
Compiling...
WinMain.cpp
h:\程序\winapi\航空订票系统\winmain.cpp(53) : error C2065: 'VM_PAINT' : undeclared identifier
h:\程序\winapi\航空订票系统\winmain.cpp(53) : error C2051: case expression not constant
等类似错误!
WinMain.obj - 10 error(s), 1 warning(s)
若设置成use precomplied header file.(pch) 并且在空中填上windows.h时,
vc出错误:fatal error C1852: 'Debug/航空订票系统.pch' is not a valid precompiled header file
我已经改过来了!但是还是出现
vc出错误:fatal error C1852: 'Debug/航空订票系统.pch' is not a valid precompiled header file
与设置category无关!错误一致! 展开
4个回答
展开全部
解决方法如下:
1.先建一个Win32 Application,然后在CPP文件里把你的代码写好。
2.文件中要包含#include "stdafx.h"。
3.要在文件头里包含#pragma comment(lib, "user32.lib")和#pragma comment(lib, "gdi32.lib")
4.要把你文件中的WM_PAINT 你写成了 VM_PAINT, 所有的消息都是W开头的,你全写成了V开头
肯定解决问题
1.先建一个Win32 Application,然后在CPP文件里把你的代码写好。
2.文件中要包含#include "stdafx.h"。
3.要在文件头里包含#pragma comment(lib, "user32.lib")和#pragma comment(lib, "gdi32.lib")
4.要把你文件中的WM_PAINT 你写成了 VM_PAINT, 所有的消息都是W开头的,你全写成了V开头
肯定解决问题
追问
谢谢你的回答!
想问问你,你所说文件里包含#pragma comment(lib, "user32.lib")和#pragma comment(lib, "gdi32.lib")是cpp文件里还是头文件里?要是头文件里,请问要怎么弄呢?
追答
在cpp文件中就可以了,最好放在#include 这些引用下边就可以了
展开全部
WM_PAINT 你写成了 VM_PAINT, 所有的消息都是W开头的,你全写成了V开头。
追问
我已经改过来了!但是还是出现
vc出错误:fatal error C1852: 'Debug/航空订票系统.pch' is not a valid precompiled header file
不过若在category中设置precomplied时设置成not using precomplied header
按complied时错误和警告都没有,但是按build时就会报错上面那个错误
若设置成use precomplied header file.(pch) 并且在空中填上windows.h时,按complied和build时结果一致,没有警告就只有上面那个错误!
追答
我的是中文版 的,你选 择“编译”-》“重建全部” 试试。
英文我不知道对应哪个菜单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意楼上的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意回答者: gudu0723
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询