怎么HINSTANCE没有定义呀?
在最上面加上一句
#define HINSTANCE unsigned int试试

解决方案 »

  1.   

    真不忍心!
    连“小虾”这个名字也有人争!
    太过分了!HINSTANCE 不是 HINSTAHCE;LRESULT CALLBACK WindowProc(
                                HWND hWnd,
                                UINT uMsgId,
                                WPARAM wParam,
                                LPARAM lParam
                                ); //此处多了一个 ;总之,很多粗心犯的错误,仔细一点改正。
      

  2.   

    1. HINSTAHCE 应为 HINSTANCE2. WinMain不用声明:把 int WinMain(HINSTAHCE hInsTance,HINSTAHCE hPrevInstance,LPSTR pszCmdLine,int nCmdShow); 这行删除3. 
       int WinMain(
        HINSTAHCE hInstance,
        HINSTAHCE hPrevInstance,
        LPSTR    pszCmdLine,
        int nCmdShow);
                    *** 这里不能有 ';' 符号
       {
         .....
       }
      改为:
       int WinMain(
        HINSTAHCE hInstance,
        HINSTAHCE hPrevInstance,
        LPSTR    pszCmdLine,
        int nCmdShow)
       {
         .....
       }4. 与3一样,改为
    LRESULT CALLBACK WindowProc(
                                HWND hWnd,
                                UINT uMsgId,
                                WPARAM wParam,
                                LPARAM lParam
                                )
    {
    ....
    }5.看来你的C还不熟悉!
      

  3.   

    There is a long long road for you, but don't give up !
      

  4.   

    to:
     iamwjp(小虾),我说小虾是一种广泛的称谓而已,想不到碰碰到了大爷你的名头,哈~~小第给你赔礼了!(3鞠躬)
    to:
      zhq2000(俗子)
      C是不常用,但这些错误都能看出来(缺;),我调试的时候也一一试过,可惜还不行,可能是没看出来1. HINSTAHCE 应为 HINSTANCE,所以错误多多....(我再试试)我按他给出来也就象rocmeteor(流星雨)说的一样,买了一本DDDDDD版的《精通VC++6.0》,而且我发现的错误还很多很多,连用来擦屁股都觉得太菜了,还是烧了算!!!不知是我买了D版还是本来就这样,错误是每页都有!
    to:
      rocmeteor(流星雨),还是你了解,哈哈~~~不知你是不是也受过这种苦~~~~ 小第刚学VC++,请给为给小第推荐几本好的初中级的VC++/C++的书,好吗?谢谢楼上各位兄弟!!!我再加50分!
      

  5.   

    /*
    我刚刚开始学VC++,我照着一本入门的书打了着一段代码,但编译总出错!错误如后面~~
    我新键一个空的Win32 Application工程,然后加入如下的一个myprog1.cpp,但总没办法编译通过
    希望各位大虾告知在下原因,不甚感激!
    */
    //-------------
    //程序名myprog1.cpp
    //我的第一个windows程序
    //--------------#include <windows.h>
    //int WinMain(HINSTAHCE hInsTance,HINSTAHCE hPrevInstance,LPSTR pszCmdLine,int nCmdShow);
    LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsgId,WPARAM wParam,LPARAM lParam);int WINAPI WinMain(
        HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR     pszCmdLine,
    int nCmdShow){
    static char szAppName[]="MyProg1";   //程序名
    HWND hWnd;                           //窗口句柄
    MSG msg;                             //消息类型
    WNDCLASS wndClass;                   //窗口类型
    //注册
    //通常只要一次
    wndClass.lpszClassName=szAppName;
        wndClass.hInstance=hInstance;
        wndClass.lpfnWndProc=WindowProc;
    wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndClass.lpszMenuName=NULL;
    wndClass.hbrBackground=GetStockObject(WHITE_BRUSH);
        wndClass.style=CS_HREDRAW|CS_VREDRAW; 
    wndClass.cbClsExtra=0;
    wndClass.cbWndExtra=0; if(RegisterClass(&wndClass)==0)//注册
    {
    return 0;    //不能正确注册则退出
    } //建立窗口 
    hWnd=CreateWindow(szAppName,     //首先注册名称
                  szAppName,     //窗口标题
      WS_OVERLAPPEDWINDOW,   //窗口类型
      CW_USEDEFAULT,                    //窗口X位置
      CW_USEDEFAULT,                    //窗口Y位置
      CW_USEDEFAULT,                    //窗口X长度
     CW_USEDEFAULT,                    //窗口Y长度
      (HWND)NULL,                   //父窗口的句柄
      (HMENU)NULL,                   //窗口菜单的句柄
      hInstance,            //当前窗口程序句柄
      (LPSTR)NULL);                    //所用参数
        if(hWnd==0)
    {
    return 0;
    }
        //显示窗口
    ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd);
    //消息循环
    while (GetMessage(&msg,NULL,0,0))
    {
    TranslateMessage(&msg);    //翻译消息
    DispatchMessage(&msg);     //调度消息
    }
    return msg.wParam;

    }
    //---------------------------
    //窗口处理函数
    //---------------------------LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsgId,
    WPARAM wParam,
    LPARAM lParam
    )  {

    static char *pszIam="我是一个程序员!";
    switch(uMsgId)
    {
    case WM_PAINT:
    HDC hDC;
    PAINTSTRUCT paintStruct;
    hDC=BeginPaint(hWnd,&paintStruct);
    TextOut(hDC,
    0,
    0,
    pszIam,
    lstrlen(pszIam)
    );
    EndPaint(hWnd,&paintStruct);
    return 0;
    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
        default:
    return DefWindowProc(hWnd,uMsgId,wParam,lParam);
    }
    }
    我把所有的可以知道的错误都改好了,现在还有一个错误,没办法解决,
     //错误如下:
    --------------------Configuration: myprog1 - Win32 Debug--------------------
    Compiling...
    myprog1.cpp
    D:\profiles\phf\My Documents\vcProject\myprogtest\myprog1.cpp(36) : error C2440: '=' : cannot convert from 'void *' to 'struct HBRUSH__ *'
            Conversion from 'void*' to pointer to non-'void' requires an explicit cast
    Error executing cl.exe.myprog1.exe - 1 error(s), 0 warning(s)
      

  6.   

    /*
    我刚刚开始学VC++,我照着一本入门的书打了着一段代码,但编译总出错!错误如后面~~
    我新键一个空的Win32 Application工程,然后加入如下的一个myprog1.cpp,但总没办法编译通过
    希望各位大虾告知在下原因,不甚感激!
    */
    //-------------
    //程序名myprog1.cpp
    //我的第一个windows程序
    //--------------#include <windows.h>
    //int WinMain(HINSTAHCE hInsTance,HINSTAHCE hPrevInstance,LPSTR pszCmdLine,int nCmdShow);
    LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsgId,WPARAM wParam,LPARAM lParam);int WINAPI WinMain(
        HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR     pszCmdLine,
    int nCmdShow){
    static char szAppName[]="MyProg1";   //程序名
    HWND hWnd;                           //窗口句柄
    MSG msg;                             //消息类型
    WNDCLASS wndClass;                   //窗口类型
    //注册
    //通常只要一次
    wndClass.lpszClassName=szAppName;
        wndClass.hInstance=hInstance;
        wndClass.lpfnWndProc=WindowProc;
    wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndClass.lpszMenuName=NULL;
    wndClass.hbrBackground=GetStockObject(WHITE_BRUSH);
        wndClass.style=CS_HREDRAW|CS_VREDRAW; 
    wndClass.cbClsExtra=0;
    wndClass.cbWndExtra=0; if(RegisterClass(&wndClass)==0)//注册
    {
    return 0;    //不能正确注册则退出
    } //建立窗口 
    hWnd=CreateWindow(szAppName,     //首先注册名称
                  szAppName,     //窗口标题
      WS_OVERLAPPEDWINDOW,   //窗口类型
      CW_USEDEFAULT,                    //窗口X位置
      CW_USEDEFAULT,                    //窗口Y位置
      CW_USEDEFAULT,                    //窗口X长度
     CW_USEDEFAULT,                    //窗口Y长度
      (HWND)NULL,                   //父窗口的句柄
      (HMENU)NULL,                   //窗口菜单的句柄
      hInstance,            //当前窗口程序句柄
      (LPSTR)NULL);                    //所用参数
        if(hWnd==0)
    {
    return 0;
    }
        //显示窗口
    ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd);
    //消息循环
    while (GetMessage(&msg,NULL,0,0))
    {
    TranslateMessage(&msg);    //翻译消息
    DispatchMessage(&msg);     //调度消息
    }
    return msg.wParam;

    }
    //---------------------------
    //窗口处理函数
    //---------------------------LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsgId,
    WPARAM wParam,
    LPARAM lParam
    )  {

    static char *pszIam="我是一个程序员!";
    switch(uMsgId)
    {
    case WM_PAINT:
    HDC hDC;
    PAINTSTRUCT paintStruct;
    hDC=BeginPaint(hWnd,&paintStruct);
    TextOut(hDC,
    0,
    0,
    pszIam,
    lstrlen(pszIam)
    );
    EndPaint(hWnd,&paintStruct);
    return 0;
    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
        default:
    return DefWindowProc(hWnd,uMsgId,wParam,lParam);
    }
    }

    我把所有可以知道的错误都改了,现在还有一个没办法知道的错误 //错误如下:--------------------Configuration: myprog1 - Win32 Debug--------------------
    Compiling...
    myprog1.cpp
    D:\profiles\phf\My Documents\vcProject\myprogtest\myprog1.cpp(36) : error C2440: '=' : cannot convert from 'void *' to 'struct HBRUSH__ *'
            Conversion from 'void*' to pointer to non-'void' requires an explicit cast
    Error executing cl.exe.myprog1.exe - 1 error(s), 0 warning(s)
      

  7.   

    帮我看看呀,我想从底层学起,先不想用MFC向导...
      

  8.   

    wndClass.hbrBackground=GetStockObject(WHITE_BRUSH);
    改成
    wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    试试
            
    我看您的c语言还不过关。先把dos下的c学明白了在学windows的
      

  9.   

    wndClass.hbrBackground=GetStockObject(WHITE_BRUSH);
    改成
    wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    试试
            
    我看您的c语言还不过关。先把dos下的c学明白了在学windows的
      

  10.   

    wndClass.hbrBackground=GetStockObject(WHITE_BRUSH);
    改成
    wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    试试
            
    我看您的c语言还不过关。先把dos下的c学明白了在学windows的
      

  11.   

    wndClass.hbrBackground=GetStockObject(WHITE_BRUSH);
    改成
    wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    试试
            
    我看您的c语言还不过关。先把dos下的c学明白了在学windows的
      

  12.   

    wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
      

  13.   

    程序改动如下:
    //-------------
    //程序名myprog1.cpp
    //我的第一个windows程序
    //--------------#include <windows.h>LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsgId,WPARAM wParam,LPARAM lParam);
    int WINAPI WinMain(HINSTANCE hInsTance,HINSTANCE hPrevInstance,LPSTR pszCmdLine,int nCmdShow);int WINAPI WinMain(
        HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
        LPSTR    pszCmdLine,
        int nCmdShow)
    {
        static char szAppName[]="MyProg1";  //程序名
        HWND hWnd;                          //窗口句柄
        MSG msg;                            //消息类型
        WNDCLASS wndClass;                  //窗口类型    //注册
        //通常只要一次
        wndClass.lpszClassName=szAppName;
        wndClass.hInstance=hInstance;
        wndClass.lpfnWndProc=WindowProc;
        wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
        wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
        wndClass.lpszMenuName=NULL;
        wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
        wndClass.style=0; 
        wndClass.cbClsExtra=0;
        wndClass.cbWndExtra=0;
         
        if(RegisterClass(&wndClass)==0)//注册
            return 0;    //不能正确注册则退出    //建立窗口 
        hWnd=CreateWindow(szAppName,    //首先注册名称
                          szAppName,    //窗口标题
                          WS_OVERLAPPEDWINDOW,  //窗口类型
                          100,                    //窗口X位置
                          100,                    //窗口Y位置
                          300,                    //窗口X长度
                          200,                    //窗口Y长度
                          NULL,                  //父窗口的句柄
                          NULL,                  //窗口菜单的句柄
                          hInstance,            //当前窗口程序句柄
                          NULL);                    //所用参数
        if(hWnd==0)
            return 0;    //显示窗口
        ShowWindow(hWnd,nCmdShow);
        UpdateWindow(hWnd);    //消息循环
        while (GetMessage(&msg,NULL,0,0))
        {
            TranslateMessage(&msg);    //翻译消息
            DispatchMessage(&msg);    //调度消息
        }    return msg.wParam;
    }//---------------------------
    //窗口处理函数
    //---------------------------LRESULT CALLBACK WindowProc(
                                HWND hWnd,
                                UINT uMsgId,
                                WPARAM wParam,
                                LPARAM lParam
                                )
    {
        static char* pasIam   = "我是一个程序员!";
        switch(uMsgId)
        {
        case WM_PAINT:
            HDC hDC;
            PAINTSTRUCT paintStruct;
            hDC=BeginPaint(hWnd,&paintStruct);
            TextOut(hDC,
                0,
                0,
                pasIam,
                lstrlen(pasIam)
                );
            EndPaint(hWnd,&paintStruct);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        default:
            return DefWindowProc(hWnd,uMsgId,wParam,lParam);
        }
    }
      

  14.   

    谢谢各位!
    唉,我看了几本书,都没有要加类型转换(那些书都是很有名的),看来那写作者还不如你们这帮兄弟^_^
    我不知道它是HBRUSH型的,我用了(HWND),结果错了.....
    看来还是回头学学DOS下的 C了...