Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix toggle taskbar hidden when window is maximized #55

Merged
merged 3 commits into from
Sep 14, 2024

Conversation

charles7668
Copy link
Contributor

@charles7668 charles7668 commented Sep 11, 2024

close #50

TiefseeCore_tMitxZ92x5

@hbl917070
Copy link
Owner

雖然還有些問題,不過整體思路看起來是可行的

  1. 我在 win11 上測試,電腦接2個解析度不一樣的螢幕
    在第2螢幕將視窗最大化時,視窗被限制成第1螢幕的大小(解析度),而非當前視窗所在的第2螢幕
    此時把視窗最小化,然後再最大化,視窗會直接跑到螢幕外面

  2. bounds.Height -= 1; 直接控制高度可能不夠,win10 的任務欄不一定在下面

@charles7668
Copy link
Contributor Author

雖然還有些問題,不過整體思路看起來是可行的

1. 我在 win11 上測試,電腦接2個解析度不一樣的螢幕
   在第2螢幕將視窗最大化時,視窗被限制成第1螢幕的大小(解析度),而非當前視窗所在的第2螢幕
   此時把視窗最小化,然後再最大化,視窗會直接跑到螢幕外面

2. `bounds.Height -= 1;` 直接控制高度可能不夠,win10 的任務欄不一定在下面

第一點的在2螢幕最大化時被限制成1螢幕大小的問題我無法復現 , 就目前而言 我這裡的兩個螢幕不同解析度都是正常的

至於跑到螢幕外跟對應不同位置任務欄的問題已修復

@hbl917070 hbl917070 merged commit a89ad8b into hbl917070:master Sep 14, 2024
1 check passed
@hbl917070
Copy link
Owner

一些情況下,視窗已經最大化了,但 ResetMaximumBound() 沒有被執行
像是拖曳視窗標題列到螢幕最上面來觸發最大化,或是用 Windows鍵 + ↑ 來觸發最大化
所以我調整了 ResetMaximumBound 的觸發時機,只要視窗被最大化就一定會執行

d71b0f7

protected override void WndProc(ref Message m) {

    #region 視窗最大化時,重設視窗的最大邊界

    const int WM_WINDOWPOSCHANGING = 0x0046;

    if (m.Msg == WM_WINDOWPOSCHANGING) {
        var windowPos = (WINDOWPOS)Marshal.PtrToStructure(m.LParam, typeof(WINDOWPOS));
        if ((windowPos.flags & 0x0001) == 0) { // SWP_NOSIZE flag is not set
            if (this.WindowState == FormWindowState.Maximized) {
                ResetMaximumBound();
            }
        }
    }

    #endregion

    base.WndProc(ref m);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bug: the mouse unable to trigger Autohided taskbar
2 participants