C++自定义按钮重写

C++里自定义按钮的写法,尤其是用 MFC 开发界面时,确实有点老派但还蛮实用。你要是想做点不那么“原始”的 UI,那重写下 CButton,搞个自己的 CMyButton 类,是挺靠谱的一招。可以改文字、改颜色、换字体,甚至还能根据状态切样式,挺灵活的。

继承 CButton 搞自绘,是老 MFC 项目里常见的玩法。你只要在 PreSubclassWindow() 里加个 ModifyStyle(0, BS_OWNERDRAW),按钮就能自己画了。后面再用 DrawItem() 和自定义的 DrawButton() 方法,就能画出你想要的按钮效果。

你可以根据不同状态(比如鼠标悬停、按下、禁用)调整背景色和文字颜色,看起来就没那么“死板”了。比如:RGB(192,192,192) 代表普通状态,RGB(255,255,255) 是鼠标进入状态,简单直观。

有个小建议:如果你按钮上要显示多行文本,最好控制一下 CRect 的边距和字体大小,不然容易“挤一块”。另外,SetTextFont() 这个方法挺好用,换字体也方便。

,这套写法虽然不是“现代”,但在老项目或者稳定需求下,用起来还挺香的。如果你最近正好在维护 MFC 的老界面,不妨抽空搞一搞。

doc 文件大小:42.5KB