我是初学者,刚编了个简单的程序,编译时出错,请前辈们帮我看一下:
源程序:#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)请大家指点,多谢!

解决方案 »

  1.   

    写的很清楚啊,找不到windows.h文件
      

  2.   

    在你机子VC安装目录下搜索一下windows.h,然后写全路径试试。如果没有找到windows.h就重新安装VC吧,安装时丢了。
      

  3.   

    to mintwlf:
    我搜了下,找到了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)
      

  4.   

    简单点,还是重装VC吧.......路径全坏了........
    要不然自己在VC里设include文件的路径.
      

  5.   

    该成#include "windows.h"试试。要不然重装
      

  6.   

    菜单 tools ->options ->directories ->show directories for "include files"
    然后看有没这几个,没有就加进去:
    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
      

  7.   

    楼上的不对吧....看楼主的回贴应该是
    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
      

  8.   

    窗口还没有响应消息:WM_PAINT
    就是窗口还没有画出来,怎么去销毁??看〈windows程序设计〉
      

  9.   

    谢谢这么多人热心的回复。我现在重装了一遍VC,重新编译该程序时,提示找不到mspdb60.dll,程序无法启动。我在VC的安装目录里搜mspdb60.dll没有搜到。大家说我该怎么办啊
      

  10.   

    VC6带SP6_GDIPLUS_DX9绿色自解压安装版:这个vc是自解压安装版,肯定没有像通常安装版一样把路径设置写入系统的路径参数中。
    同意 chen18s(印度神棍) 。
      

  11.   

    帮你调试这个程序费了我N大的劲,楼主想按照你的意思来,这里有了
    #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);}

      

  12.   

    上面的#pragma comment (linker, "/ENTRY:WinMainCRTStartup")指定LINKER在链接的时候忽略掉main()这个哑元函数,直接使用WINMAIN()函数
      

  13.   

    LNK2001出错的根本原因是:运行时启动的时候除了加载一些关于:堆分配信息及报错。
    等信息外,还要启动VC RUNTIME LIBRARY来启动使用VC编译的工程(通常不支持浮点运算),可能如果
    你的工程中有浮点运算的时候也要使用上面的“屏蔽main()”函数的命令行参数,虽然这里你没有使用相关的浮点运算,看过了N多的关于LNK2001报错处理的解释,都无法解决的时候可以试试上面的办法,MS平台默认的情况下是要先启动main()函数的,然后启动WINMAIN()函数上面的说法,只是个人猜测!!有不同意见的说