我是菜鸟,在window编程出现错误,求大神指导!!

问题描述

我是菜鸟,在window编程出现错误,求大神指导!!

//头文件
#include

#include
#pragma comment(lib,"Winmm.lib")

//宏定义
#define WINDOW_WIDTH 800//窗口宽度定义的宏,方便修改
#define WINDOW_HEIGHT 600//高度
#define WINDOW_TITLE L"[致我们永不熄灭的游戏开发梦想]GDI程序核心框架"//标题
//全局函数声明
HDC g_hdc=NULL;//全局设备环境句柄
HPEN g_hPen[7]={0};
HBRUSH g_hBrush[7]={0};
int g_iPenStyle[7]={PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME};
int g_iBrushStyle[6]={HS_VERTICAL,HS_HORIZONTAL,HS_CROSS,HS_DIAGCROSS,HS_FDIAGONAL,HS_BDIAGONAL};

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
BOOL Game_Init(HWND hwnd);//资源的初始化函数
VOID Game_Paint(HWND hwnd);//绘图代码书写函数
BOOL Game_CleanUp(HWND hwnd);//资源清理函数
// [WinMain()函数]
//程序入口
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
//1、设计完整的窗口类
{
WNDCLASSEX wndClass={0};//定义窗口类
wndClass.cbSize=sizeof(WNDCLASSEX);//结构体的字节数大小
wndClass.style=CS_HREDRAW | CS_VREDRAW;//窗口样式
wndClass.lpfnWndProc=WndProc;//指向窗口过程函数的指针
wndClass.cbClsExtra=0;
wndClass.cbWndExtra=0;
wndClass.hInstance=hInstance;//句柄
wndClass.hIcon=(HICON)::LoadImage(NULL,L"icon.ico",IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndClass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);
wndClass.lpszMenuName=NULL;
wndClass.lpszClassName=L"ForTheDreamOfGameDevelop";
//2、注册窗口类
if(!RegisterClassEx(&wndClass))
return -1;
//3、创建窗口
HWND hwnd=CreateWindow(L"ForTheDreamOfGameDevelop",WINDOW_TITLE,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,WINDOW_WIDTH,WINDOW_HEIGHT,NULL,NULL,hInstance,NULL);
//4、窗口的移动、更新
MoveWindow(hwnd,250,80,WINDOW_WIDTH,WINDOW_HEIGHT,true);
ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);
//游戏资源的初始化。若失败,返回FALSE
if(!Game_Init(hwnd))
{
MessageBox(hwnd,L"资源初始化失败",L"消息窗口",0);
return FALSE;
}
//5、消息循环
MSG msg={0};
while(msg.message!=WM_QUIT)
{
if(PeekMessage(&msg,0,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
//6、窗口注销
UnregisterClass(L"ForTheDreamOfGameDevelop",wndClass.hInstance);
return 0;
}
//窗口过程函数WndProc,对窗口消息处理
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT paintStruct;//定义该结构体记录绘制信息

switch(message)
{
case WM_PAINT://客户区重绘消息
    g_hdc=BeginPaint(hwnd,&paintStruct);
    Game_Paint(hwnd);
    EndPaint(hwnd,&paintStruct);
    ValidateRect(hwnd,NULL);//更新客户区的显示
    break;

case WM_KEYDOWN://键盘按下消息
    if(wParam==VK_ESCAPE)//如果ESC按下
        DestroyWindow(hwnd);//销毁窗口,并发送一条WM_DESTROY消息
    break;

case WM_DESTROY://若是窗口销毁消息
    Game_CleanUp(hwnd);
    PostQuitMessage(0);//响应WM_DESTROY消息
    break;

default:
    return DefWindowProc(hwnd,message,wParam,lParam);//调用默认的窗口消息
}
return 0;

}
// [Gmane_Init()函数]
BOOL Gmane_Init(HWND hwnd)
{
g_hdc=GetDC(hwnd);
srand(timeGetTime());//初始化时间种子
//随机初始化画笔、画刷颜色值
for(int i=0;i<=6;i++)
{
g_hPen[i]=CreatePen(g_iPenStyle[i],1,RGB(rand()%256,rand()%256,rand()%256));
if(i=6)
g_hBrush[i]=CreateSolidBrush(RGB(rand()%256,rand()%256,rand()%256));
else
g_hBrush[i]=CreateHatchBrush(g_iPenStyle[i],RGB(rand()%256,rand()%256,rand()%256));

}

Game_Paint(hwnd);
ReleaseDC(hwnd,g_hdc);
return TRUE;

}
// [Gmane_Pnit()函数]
VOID Gmane_Pnit(HWND hwnd)
{
int y=0;
for(int i=0;i<=6;i++)
{
y=(i+1)*70;
SelectObject(g_hdc,g_hPen[i]);
MoveToEx(g_hdc,30,y,NULL);
LineTo(g_hdc,100,y);
}
int x1=120;
int x2=190;
for(int i=0;i<=6;i++)
{
SelectObject(g_hdc,g_hBrush[i]);
Rectangle(g_hdc,x1,70,x2,y);
x1+=90;
x2+=90;
}
}
//【Gmane_CleanUp()函数】
BOOL Gmane_CleanUp(HWND hwnd )
{
for(int i=0;i<=6;i++)
{
DeleteObject(g_hPen[i]);
DeleteObject(g_hBrush[i]);

}
return TRUE;

}

main.obj : error LNK2019: 无法解析的外部符号 "int cdecl Game_Init(struct HWND *)" (?Game_Init@@YAHPAUHWND__@@@Z),该符号在函数 WinMain@16 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "int __cdecl Game_CleanUp(struct HWND
_ *)" (?Game_CleanUp@@YAHPAUHWND__@@@Z),该符号在函数 "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "void cdecl Game_Paint(struct HWND *)" (?Game_Paint@@YAXPAUHWND__@@@Z),该符号在函数 "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用

