準確地說,我不想使用標準的矩形按鈕。有沒有辦法創建自己的按鈕並將它們合併到Visual C++應用程序中?例如,一個形狀爲水果,動物,隨機物體的按鈕......?這怎麼能實現?如何製作自定義Visual C++按鈕?
回答
自定義按鈕有兩種常見方法。首先是在標準按鈕上使用所有者繪製可選樣式。使用這種樣式設置,當按鈕需要着色時,您會收到一條消息(WM_DRAWITEM),並以任何您喜歡的方式自己繪製它。第二種方法是在現有窗口上繪製圖像並分析鼠標消息以確定圖像上的點擊時間。常用的工具欄使用這種方法:它沒有真正的按鈕控件,只是看起來像按鈕的圖片。採用第二種方法,您不僅限於點擊矩形區域。
定義您自己的按鈕回調函數 SetWindowLong(hMyButtonWnd,GWL_WNDPROC,(LONG)& MyButtonProc);按鈕回調 LRESULT CALLBACK MyButtonProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { if (message == WM_LBUTTONDOWN) { bBtnClicked = true; bBtnDown = true; SetCapture(hWnd); nMouseX = LOWORD(lParam); nMouseY = HIWORD(lParam); InvalidateRect(hWnd,NULL,false); UpdateWindow(hWnd); } else if (message == WM_LBUTTONUP) { bBtnClicked = false; bBtnDown = false; InvalidateRect(hWnd,NULL,false); UpdateWindow(hWnd); RECT rec; GetClientRect(hWnd,&rec); if (nMouseX > rec.left && nMouseY > rec.top && nMouseX < rec.right && nMouseY < rec.bottom) { MessageBox(NULL,L"Button clicked",L"Test",MB_OK); } ReleaseCapture(); } else if (message == WM_MOUSEMOVE) { nMouseX = LOWORD(lParam); nMouseY = HIWORD(lParam); RECT rec; GetClientRect(hWnd,&rec); if (nMouseX <= rec.left || nMouseY <= rec.top || nMouseX >= rec.right || nMouseY >= rec.bottom) bBtnDown = false; InvalidateRect(hWnd,NULL,false); UpdateWindow(hWnd); } if (message == WM_PAINT) { PAINTSTRUCT ps; HDC dc = BeginPaint(hWnd,&ps); HDC c_dc = CreateCompatibleDC(NULL); if (bBtnDown) SelectObject(c_dc,hBtnDown); else SelectObject(c_dc,hBtnUp); RECT rec; GetClientRect(hWnd,&rec); BitBlt(dc,0,0,rec.right,rec.bottom,c_dc,0,0,SRCCOPY); DeleteDC(c_dc); EndPaint(hWnd,&ps); return 0; } else return CallWindowProc(DefProc,hWnd,message,wParam,lParam); return 1; }
- 1. 如何製作按鈕按鈕類型(自定義鍵盤)
- 2. Flash CS5和自定義按鈕製作
- 3. 製作自定義標籤按鈕
- 4. 如何自定義TTPostController操作按鈕
- 5. 繪製自定義按鈕
- 6. 自定義按鈕動作
- 7. 在wpf和C中製作自定義形狀的按鈕#
- 8. 與繪製自定義按鈕,如Facebook
- 9. 如何製作下圖中顯示的自定義android按鈕?
- 10. android-how如何製作自定義切換按鈕
- 11. 如何製作自定義fb分享按鈕?
- 12. 如何製作自定義分享按鈕
- 13. 如何製作自定義的Facebook分享按鈕?
- 14. 如何在iOS中製作自定義按鈕?
- 15. 如何製作高亮顯示的自定義按鈕
- 16. 如何製作Yii CButtonColumn自定義按鈕全局?
- 17. 動態調整大小的自定義按鈕 - 如何製作?
- 18. 如何爲VideoView或MediaController製作自定義按鈕/進度條?
- 19. 如何製作不同顏色的自定義按鈕?
- 20. VBS如何製作自定義選項按鈕?
- 21. 如何爲BackBarButton的左欄按鈕製作自定義的UIBarButton
- 22. 如何在vb.net中製作自定義按鈕
- 23. Android:如何在內部使用LinearLayout製作自定義按鈕?
- 24. 自定義按鈕例如不工作
- 25. 如何在Visual Studio中創建自定義按鈕?
- 26. 如何創建用於Visual Basic 2010的自定義按鈕?
- 27. Visual Studio如何製作全局按鈕(System.Windows.Forms.Button按鈕)
- 28. 自定義按鈕
- 29. 自定義按鈕
- 30. 自定義按鈕
按鈕是一個UI小工具的
這裏例如,它沒有任何與C++語言。有*許多* UI框架,你的問題不能給出你正在使用的任何線索。問一個SO問題的最好方法是寫幾段描述你迄今爲止嘗試過的工作。 –