游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1644|回复: 2

《游戏编程指南》第三章的这段代码哪不对?我是菜鸟,

[复制链接]

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2006-5-13 21:29:00 | 显示全部楼层 |阅读模式
小弟看《游戏编程指南》第三章看见一段代码。我照着书打到了vc6中,编译通过了,在链接的时候提示错误:
--------------------Configuration: pro008 - Win32 Debug--------------------
Linking...
1.obj : error LNK2001: unresolved external symbol "int __cdecl InitWindow(struct HINSTANCE__ *,int)" (?InitWindow@@YAHPAUHINSTANCE__@@H@Z)
Debug/pro008.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

pro008.exe - 2 error(s), 0 warning(s)


源代码如下:
#include<windows.h>
BOOL InitWindow(HINSTANCE hInstance,int CmdShow);
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM IParam);
HWND hwnd;
int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpCmdLine,int nCmdShow)
{
        MSG msg;
        if (!InitWindow(hInstance,nCmdShow)) return FALSE;
        while(1)
        {
                if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
                {
                        if (msg.message==WM_QUIT) break;
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
        }
        return msg.wParam;
}
static BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
        WNDCLASS wc;
        wc.style=NULL;
        wc.lpfnWndProc=(WNDPROC)WinProc;
        wc.cbClsExtra=0;
        wc.cbWndExtra=0;
        wc.hInstance=hInstance;
        wc.hIcon=NULL;
        wc.hCursor=NULL;
        wc.hbrBackground=NULL;
        wc.lpszMenuName=NULL;
        wc.lpszClassName="MY_Test";
        RegisterClass(&wc);
        hwnd=CreateWindow("MY_Test",
        "My first program",
        WS_POPUP|WS_MAXIMIZE,0,0,
        GetSystemMetrics(SM_CXSCREEN),
        GetSystemMetrics(SM_CYSCREEN),
        NULL,NULL,hInstance,NULL);
        if(!hwnd) return FALSE;
        ShowWindow(hwnd,nCmdShow);
        UpdateWindow(hwnd);
        return TRUE;
}

LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM IParam)
{
        switch(message)
        {
        case WM_KEYDOWN:
                switch(wParam)
                {
                case VK_ESCAPE:
                        MessageBox(hWnd,"ESC 健按下了!确定后退出!","Keyboard",MB_OK);
                        PostQuitMessage(0);
                        break;
                }
                break;
                case WM_RBUTTONDOWN:
                        MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK);
                        break;

                case WM_DESTROY:
                                PostQuitMessage(0);
                                break;
        }
        return DefWindowProc(hWnd,message,wParam,IParam);
}



我上网搜索的时候收到一个别人也是问的这种问题,都是这段代码的这种问题。请各位帮帮我,我是菜鸟不懂的滴。
谢谢。
另外我从网上下了《游戏编程指南》的代码,可以运行正常,不过好像和这个书上面的那段不是很一样呀。

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-5-14 00:11:00 | 显示全部楼层

Re:《游戏编程指南》第三章的这段代码哪不对?我是菜鸟

static BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)这行
函数名多了个 s

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-5-14 11:07:00 | 显示全部楼层

Re: 《游戏编程指南》第三章的这段代码哪不对?我是菜鸟

多谢ljm大哥指导
谢谢

[em1]
就是这个问题,哎,是我太不细心了,以后一定注意。 [em4]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 11:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表