解决方案

Game_Init 这些函数实现的cpp有没有一起编译

解决方案二:

大致就是没有找到那些函数的实现,你找找那些函数在哪。

解决方案三:

好东西,谢谢分享~~~~~~~~~~~~~~

时间: 2024-09-20 17:37:51

我是菜鸟,在window编程出现错误,求大神指导!!的相关文章

android运行是错误 求大神指导 在线等待

问题描述 android运行是错误 求大神指导 在线等待 java.lang.IllegalArgumentException: Argument not valid at org.eclipse.swt.SWT.error(SWT.java:4342) at org.eclipse.swt.SWT.error(SWT.java:4276) at org.eclipse.swt.SWT.error(SWT.java:4247) at org.eclipse.swt.widgets.Widget.

flash builder-flex 刚刚接触,求大神指导指导 啊啊

问题描述 flex 刚刚接触,求大神指导指导 啊啊 如图,上面的五个框,里面输入值,点击确定,在下面的表格中显示,不用链接数据库,刚刚刚,接触flex,求大神指导,帮忙写一小段代码 解决方案 求前辈指导java编程错误 求大神指导

如何快速排序-求大神指导,想了好久了,

问题描述 求大神指导,想了好久了, 一个结构体数组,里面有65000条信息都是无序的,只利用结构体里的linkid进行排序,如何用快速排序对这些数据进行排序---帮忙写一下详细代码! 解决方案 http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.html 用库函数快速排序,参考里面的对结构体排序 解决方案二: java编程错误 求大神指导求大神指导,本人初学求大神路过指导ZOJ3597 Hit the Target! 解决方案三:

android 类qq空间图片查看器。出现好多错误 求大神帮忙。小女涉入甚浅。

问题描述 android 类qq空间图片查看器.出现好多错误 求大神帮忙.小女涉入甚浅. 11-20 11:26:39.629: E/AndroidRuntime(1136): FATAL EXCEPTION: main 11-20 11:26:39.629: E/AndroidRuntime(1136): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.desktop/co

android-Android 写事件监听 真机调试出现闪退(我是新手,刚学Android,求大神指教)

问题描述 Android 写事件监听 真机调试出现闪退(我是新手,刚学Android,求大神指教) 这是我的程序: ImageView imageView = (ImageView) findViewById(R.id.login_image); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); 这是错误日志: 03-08 18:10:43

mysql-MySQL安装过程中遇到3个问题.菜鸟自学之路好难求大神

问题描述 MySQL安装过程中遇到3个问题.菜鸟自学之路好难求大神 我实在是没招了!求个大神给指导一下.希望可以帮我远程操作一下.按照自学的视频 2015年1月9号第一次学mysql,安装完mysql,一点finish,弹出配置的那个窗口. 可以使用了.真是激动人心. 当天按照视频又使用了SQLyogEnt.exe这个软件,当然了一切都是那么的正常. 学习完毕,我按了一下ctrl+s想保存一下,以为和java一样,一按没想到还要存储到一个目录下,于是存储到一个目录下. DOS窗口下和SQLyog

语句错误 求打神指导!!!!!

问题描述 语句错误 求打神指导!!!!! var id =window.document.getElementById(atr).style.backgroundColor = "#ff6a00"; 不能改变背景 有什么错误么? 解决方案 atr加个引号............getElementById("atr")..............

异常-opencv3新手编程求助,跪求大神解答

问题描述 opencv3新手编程求助,跪求大神解答 代码如下: #include #include #include using namespace std; using namespace cv; bool MultiChannelBlending(); int main(){ if (MultiChannelBlending()){ cout << endl << "尼玛真费劲!"; } waitKey(); return 0; } bool MultiCh

字符-一道acm水题 all in all 一直找不出错误 求大神解答

问题描述 一道acm水题 all in all 一直找不出错误 求大神解答 描述字符串s和t均由字母组成,若在t中除去一些字母能够得到s,我们就说s是t的一个子串.比如abc就是acbefc的子串(acbefc去掉第二.第四.第五个字符后就得到abc)输入有若干组输入数据,每组一行,分别为字符串s和t,s与t之间用空格隔开输出对于一组s与t,若s是t的子串,则输出Yes,否则输出No 样例输入sequence subsequence abc acb VERDI vivaVittorioEmanu