- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我的怀疑是愚蠢的或愚蠢的,请原谅我。我对 DirectX 编程完全陌生。只要有 C++ 知识(非常基本的 COM 知识)。
以下代码示例来自 MSDN Creating D3D device其中解释了如何从头开始创建 D3D 设备。
MyDoubt 是:
Here the function "pD3D->CreateDeviceEx()" takes in a parameter HWND hwnd. What if I am trying to create a D3D device from a commadline C++ win32 app where I need to use some of the functions in D3D device's interfaces. How do I get the HWND field. In this case how do I create D3D device. PLease explain in detail.
HRESULT InitD3D9Ex( /* IN */ HWND hWnd, /* OUT */ IDirect3DDevice9Ex ** ppD3DDevice )
{
HRESULT hr = E_FAIL;
IDirect3D9Ex * pD3D = NULL;
IDirect3DDevice9Ex * pDevice = NULL;
if(ppD3DDevice == NULL)
{
return hr;
}
// Create the D3D object, which is needed to create the D3DDevice.
if(FAILED(hr = Direct3DCreate9Ex( D3D_SDK_VERSION, &pD3D )))
{
*ppD3DDevice = NULL;
return hr;
}
// Set up the structure used to create the D3DDevice.
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
// Create the Direct3D device.
if( FAILED( hr = pD3D->CreateDeviceEx( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, NULL, &pDevice ) ) )
{
*ppD3DDevice = NULL;
return hr;
}
// Device state would normally be set here
*ppD3DDevice = pDevice;
return hr;
}
最佳答案
在 Windows 中,所有视觉对象都由窗口句柄控制。您不能创建 D3D“设备”并将其附加到“无”。您必须将“D3D 设备”与某个窗口(您自己的窗口或桌面)相关联。
你的控制台窗口是由系统创建的,你无法控制它的创建标志,所以即使你使用 GetConsoleWindow功能,您不能在 Direct3D 设备创建功能中使用此 HWND(这可能随着 Aero 的引入而改变)。
您无法避免在您的控制台应用程序中创建另一个窗口句柄。使用 RegisterWindowClass
和 CreateWindow
函数创建一个新窗口或找到您桌面的句柄(我怀疑您会想要那个)。
关于c++ - 创建没有 HWND 输入参数的 D3D 设备到 MSFT CreateDevice() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13137047/
如何将 hwnd 类型数据存储和检索到一个平面文件中,并将其返回到 hwnd 类型变量中? 我是这样写的: HWND g_hWndApp, g_hWndApp1; ofstream myfile; m
我需要一些具体的帮助。我知道类名、所有者 hwnd 和窗口的大小。我如何获得它的hwnd?或者,至少,获取满足这些条件的所有窗口的列表。 提前致谢! 瓦利 最佳答案 您可以尝试使用此代码。它将为您提供
我确实了解如何重载运算符,但显然不完全了解。 谁能解释一下这部分的用法 WWindow::operator HWND() { // This overloaded operator allow
我尝试使用 DirectXTK 在我的游戏引擎中实现鼠标和键盘支持。这对于键盘来说非常简单,但是我在实现适当的鼠标支持方面遇到了问题。我在关注 THIS用于在我的引擎中实现鼠标。这篇来自 Micros
我有 2 个应用程序,一个是隐藏窗口(“hW”),另一个是控制台应用程序(“CA”),来自我想向硬件发送命令。在控制台应用程序中,我得到了硬件句柄,这是一个问题:如果我正在运行: PostMessag
我一直在改进我一直致力于的类(class),其中之一就是创建库来处理某些在我的主项目中并不真正需要看到的任务。但是,当我调用该类并实例化我刚刚创建的库时,我得到: Intellisense: argu
我正在应用程序中处理 ESC 键,收到此键后我希望关闭当前窗口。 我应该简单地调用DestroyWindow(hWnd)还是应该SendMessage(WM_CLOSE, hWnd, 0, 0),或者
我是说 WndProc_OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify) 可以这样重写 WndProc_OnCommand(hWn
假设 GetDC(hWnd) 作为 WM_CREATE 上的第一条 指令被调用,对于窗口 hWnd, GetDC() 是否可能返回 NULL? 我担心 GetDC() 可能因资源不足而失败。当发生这种
我是这个社区的新手,在使用我的自动化脚本 1 时遇到问题,我想获取 HWND 的创建时间。 我在从 FindWindowEx 检索到的数组中有一组 HWND,我想在数组中找到最后根据系统时间创建的 H
我使用CreateCoreWebView2Host()方法创建了边缘浏览器窗口。此方法使用父窗口句柄并创建子窗口,我们可以在其中导航网页。导航完成后,我需要返回我的窗口句柄,但我认为我无法返回。 在S
当我们使用WindowFromPoint winapi函数时,我们通常可以得到这样的情况:Point指定窗口内的某个控件。在这种情况下,WindowFromPoint 返回该控件的句柄,而不是返回处理
我想知道您是否可以将句柄转换为窗口“HWND”。我需要使用“FindWindow”方法调用“PostMessage”函数。 我目前必须采购 HANDLE mainProcess; BOOL APIEN
为什么我在此处将桌面作为我的模态对话框的父 HWND? class CSaveProfileAsDlg: public CSimpleDialog { .... LRESULT OnInit
我正在将我的 HWND 传递给一个子流程,这样它就可以向我发送有关其进度的消息。有时我从未收到来自子流程的任何消息。在调查过程中,我发现我传递给子进程的 GetSafeHwnd() 似乎返回了我不期望
我又是伙计们,到目前为止,我已经设法学习了有关窗口创建和消息系统的大多数基础知识,现在我想问一下格式化,因为我没有设法在谷歌上找到任何关于我的特殊情况的信息。这是到目前为止的样子: 其中带有 0 的框
GetDesktopWindow() 仅返回主桌面。我也试过 EnumDisplayMonitors(),但没有返回桌面句柄。 最佳答案 您可以使用可用的函数来执行此操作,如下所示: 方法 1(对于重
我正在尝试创建一个简单的窗口,但我遇到了一些问题。编译器不会报错,但它根本无法创建窗口的 hWnd。它还表示正在使用“msg”变量而未初始化。这不是错误,只是警告,但是我感到不舒服。当我单击调试屏幕中
如何在另一个第三方应用程序中使用 C++ 获取 Combobox 的 HWND? MSDN 有一个函数叫做 GetDlgItem()但是第二个参数需要控件的 ID。有函数 GetDlgCtrlID()
当我编译我的代码时,应该打开一个窗口,但它没有。我已经创建了一个类、HWND 和应用程序处理程序;依然没有。 我有点新,很抱歉这个问题。 应用程序运行良好,没有错误,但窗口似乎没有出现。 #inclu
我是一名优秀的程序员,十分优秀!