winapi - 如何在主窗口外创建窗口子窗口
问题描述
我已经学会了如何在父窗口中创建一个子窗口,但我想在程序的主窗口之外创建一个窗口。如果我没记错的话,主窗口之外的窗口仍然是子窗口,对吧?它有自己的需要注册的类吗?我试着制作另一个窗口,但改变了参数。我得到了一些有趣的结果,但不是一个单独的窗口。
解决方案
- 只需使用
WS_POPUP
以下代码中的样式创建它。 - 不,子窗口不能在父窗口之外,WS_POPUP 窗口可以(此样式与 WS_CHILD 样式不兼容)。
- 同时它会有指向父节点的指针,并在被询问时返回它。
- 是的,它应该有自己的要注册的类。
编码:
WNDCLASS wc;
wc.style = CS_DBLCLKS;
wc.lpfnWndProc = (WNDPROC) WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = ::LoadIcon(hInstance, IDI_APPLICATION);
wc.hCursor = ::LoadCursor(hInstance, IDC_ARROW);
wc.hbrBackground = 0;
wc.lpszMenuName = 0;
wc.lpszClassName = L"DebugConsoleWindowClass";
if (::RegisterClass(&wc) == NULL) return false;
::CreateWindowEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW,
L"DebugConsoleWindowClass",
L"DebugConsole",
WS_POPUP | WS_OVERLAPPED | WS_CAPTION,
0, 0, 400, 200,
hParentWnd,
(HMENU)NULL,
hInstance,
(LPVOID)this);
(所有名称和变量都是虚构的)hParentWnd
。hInstance
推荐阅读
- python - Python Botocore 从数据文件夹中删除未使用的文件
- elasticsearch - Elasticsearch 速度与云(本地主机到生产)
- swift - 如何对在 Swift 中调用的私有方法进行单元测试
- css - 如何使用 css 定位我的表单,我只有 wordpress 的简码?
- python - 如何修复 SettingWithCopyWarning Python
- javascript - 从 vuejs 中的方法设置数据
- android - mvvm 匕首 2 ViewModelInjector
- python - Cython 与 Python 2.6.6 兼容
- c# - DataTable排序合并后排序不正确
- php - 刷新或关闭浏览器后数据消失 - Laravel