[英]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.