Windows API視窗程式設計 - 完善自定義按鈕

1136863240發表於2019-07-31

介紹

上一課我們已經畫出了一個只有邊框的按鈕,這一次我們要完善一下按鈕的外觀了,至少要讓人看起來像按鈕而不只是一個框。
完善按鈕外觀很簡單,只要在WM_PAINT訊息中畫一下就是了。
由於原來的程式碼被我誤刪了,所以這一次的程式碼可能會與之前的有點出入,請見諒!

程式碼解釋

首先我先在程式碼最上面新增一個HWND用於儲存按鈕的控制程式碼,程式碼如下: enter image description here

enter image description here
建立並儲存了一個按鈕控制程式碼,接下來我們在BtnWndProc回撥函式的WM_PAINT訊息繪製按鈕,程式碼如下:
enter image description here
DrawText可以在按鈕裡寫字串,樣式裡我們選擇“單行”、垂直居中與水平居中。rect是指定繪製文字的範圍,這裡我們選擇整個按鈕,這樣文字才會在按鈕中間顯示,效果如下:
enter image description here
這樣就比原來更像是一個按鈕了,至少中間寫著“按鈕”的英文。 有了按鈕,但是似乎沒什麼反應,點它都沒用。 因為我們還沒有寫按鈕的點選事件訊息,這就要在WM_LBUTTONUP中寫點選事件程式碼,這裡我們彈出一個訊息框表示自己點選了按鈕,程式碼如下: enter image description here hwnd == btn_hwnd表示我們要判斷對哪個按鈕控制程式碼進行訊息響應,雖說我們只有一個按鈕,但這麼做更安全,可讀性也更高,表示我們要對剛剛儲存的按鈕控制程式碼進行操作。 現在我們執行程式,點選按鈕,效果如下:
enter image description here

注意

目前我們還沒有對中文做處理,所以如果你們寫文字用的是中文的話會產生亂碼問題,所以最好還是用英文,我現在也懶得寫處理中文的情況。。。

相關文章