设置任务栏位置Win7 c ++

时间:2012-04-22 06:27:36

标签: c++ winapi

是否可以使用Windows API设置任务栏位置/宽度/高度? 我正在运行3台显示器,我想阻止任务栏跨越所有显示器,而不是一直保持在最佳状态。

这是我到目前为止没有运气的尝试......我不确定我的代码是否有问题,或者只是被阻止了。

#include <iostream>
#include "Windows.h"

using namespace std;

class MyClass
{
public:
    int getTaskBarHeight();
    void setTaskBarPos();
};

int MyClass::getTaskBarHeight()
{
    RECT rect;
    HWND taskBar = FindWindow(L"Shell_traywnd", NULL);
    if(taskBar && GetWindowRect(taskBar, &rect)) {
        return rect.bottom - rect.top;
    }
}

void MyClass::setTaskBarPos()
{
    RECT rect;
    HWND taskBar = FindWindow(L"Shell_traywnd", NULL);
    if(taskBar && GetWindowRect(taskBar, &rect)) {

        SetWindowPos(taskBar, HWND_TOPMOST, 0, 0, 1080, 46, SWP_NOZORDER);

    }
}

int main(void)
{
    MyClass taskbar;
    cout << taskbar.getTaskBarHeight();

    taskbar.setTaskBarPos();

    int a;
    cin >> a;
}

1 个答案:

答案 0 :(得分:0)

要回答“跨越所有3个显示器的跨越”问题,这通常取决于显示适配器的配置。您可以拥有3个独立显示器(每个显示器1个),或者在所有三个显示器上都有1个大显示屏。后者听起来像你的情况,Windows无法让应用栏只占用显示器的一部分。

您最好的选择是调整显示驱动程序以创建3个独立显示而不是1个大显示。