簡體   English   中英

WM_NCHITTEST,輔助監視器位於主監視器的左側

[英]WM_NCHITTEST and secondary monitor to left of primary monitor

所描述的帶有第二個監視器的設置位於主要對象的左側,這導致WM_NCHITTEST發送負值,而根據本文, 顯然不被支持。

我有一個用win32編寫的自定義控件,就像一個組控件。 它的可點擊區域很小。 當包含自定義控件的窗口位於主監視器左側的第二個監視器上時,沒有MOUSE事件進入我的控件。 SPY ++顯示WM_NCHITTEST消息,但沒有Mouse消息。 當窗口移至主監視器或輔助監視器位於主監視器的右側(所有點均為正)時,一切正常。 下面是我的自定義控件中WM_NCHITTEST的處理方式。 通常,我需要它返回HTTRANSPARENT,以免模糊放置在其中的其他控件。 有人有什么建議,我需要做些什么時髦的坐標轉換,以及響應WM_NCHITTEST返回什么才能轉換鼠標消息並將其發送到我的控件(如果它位於主監視器左側的第二個監視器上)?

case WM_NCHITTEST:
    {
        POINT Pt = {LOWORD(lP), HIWORD(lP)};
        int i;
        ScreenToClient (hWnd, &Pt);
        if (PtInRect (&rClickableArea, Pt))
        {
            return(DefWindowProc( hWnd, Msg, wP, lP ));
        }
    }
    lReturn = HTTRANSPARENT;
    break;

您必須使用GET_X_LPARAM和GET_Y_LPARAM宏來提取鼠標坐標。 與LOWORD等人不同,它們將正確返回負值。 返回無符號值。

POINT Pt = { GET_X_LPARAM(lP), GET_Y_LPARAM(lP) };

其余代碼應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM