gpt4 book ai didi

c++ - 为什么我不能初始化 WNDCLASSEX wc?

转载 作者:行者123 更新时间:2023-11-28 00:49:43 28 4
gpt4 key购买 nike

我在我的头文件中声明属性 WNDCLASSEX wc,如下所示:

private:
HWND hWnd;
LPDIRECT3D9 g_pD3D; // Used to create the D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice; // Our rendering device
WNDCLASSEX wc;

我想在我的 Init() 函数中初始化它,如下所示:

void RAT_RendererDX9::Init(RAT_WindowManager* argWMan)
{
wMan = argWMan;

// Register the window class
wc =
{
sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0, 0,
GetModuleHandle( NULL ), NULL, NULL, NULL, NULL,
"D3D Tutorial", NULL
};
RegisterClassEx( &wc );

hWnd = CreateWindow( "", "abc", WS_OVERLAPPEDWINDOW, 10, 10, 20, 20,
NULL, NULL, wc.hInstance, NULL );

g_pD3D = (LPDIRECT3D9)Direct3DCreate9( D3D_SDK_VERSION );

D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof( d3dpp ) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice );
}

但是,我因此得到以下错误:

1>e:\rat_engine\rat_engine\rat_engine\rat_rendererdx9.cpp(18): errorC2059: syntax error : '{'

1>e:\rat_engine\rat_engine\rat_engine\rat_rendererdx9.cpp(18): errorC2143: syntax error : missing ';' before '{'

1>e:\rat_engine\rat_engine\rat_engine\rat_rendererdx9.cpp(19): errorC3867: 'RAT_ENGINE::RAT_RendererDX9::MsgProc': function call missingargument list; use '&RAT_ENGINE::RAT_RendererDX9::MsgProc' to create apointer to member

1>e:\rat_engine\rat_engine\rat_engine\rat_rendererdx9.cpp(22): errorC2143: syntax error : missing ';' before '}'

但我实际上是从教程中复制了初始化,唯一的异常(exception)是 wc 在 WinMain() 函数中初始化,而不是在 Init() 函数中初始化。

为什么它不起作用,我该如何解决?

最佳答案

该语法适用于复制初始化 聚合,但您的实际上是一个赋值。当您执行 RAT_RendererDX9 类的构造函数时,对象 wc 会默认构造。

Init 函数中的赋值实际上等同于:

wc.operator = (...);

如果您想使用该语法,您可以尝试将您的分配更改为以下内容:

WNDCLASSEX wndClass =
{
sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0, 0,
GetModuleHandle( NULL ), NULL, NULL, NULL, NULL,
"D3D Tutorial", NULL
};

wc = wndClass;

关于c++ - 为什么我不能初始化 WNDCLASSEX wc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14739385/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com