gpt4 book ai didi

c++ - "hInstance"未定义。 C++ WIN32 APP

转载 作者:太空宇宙 更新时间:2023-11-04 15:17:49 26 4
gpt4 key购买 nike

Win32 应用程序。在 MyRegisterClass 中,wc.hInsance = hInstance。显然“hInstane 是一个未定义的标识符。这是为什么?我使用的是 Visual Studio 2013,我正在阅读 Jonathan S Harbors 关于游戏编程的书。

代码。

include <Windows.h>
include <time.h>
include <iostream>

using namespace std;

const string APPTITLE = "Game Loop";
HWND window;
HDC device;

bool gameover = false;

void DrawBitmap(char *filename, int x, int y){
HBITMAP image = (HBITMAP)LoadImage(0, "c.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

BITMAP bm;
GetObject(image, sizeof(BITMAP), &bm);

HDC hdcImage = CreateCompatibleDC(device);
SelectObject(hdcImage, image);

BitBlt(
device,
x, y,
bm.bmWidth, bm.bmHeight,
hdcImage,
0, 0,
SRCCOPY);

DeleteDC(hdcImage);
DeleteObject((HBITMAP)image);
}

bool Game_Init(){

srand(time(NULL));

return 1;
}

void Game_Run(){

if (gameover == true)return;

RECT rect;
GetClientRect(window, &rect);
int x = rand() % (rect.right - rect.left);
int y = rand() % (rect.bottom - rect.top);
DrawBitmap("c.bmp", x, y);
}

void Game_End(){
ReleaseDC(window, device);
}

LRESULT CALLBACK WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
switch (message){

case WM_DESTROY:{
gameover = true;
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}

ATOM MyRegisterClass(HINSTANCE hInstance); {
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WinProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = APPTITLE.c_str();
wc.hIconSm = NULL;
}
}

最佳答案

代码的结尾应该是:

}
ATOM MyRegisterClass(HINSTANCE hInstance) {
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WinProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = APPTITLE.c_str();
wc.hIconSm = NULL;
return ::RegisterClassEx(&wc);
}

注意:

  • MyRegisterClass 定义中没有分号
  • MyRegisterClass 末尾只有一个大括号
  • MyRegisterClass 定义上方添加右大括号

这样代码可以正确编译。

关于c++ - "hInstance"未定义。 C++ WIN32 APP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27788369/

26 4 0
文章推荐: css - 是否可以在
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com