0

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;
}
4

1 に答える 1

0

「3 つのディスプレイすべてにまたがる」という質問に答えるには、通常、これはディスプレイ アダプタの構成に依存します。3 つの個別のディスプレイ (モニターごとに 1 つ)、または 3 つのモニターすべてにまたがる 1 つの大きなディスプレイを使用できます。後者はあなたの状況のように聞こえます.Windowsには、アプリバーがディスプレイの一部だけを占めるようにする方法がありません.

最善の策は、ディスプレイ ドライバを調整して、1 つの大きなディスプレイではなく 3 つの個別のディスプレイを作成することです。

于 2012-04-23T11:00:28.747 に答える