Windows API視窗程式設計 - 自定義按鈕
流程介紹
自定義按鈕實際上就是新建一個自定義類,系統標準按鈕也不知道能不能重繪,反正我不知道怎麼去重繪,只能新建一個類自己去畫了。
畫一個自定義控制元件很簡單,用RegisterClass註冊一個類,然後在回撥函式的WM_PAINT屬性中用GDI去畫控制元件。
程式碼解釋
註冊類只能在CreateWindow之前執行,所以我們找到註冊頂級容器類的地方,在下面修改一下wndclass的屬性再註冊,程式碼如下:
BtnWndProc是我們自定義按鈕的回撥函式名。
游標使用手型,類名為FButton,也就是系統標準按鈕類名前加了個F。
修改完畢後註冊一下就可以了。
然後我們在WndProc的WM_CREATE訊息中使用CreateWindow新建自定義按鈕,我們只要把類名改一下就可以了,程式碼如下:
接下來寫BtnWndProc函式,模板採用WndProc,我們只修改WM_PAINT訊息,給這個按鈕畫一個邊框,我們使用GDI函式的BeginPaint、EndPaint、MoveToEx和LineTo,程式碼如下:
HDC和PAINTSTRUCT作為繪圖相關的資訊。
BeginPaint和EndPaint函式作為為指定視窗進行繪圖的範圍,BeginPaint通知作業系統準備繪圖,EndPaint結束繪圖。
MoveToEx相當於是將畫筆移動到指定座標,這裡設定是(0, 0)。
LineTo是從MoveToEx或是上一個LineTo開始向指定座標繪製線段,我們這裡執行了四次,也就是為按鈕畫了一個框,執行效果如下:
在左上角我們就畫了一個框了,並且滑鼠移上去會變成手型,這就是我們之前註冊類時的IDC_HAND。
只不過這看起來就是一個框,根本不像是一個按鈕,而且連文字都沒有,點選也沒有任何反應。
別急,下一節課我們來調整自定義按鈕。
相關文章
- Windows API視窗程式設計 - 完善自定義按鈕WindowsAPI程式設計
- Windows API視窗程式設計 - 系統標準按鈕WindowsAPI程式設計
- Windows API視窗程式設計 - 空白視窗WindowsAPI程式設計
- fastadmin新增自定義按鈕,並使用彈窗功能AST
- 自定義View:自定義屬性(自定義按鈕實現)View
- LabVIEW的自定義按鈕View
- iOS 自定義鍵盤字母按鈕iOS
- Simple WPF: WPF 自定義按鈕外形
- (五)自定義按鈕模板和設定觸發器觸發器
- ABAP ALV TOOLBAR 自定義按鈕的型別以及listmenu按鈕型別
- Qt QMessageBox::information 自定義按鈕QTORM
- 「HTML+CSS」--自定義按鈕樣式【004】HTMLCSS
- 「HTML+CSS」--自定義按鈕樣式【003】HTMLCSS
- antd-mobile 自定義picker按鈕樣式
- Qt自定義開關按鈕控制元件QT控制元件
- [HTML/CSS]uploadify自定義按鈕樣式HTMLCSS
- 3-Windows程式設計 -視窗與訊息Windows程式設計
- css自定義單選按鈕的樣式程式碼例項CSS
- 短視訊開發app,自定義帶進度條的視訊播放按鈕APP
- Windows SDK程式設計之一 視窗示例程式 (轉)Windows程式設計
- 如何禁用控制檯視窗的關閉按鈕?
- pb9 資料視窗內按鈕用法
- windows的錄音機視窗中單擊按鈕的作用是什麼Windows
- fastadmin 工具欄新增自定義按鈕,實現彈窗並儲存資料效果AST
- 「HTML+CSS」--自定義按鈕樣式【001】HTMLCSS
- 「HTML+CSS」--自定義按鈕樣式【002】HTMLCSS
- Android 自定義實現switch開關按鈕Android
- C#自定義控制元件—旋轉按鈕C#控制元件
- 窗體(文字框,按鈕,單選按鈕,標籤)
- Android開發自定義View之滑動按鈕與自定義屬性AndroidView
- 如何給 SAP Fiori Elements 應用新增自定義按鈕
- 自定義按鈕 圖片標題位置隨意放置
- Android 自定義Switch開關按鈕的樣式Android
- 自定義有多個按鈕節點的SliderViewIDEView
- 自定義一個酷炫的提交完成按鈕
- 新增了自定義的編輯和刪除按鈕
- 呼叫API函式設計ABOUT視窗 (轉)API函式
- 自定義Toast及視窗透明處理AST