摘要:关于MFC按钮的自绘的深入研究和心得探讨 。
1 自绘控件是美化界面不可缺少的操作 。要自绘标准按钮控件 , 首先需要使控件具有自绘的能力 , 即要为按钮添加BS_OWNERDRAW属性 。在此 , 我们需要重载PreSubclassWindow虚函数 , 在该函数中添加ModifyStyle(0, BS_OWNERDRAW);
2 当按钮控件具有了自绘功能之后 , 每次控件状态改变都会触发DrawItem函数 , 在该函数中来绘制按钮的形态外观 , 所以第二步就要重载DrawItem虚函数 。在这个函数中就可以自由发挥了 , 比如绘制外边框 , 底色 , 按钮标题 , 内边框等等 。
3 一般都会为按钮定义几种不同状态时的外观 , 比如光标滑过时的状态 , 按钮按下时的状态 , 按钮禁用时的状态 , 以及按钮的正常状态等等 。这就要为新的按钮添加几种重要的消息响应 。比如WM_MOUSELEAVE消息 , WM_MOUSEHOVER消息和WM_MOUSEMOVE消息等等 , 值得一提的是前两个消息的响应函数需要自己手动添加 , 微软提供了一个TrackMouseEvent函数在光标离开一个窗口时投递WM_MOUSELEAVE消息 , 光标滑过窗口时投递WM_MOUSEHOVER消息 。一般来说可以在WM_MOUSEMOVE消息响应函数中调用TrackMouseEvent函数来投递
【mfc控件自绘,mfc控件使用详细教程】4 WM_MOUSELEAVE消息和WM_MOUSEHOVER消息 。然后在WM_MOUSELEAVE消息的响应函数中标记“光标已经离开按钮” , 然后调用InvalidateRect函数让按钮重绘 。在WM_MOUSEHOVER消息的响应函数中标记“光标正在按钮上方” , 并调用InvalidateRect函数让按钮重绘 。
推荐阅读
- 学费上涨如何影响英国人对大学学位的态度,英国读大学一年费用
- 新妈妈产后肚子疼如何缓解疼痛,刚生完孩子的产妇肚子疼怎么缓解
- 刘邦和项羽是结拜兄弟吗 历史上刘邦和项羽是结拜兄弟吗
- 清白吏子孙文言文翻译 在于清白文言文翻译
- 旧诗包括 旧诗包括哪几类
- 西安职业高中有哪些 西安职高有哪些
- 遂博通众流百家之言翻译 遂博通众流百家之言之的意思
- 杜甫月夜翻译并赏析 杜甫的《月夜》翻译
- 高雅有敬酒诗词 敬酒的诗词