c++ - 如何创建一个行为类似于任务栏的窗口?
问题描述
我想问一下如何创建一个行为类似于任务栏(shell_traywnd)的窗口?在一个名为 Enable Viacam(残疾人相机鼠标)的 Windows 应用程序中,我看到该应用程序在屏幕顶部创建了一个类似任务栏的窗口(见下图),它将所有其他窗口拉到它下面。 Enable_Viacam 的窗口(屏幕顶部)
我使用 Winspector 软件检查此 Enable Viacam 的窗口以查看其 WS_ /WS_EX_属性,以便我尝试模拟它,但使用这些属性调用 CreateWindowEx 并没有给我想要的结果。
这是我的尝试(此处未显示消息循环和窗口过程)
hwnd = CreateWindowEx(
WS_EX_TOOLWINDOW | WS_EX_TOPMOST | WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_CONTROLPARENT,
"#32770","Window",
WS_OVERLAPPEDWINDOW | WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_BORDER | DS_3DLOOK,
0, /* x */
0, /* y */
GetSystemMetrics(SM_CXSCREEN), /* width */
50, /* height */
NULL,NULL,hInstance,NULL);
任何想法都非常感谢,谢谢!
解决方案
Apparently this window type is called an appbar I created window with style WS_EX_TOOLWINDOW and WS_POPUP and followed that MSDN link
My code now is
APPBARDATA abd = {0};
abd.cbSize = sizeof(APPBARDATA);
abd.hWnd = hwnd;
abd.uCallbackMessage = 888;
SHAppBarMessage(ABM_NEW, &abd);
abd.uEdge = ABE_TOP;
abd.rc.left = 0;
abd.rc.right = GetSystemMetrics(SM_CXSCREEN);
abd.rc.top = 0;
abd.rc.bottom = height;
SHAppBarMessage(ABM_QUERYPOS, &abd);
abd.rc.bottom = abd.rc.top + height;
SHAppBarMessage(ABM_SETPOS, &abd);
Have fun coding guys
推荐阅读
- java - 在拼写检查器中更新正确的拼写
- javascript - 如何在原生反应中获取json数据中的数组值?
- c++ - 带有字符串或结构键的 std::map
- php - 网址重写在 digitalocean 服务器上不起作用
- json - 访问嵌套的 JSON [String: Any] 对象并附加到它
- c# - 如何通过 ManagementObject 和 InvokeMethod() 将参数传递给 Windows 服务
- php - PHP - 在我的索引网站中包含页眉和页脚的问题
- php - 如何在搜索词中包含'
- c++ - libevent 中的多线程
- javascript - Hide and Show createBottomTabNavigator tabbar with Animation in react-native