如何创建一个像任务栏一样的窗口?



我想问如何创建一个窗口的行为像任务栏(shell_traywind)?在一款名为Enable Viacam(面向残疾人的摄像鼠标)的windows应用程序中,我发现该应用程序在屏幕顶部创建了一个类似任务栏的窗口(见下图),将所有其他窗口拉到它下面。Enable_Viacam的窗口(屏幕顶部)

我使用Winspector软件来检查这个启用Viacam的窗口,以查看其WS_/WS_EX_属性,以便我尝试模拟它,但是用这些属性调用CreateWindowEx并没有给我想要的结果。

这是我的尝试(message loop &(此处未显示窗口程序)

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);

任何想法都非常感谢,谢谢你!

显然这种窗口类型被称为appbar我创建了样式为WS_EX_TOOLWINDOW和WS_POPUP的窗口,并遵循MSDN链接

我现在的代码是

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);

祝你们编程愉快

相关内容

最新更新