关于按钮重绘的有关问题,本人水平有限,请大家指点
关于按钮重绘的问题,本人水平有限,请大家指点
各位,如果实现当鼠标移动到按钮时顔色改变,移走时又恢复原来的样子,这要用到按钮重绘,就是OWER_DRAW,是不是每一个按钮都要关联变量?但如果有几十个按钮都要实现这种功能,那不是要关联几十个变量?各位有什么解决方法,或者有更好的方法,麻烦说一下,谢谢了
------解决方案--------------------
如果所有按钮 ‘实现当鼠标移动到按钮时’都改变为同一种顔色,移走时又恢复原来的样子。那么这是类的特性,可以改变类的方法。
如果每个按钮要不同的‘到按钮’颜色,那是‘实例’的特性,需要类按实例(找到这个实例)处理。
------解决方案--------------------
网上有已写好的类CButtonST,符合LZ的要求,去搜一下下载使用即可
------解决方案--------------------
仿照QQ登陆时的登陆按钮。
楼主说按钮很多,可以这么做,关联还是要的。
UINT butt_id[20]; //记录按钮ID
CButtonEx butt[20]; //用作关联
在DDX中写循环for(int i=0; i<20; i++) DDX...
重写有两种方式,一是ownerdraw,响应DrawItem消息,重写DrawItem。而是响应PAINT消息,重写OnPaint。
代码:
ButtonEx.h
各位,如果实现当鼠标移动到按钮时顔色改变,移走时又恢复原来的样子,这要用到按钮重绘,就是OWER_DRAW,是不是每一个按钮都要关联变量?但如果有几十个按钮都要实现这种功能,那不是要关联几十个变量?各位有什么解决方法,或者有更好的方法,麻烦说一下,谢谢了
------解决方案--------------------
如果所有按钮 ‘实现当鼠标移动到按钮时’都改变为同一种顔色,移走时又恢复原来的样子。那么这是类的特性,可以改变类的方法。
如果每个按钮要不同的‘到按钮’颜色,那是‘实例’的特性,需要类按实例(找到这个实例)处理。
------解决方案--------------------
网上有已写好的类CButtonST,符合LZ的要求,去搜一下下载使用即可
------解决方案--------------------
仿照QQ登陆时的登陆按钮。
楼主说按钮很多,可以这么做,关联还是要的。
UINT butt_id[20]; //记录按钮ID
CButtonEx butt[20]; //用作关联
在DDX中写循环for(int i=0; i<20; i++) DDX...
重写有两种方式,一是ownerdraw,响应DrawItem消息,重写DrawItem。而是响应PAINT消息,重写OnPaint。
代码:
ButtonEx.h
- C/C++ code
#pragma once // CButtonEx class CButtonEx : public CButton { private: bool down; int on; CString cap; public: CButtonEx(); void SetText(CString); protected: DECLARE_MESSAGE_MAP() public: afx_msg LRESULT OnMouseHover(WPARAM,LPARAM); afx_msg LRESULT OnMouseLeave(WPARAM,LPARAM); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg void OnPaint(); };
------解决方案--------------------
那么就动态创建