winapi - qt5.12用winapi创建对话框
问题描述
我想在窗口上创建对话框,该对话框将显示在任务管理器之类的顶层(甚至游戏窗口)上。我写了下一段代码:
static const wchar_t* className = L"GraphDialog";
WNDCLASSEX wx = {};
wx.cbSize = sizeof(WNDCLASSEX);
wx.hInstance = GetModuleHandle(NULL);
wx.lpszClassName = className;
if ( RegisterClassEx(&wx) )
{
HWND h = CreateWindowEx(WS_EX_TOPMOST, (LPCWSTR)className, NULL, WS_POPUP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, NULL, NULL);
QWindow *qw = QWindow::fromWinId((WId)h);
if (qw)
{
GraphDialog* dialog = qobject_cast<GraphDialog*>(createWindowContainer(qw));
if (dialog)
{
dialog->init(...);
dialog->exec();
}
}
}
GraphDialog 是 QDialog。不幸的是,当调用函数 CreateWindowEx 时,我有错误 SIGSEGV 。
解决方案
您注册的班级尚未设置导致SIGSEGV的lpfnWndProc成员。
推荐阅读
- c# - 为什么不能在 C# 中初始化 Main 侧的结构值
- vue.js - TypeError:无法读取未定义的黑暗属性
- python - Python多线程方法
- assembly - “MOV AX,[BX]”实际上是做什么的?
- regex - 如何在 Combobox 中仅保留特定项目
- mysql - 连接到 mysql 容器:docker compose 项目中的 localhost 相当于什么?
- python - 检测矩形是否会重叠的公式(Python Turtle)?
- arrays - 更新函数内部的二维数组
- javascript - JavaScript:简单感知器无法训练
- function - 在云功能中搜索附近的用户