2010-10-27 92 views
3

我想知道是否有一種方法來添加(編程方式,當然)圖標/按鈕/除純文本以外的任何窗口(微軟Windows窗口...)的標題欄或最小化/最大化/關閉按鈕所在的位置旁邊。我可以自己繪製它,並創建一個幻覺它是窗口的一部分,但我想知道在user32 API中是否有這樣的方法。如何添加一個自定義按鈕到窗口'最小化/最大化/關閉(x)

到目前爲止,我找到了一種方法來禁用最小化/最大化/關閉按鈕,但沒有辦法給它們添加一個自定義的按鈕。我覺得很奇怪。

這是我想實現: alt text

我一直想知道它是如何在這裏完成的,因爲使用GDI/GDI +繪製一個按鈕,每一個窗口,然後,如果它是由重疊檢測另一個窗口,然後只顯示非重疊部分在我看來似乎不太可能的解決方案。可能該按鈕已在窗口類中註冊,以便每個窗口都有此按鈕。任何指針怎麼辦?

另外,假設我沒有啓用Unicode,我該如何創建一個按鈕。然後在下面的代碼段:

HWND hwndCommandLink = CreateWindow(
L"BUTTON", // Class; Unicode assumed. 
L"",  // Text will be defined later. 
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_COMMANDLINK, // Styles. 
10,   // x position. 
10,   // y position. 
100,  // Button width. 
100,  // Button height. 
hDlg,  // Parent window. 
NULL,  // No menu. 
(HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE), 
NULL);  // Pointer not needed. 
SendMessage(clHwnd, WM_SETTEXT, 0, (LPARAM)L"Command link"); 

SendMessage(clHwnd, BCM_SETNOTE, 0, (LPARAM)L"with note"); 

我需要替換所有的美好的Windows常量與他們長期相當於....然而,當我尋找他們,我得到的是: http://msdn.microsoft.com/en-us/library/bb775951(v=VS.85).aspx

任何指針?

回答

0

這已經在SO處理了好幾次了。在視覺主題出現之前,這非常簡單 - 當您告訴(WM_NCPAINT)並響應標題欄事件(WM_NCHITTEST,WM_NCLBUTTONDOWN等)時,您只需在標題欄上繪製即可。使用Aero,這是困難的。但它是可能的,並且有關於它的文章。

+0

任何指針實際上意味着我可以到達的一個鏈接或一段代碼。當然它已經在SO中處理過了。我抽取了大量的代碼,但它仍然不會在Vista和XP中做我想要的。另外,由於我使用的是Java Native Access,因此我也遇到了其他一些問題,比如尋找覆蓋某些東西的方法。那麼,再一次,任何指針? – 2010-10-27 10:44:55

+0

順便提一下,我仍然在尋找答案。總結一下:我需要一種方法來將一個獨立於主題的按鈕添加到所選Windows操作系統窗口的標題欄中。到目前爲止,我已經設法按照教程添加一個按鈕(實際上帶有「BUTTON」類的小窗口)到標題欄,但是Aero主題的改變使得外觀看起來非常難看。順便說一句,我正在使用JNA。 – 2010-11-03 09:52:06

相關問題