WM_CTLCOLORBTN訊息

基本介紹

  • 中文名:WM_CTLCOLORBTN訊息
  • 簡介:SetTextColor設定一種文字顏色
  • 理論:子視窗使用該畫刷來著色背景
  • 問題:應該負責清除
簡介,理論,

簡介

如何調節客戶區的顏色和文本顏色以匹配按鈕背景顏色?我們是否可以將程式中按鈕的顏色調節為我們喜歡的顏色呢?理論上沒有問題,但在實際中請別這樣做。用SetSysColors來改變按鈕的外觀可能不是您想做的,這會影響目前在Windows下執行的所有程式,這也是使用者不太喜歡的。
更好的方法(同樣也只是理論上)是處理WM_CTLCOLORBTN訊息。當子視窗即將需要重繪時,按鈕控制項會將該訊息傳送給其父視窗訊息處理程式的一個訊息。父視窗可以利用這個機會來改變子視窗的背景顏色(在Windows的16位元版本中,一個稱為WM_CTLCOLOR的訊息被用於所有的控制項。此訊息已被對於每種標準控制項的不同訊息所取代)。
當父視窗訊息處理程式收到WM_CTLCOLORBTN訊息時,wParam訊息參數是按鈕的設備環境句柄,lParam是按鈕的視窗句柄。當父視窗訊息處理程式得到這個訊息時,按鈕控制項已經獲得了它的設備環境。當您的視窗訊息處理程式處理一個WM_CTLCOLORBTN訊息時,可以選擇以下做法:
使用SetTextColor選擇設定一種文字顏色。
使用SetBkColor選擇設定一種文字背景顏色。
返回子視窗的畫刷句柄。

理論

理論上,子視窗使用該畫刷來著色背景。當不再需要這個畫刷時,您應該負責清除它。
下面是使用WM_CTLCOLORBTN的問題所在:只有按鍵和擁有者繪製按鈕才給其父視窗傳送WM_CTLCOLORBTN,而只有擁有者繪製按鈕才會回應父視窗訊息處理程式對訊息的處理,而使用畫刷來著色背景。這基本上是沒有意義的,因為無論怎樣都是由父視窗來負責繪製擁有者繪製按鈕。
在本章後面,我們將說明,在某些情況下,一些類似於WM_CTLCOLORBTN但適用於其他型態控制項的訊息將更為有用。

相關詞條

熱門詞條

聯絡我們