我是初学者,刚编了个简单的程序,编译时出错,请前辈们帮我看一下:
源程序:#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";]
char lpszTitle[]="My_Windows";
wndclass.style=0;
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=lpszClassName; if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE; }
hwnd=CreateWindow(
lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
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)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return(0);
}编译出错信息为:
-------------------Configuration: exec - Win32 Debug--------------------
Compiling...
e1.cpp
e:\study\vc练习\exec\e1.cpp(1) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
Error executing cl.exe.exec.exe - 1 error(s), 0 warning(s)请大家指点,多谢!
源程序:#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";]
char lpszTitle[]="My_Windows";
wndclass.style=0;
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=lpszClassName; if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE; }
hwnd=CreateWindow(
lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
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)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return(0);
}编译出错信息为:
-------------------Configuration: exec - Win32 Debug--------------------
Compiling...
e1.cpp
e:\study\vc练习\exec\e1.cpp(1) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
Error executing cl.exe.exec.exe - 1 error(s), 0 warning(s)请大家指点,多谢!
我搜了下,找到了windows.h 文件,然后将程序改成如下:#include <E:\downloads\VC6带SP6_GDIPLUS_DX9绿色自解压安装版@yourfeng\VC98\Include\windows.h>其中的路径为windows.h 的安装路径。但编译后还是提示:
-------------------Configuration: e1 - Win32 Debug--------------------
Compiling...
e1.cpp
e:\downloads\vc6带sp6_gdiplus_dx9绿色自解压安装版@yourfeng\vc98\include\windows.h(159) : fatal error C1083: Cannot open include file: 'excpt.h': No such file or directory
Error executing cl.exe.e1.exe - 1 error(s), 0 warning(s)
要不然自己在VC里设include文件的路径.
然后看有没这几个,没有就加进去:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
E:\downloads\VC6带SP6_GDIPLUS_DX9绿色自解压安装版@yourfeng\VC98\Include
E:\downloads\VC6带SP6_GDIPLUS_DX9绿色自解压安装版@yourfeng\VC98\MFC\Include
E:\downloads\VC6带SP6_GDIPLUS_DX9绿色自解压安装版@yourfeng\VC98\ATL\Include
就是窗口还没有画出来,怎么去销毁??看〈windows程序设计〉
同意 chen18s(印度神棍) 。
#include<windows.h>
#pragma comment (linker, "/ENTRY:WinMainCRTStartup")LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int nCmdShow)
{
static TCHAR szClassName[]=TEXT("test2");
static TCHAR szTitleName[]=TEXT("我的窗口"); 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= szClassName;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szClassName, MB_ICONERROR) ;
return 0 ;
}
hwnd=CreateWindow(
szClassName,
szTitleName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL); ShowWindow(hwnd,nCmdShow);
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)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
LPSTR pClsID;
switch(message)
{
case WM_CREATE:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ; FlashWindow(hwnd, TRUE); // invert the title bar
Sleep(500); // wait a bit
FlashWindow(hwnd, TRUE); // invert again
// Play the system exclamation sound.
UNREFERENCED_PARAMETER(pClsID);
MessageBeep(MB_ICONEXCLAMATION);
EndPaint (hwnd, &ps) ;
return 0 ; case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);}
等信息外,还要启动VC RUNTIME LIBRARY来启动使用VC编译的工程(通常不支持浮点运算),可能如果
你的工程中有浮点运算的时候也要使用上面的“屏蔽main()”函数的命令行参数,虽然这里你没有使用相关的浮点运算,看过了N多的关于LNK2001报错处理的解释,都无法解决的时候可以试试上面的办法,MS平台默认的情况下是要先启动main()函数的,然后启动WINMAIN()函数上面的说法,只是个人猜测!!有不同意见的说