将儿童控制移至顶部
Moving a child control to top
当它们在 Windows API 中重叠时,如何将控件移至另一个控制。
例如,我创建2个按钮 b1 和 b2
HWND b1 = CreateWindow(L"BUTTON", L"button1", WS_CHILD | WS_VISIBLE | WS_TABSTOP,
100, 100, 200, 50, my_Window_handle, (HMENU)100, NULL, NULL);
HWND b2 = CreateWindow(L"BUTTON", L"button2", WS_CHILD | WS_VISIBLE | WS_TABSTOP,
50, 100, 250, 50, my_Window_handle, (HMENU)101, NULL, NULL);
我想将B1移至B2或任何控件的顶部。我将函数 setWindowPos 用作
SetWindowPos(b1, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
但ID无法正常工作。
您不希望孩子窗口最高,您希望它处于Z订单的顶部。这样:
SetWindowPos(b1, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
文档说HWND_TOP
:
将窗口放在z订单的顶部。
最上方将无法使用,因为子窗口必须与其parent的z订单保持在同一z ording和setWindowpos,并使用hwnd_topmmixt保持hwnd_insertafter将尝试更改它。您在这里唯一需要的是 WS_CLIPSIBLINGS ,然后 B1 将保留在 B2 的顶部。
。 b1 = CreateWindow(L"BUTTON", L"button1", WS_CHILD | WS_VISIBLE | WS_TABSTOP,
100, 100, 200, 50, hWnd, (HMENU)100, NULL, NULL);
b2 = CreateWindow(L"BUTTON", L"button2", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_CLIPSIBLINGS, 50, 100, 250, 50, hWnd, (HMENU)101, NULL, NULL);
以及设置z订单,如果它们重叠,则需要在控件上设置WS_CLIPSIBLINGS
样式,以阻止它们彼此绘制。
相关文章:
- 控制允许动态运行c++的并发操作数
- 从控制台中删除最后打印的元素
- 是否可以使用if constexpr删除控制流语句
- 无法在windows控制台中为C++程序提供必要的输入
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 程序顶部的声明与定义(最佳实践)
- 查找 GCD:并非所有控制路径都返回值
- 通过 API 控制 DJI 相机
- 禁止在控制台上记录谷神星
- 是否可以使用一个类来控制 C++ 中另一个类的对象?(阿杜伊诺)
- 如何删除列出的"QGraphicsPathItem"对象以控制进程内存使用情况?
- 顶部带有搜索框的组合框
- 我在 C++ 代码中遇到错误警告:控制到达非空函数 [-Wreturn 类型] 的末尾
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- wx通用目录控制错误"wxTheFileIconsTable was nullptr"
- main() 中的 std::cout 在调试期间不会在调试控制台中打印任何内容
- Cython通过浮点数的最快方式,用于高频控制回路
- 用户控制从 c++ 到 java 脚本的 Webassembly 访问调用
- 将儿童控制移至顶部
- 反转滑块控制顶部 MFC C++