我正在製作一個用於在浮動邊欄中切換「筆」按鈕後用鼠標在屏幕上繪圖的小工具。通過透明Windows窗體防止鼠標點擊
我已經完成了這個(請不要笑),因爲它的背景爲最頂級窗體,它的透明度鍵覆蓋整個屏幕。 我需要鼠標不通過形式點擊進入下面時,我「米繪圖模式我試過的東西下面這樣: Windows form with a transparent background that cannot be clicked through How to disable click through on transparent control?
,成功地阻止了鼠標,但也未最大化的形式和用鼠標拖動它(使用HTCAPTION IntPtr(2)這是)我嘗試使用MSDN上列出的其他值,但沒有運氣。
我走出我的深度,任何幫助極大讚賞(請新手友好!)
PS我現在使用這個權利..
//code for allowing clicking through of menus
protected override void WndProc(ref Message m)
{
if (penMode && m.Msg == 0x84)
{
m.Result = new IntPtr(2);
}
else
base.WndProc(ref m);
}
更新:現在通過另一種方式完全解決了問題。它看起來不像WndProc會起作用,所以我只是在整個屏幕上創建了一個空白表單,並在其中顯示了我的主窗體(form.Show(this))。然後將位於下面的空白表格的不透明度從0%調整爲1%,以允許/防止點擊。作品! 感謝所有的答案,教會了我很多。
測試在Windows 8機器,窗口的透明部分不將消息發送到父窗口時,鼠標點擊。 (在記錄消息和Spy ++中進行驗證)。 – 2013-04-07 13:27:58
@Cody,哇,謝謝你這麼清楚和完整的答案!它看起來不錯,但我現在看到的是,在繪製點之後,如果再次點擊該點,現在是藍色,不透明,則點擊會通過.. – 2013-04-07 14:09:17
在Windows 10上無法正常工作同樣的原因約翰提到。 – 2016-02-28 13:44:16