c++ - 使 Direct2dFactory 指针无效的按钮创建 Windows C++
问题描述
我正在 MS Visual Studio 2017 中编写一个 Windows 应用程序,但在使用 Direct 2D Factory 对象和按钮时遇到了一点麻烦。看来,如果我首先创建直接 2D Factory 对象,也就是运行:
HRESULT AppObject::CreateDeviceIndependentResources(){
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED,&m_pDirect2dFactory);
return hr;
}
工厂对象是使用存储在“m_pDirect2dFactory”中的指针正确创建的。该对象指针在主窗口的创建过程中持续存在:
m_hwnd = CreateWindowEx(0, ...
并通过创建子窗口:
m_hwndRenderView = CreateWindowEx(0,
L"AppChildWindow",
L"ChildWinName", WS_CHILD | WS_BORDER | WS_VISIBLE,
...
但是,当代码创建按钮时:
m_hwndButton = CreateWindow(L"BUTTON",
TEXT("button name"),
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
m_buttonStart_pixX,
cur_button_pixY,
button_pix_width,
button_pix_height,
m_hwnd,
(HMENU)(int)(CORE_BUTTON_IDSTART+1),
(HINSTANCE)GetWindowLong(m_hwnd, GWL_HINSTANCE),
NULL);
指针“m_pDirect2dFactory”的值更改为明显无效的值,这会在调用 m_pDirect2dFactory->Release() 时导致错误。或者,换句话说,按钮的创建篡改了由 D2D1CreateFactory 创建的工厂对象。
这是一个已知问题吗?
解决方案
推荐阅读
- android - 如何使用远程消息启动 android 应用程序?
- regex - 如何用引号将所有单元格括起来?
- r - 使用 dplyr 仅过滤唯一值列表中的一个
- angular - 有没有办法让同一组件上的不同指令调用在它们之间进行通信?
- r - 更改ggboxplot中点的SIZE和ALPHA?(右)
- webpack - 使用 webpack 时未加载 scss 文件
- java - 在 VSCode 中使用 jar 文件中的类
- python - Plotly:如何控制双 y 轴前面的轨迹?
- javascript - 如何从对象数组中选择所有特定的键值
- resources - Adobe Acrobat Pro 在 OCR 期间未使用所有资源 - 这正常吗?