C++ 如何将HWND传递到我的图形类以创建图形设备

C++ 如何将HWND传递到我的图形类以创建图形设备,c++,function,visual-c++,directx,parameter-passing,C++,Function,Visual C++,Directx,Parameter Passing,嗯。所以,在我转到VS 2012之前,我正在尝试制作一个小框架来处理图形。 我已经可以使窗口出现,甚至创建了一个图形类,但当我尝试将HWND从窗口传递到图形类时,我会出现以下错误: 1>------ Build started: Project: SZJerkXXI's Framework, Configuration: Debug Win32 ------ 1> MWindow.cpp 1>DXGraphics.obj : error LNK2019: unresolved

嗯。所以,在我转到VS 2012之前,我正在尝试制作一个小框架来处理图形。 我已经可以使窗口出现,甚至创建了一个图形类,但当我尝试将HWND从窗口传递到图形类时,我会出现以下错误:

1>------ Build started: Project: SZJerkXXI's Framework, Configuration: Debug Win32 ------
1>  MWindow.cpp
1>DXGraphics.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function "public: __thiscall DXGraphics::DXGraphics(struct HWND__ *)" ( 0DXGraphics@@QAE@PAUHWND__@@@Z)
1>C:\Users\jader\Documents\Visual Studio 2010\Projects\SZJerkXXI's     Framework\Debug\SZJerkXXI's Framework.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
注册、创建和显示带有HWND“HWND”的窗口后。 接下来我要做的是为我的类创建一个对象:

DXGraphics Game(hWnd)
因为我的construcor看起来像

DXGraphics::DXGraphics(HWND hWnd)
{
pDirect3D = Direct3DCreate9( D3D_SDK_VERSION );

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

pDirect3D->CreateDevice( D3DADAPTER_DEFAULT,
                         D3DDEVTYPE_HAL,
                         hWnd, /*  <-- handle to the window I can't pass... */
                         D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE,
                         &d3dpp,
                         &pDevice );
}
DXGraphics::DXGraphics(HWND-HWND)
{
pDirect3D=Direct3DCreate9(D3D_SDK_版本);
D3D当前参数d3dpp;
零内存(&d3dpp,sizeof(d3dpp));
d3dpp.Windowed=TRUE;
d3dpp.SwapEffect=d3dswapeeffect_DISCARD;
d3dpp.BackBufferFormat=D3DFMT_未知;
d3dpp.PresentationInterval=D3DPRESENT\u INTERVAL\u ONE;
d3dpp.Flags=D3DPRESENTFLAG\u LOCKABLE\u BACKBUFFER;
pDirect3D->CreateDevice(D3DADAPTER_默认值,
D3DDEVTYPE_HAL,

hWnd,/*这与传递句柄无关。您需要链接到Direct3D库。
Direct3DCreate9
的文档在底部指出了这一点。好的,由于与我的visual studio版本冲突,directx sdk似乎没有正确安装。但现在的问题是,在我卸载vs 2010后,更正了y安装了sdk并重新安装了visual studio编译器找不到iostream、string、cstdlib和其他我一直在使用的头文件。它似乎默认为directx头文件,因为它仍然可以使用这些头文件。我如何修复或重置此问题?@JaderJRivera当您删除VS2010时,您是否也删除了运行时?(即:删除软件->visual studio运行时等)@Florisvelleman。我不太确定。我所做的只是进入控制面板并卸载所有可重新编译的visual studio,因为我不知道为什么我会有2005、2008和2010版本。我还删除了QLServer(或类似的名称)。然后,当我重新安装visual srudio时,它提示我是否要安装QLServer 2008,因为我认为这并不重要,我拒绝了。这不是因为窗口句柄,这是一个链接错误,您需要链接到d3d9.lib才能使用函数Direct3DCreate9