Win32 自繪Button的實現方法

2021-05-08 09:11:11 字數 835 閱讀 1269

win32

自繪button

的實現方法

由於不會

mfc來繪製按鍵,只能通過

win32

來繪製按鍵。那麼如何實現自定義按鍵了,首先你需要做的事情: 1.

根據按鍵的大小設計好圖形大小,和圖形的填充色

(填充色是為了實現同明效果而必需的)。

2.建立按鍵的時候,需要定義

bs_ownerdraw

格式,也就是自己實現繪圖。

那麼步驟如下:

1.呼叫createwindow建立按鍵。

2.呼叫setwindowlong

(hbtn, gwl_wndproc, (long)btnproc)

將按鍵訊息轉給btnproc來處理:

lresult

winapi

closebtnproc(hwnd

hwnd, uint

wmsg, wparam

wparam, lparam

lparam)

//這條函式必須呼叫,返回訊息到主視窗,不然主視窗訊息得不到處理

return

defwindowproc(hwnd, wmsg, wparam, lparam);}

3.在主視窗wm_paint 訊息中,繪製按鍵背景,主要是為了初始化按鍵背景。

整個流程就和上面一樣,但是還有一些細節問題:

1.如何實現透明背景?這個可以呼叫transparentblt函式來完成!

2.怎麼解決螢幕閃爍的問題?我是用雙緩衝來實現的,具體可以在網上搜尋一下相關資料。

總結了一下,其實按鍵就是乙個視窗,繪圖的過程和普通的視窗沒什麼區別。

win32實現ListBox自繪

在createwindowex建立視窗時,需要對引數dwstyle設定上lbs ownerdrawfixed lbs hasstrings這兩個屬性。並且需要在建立listbox視窗的父視窗中處理wm drawitem和wm measureitem兩個訊息進行列表框的重繪。lbs ownerdraw...

Win32的時間型別

在win32時間型別有這樣幾種型別filetime systemtime windowstime 先提個問題,如何計算當前時間100天以後的時間,在win32中。1.systemtime systemtime的定義是這樣 typedef struct systemtime systemtime 很大...

Win32的時間型別

在win32時間型別有這樣幾種型別 filetime systemtime windowstime 先提個問題,如何計算當前時間100天以後的時間,在win32中。1.systemtime systemtime的定義是這樣 typedef struct systemtime systemtime 很...