Ribbon能重绘吗 CMFCRibbonButton类能重绘吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在哪看见过的啊?整个互联网都没有自绘RibbonButton的,因为它的基类根本就不是个窗口 在VS的安装目录下找到VC子目录.在该子目录里搜索afxribbonbutton.cpp参考该文件里的void CMFCRibbonButton::OnDraw(CDC* pDC)方法.该方法声明为virtual void OnDraw(CDC* pDC);所以自己写一个继承自CMFCRibbonButton类的自定义类.重写OnDraw方法就可以.这个方法太大了...但考虑的情况很全.楼主可视自身的情况取舍即可由于CMFCRibbonElement系列的类不是窗口类.只能通过Ribbon元素所放置的窗口类传递过来的DC绘制.放在CMFCRibbonBar上的元素由RibbonBar绘制,在CMFCRibbonStatusBar上的元素由StatusBar绘制.因为这些Bar系列类继承自CWnd,拥有自主的DC 消息也能截获吗?比如WM_LBUTTONUP之类的消息。 你要干什么? 响应单击事件?这个你create 按钮时给的id, 然后给id关联一个消息处理函数就可以了。 没有create,ID有,怎么关联能再告诉我下不?下面是创建按钮的代码: CMFCRibbonCategory *pRibbonUICategory =m_wndRibbonBar.AddCategory(_T("RibbonUI Category"),IDB_BITMAP1, IDB_BITMAP2); CMFCRibbonPanel *pTestPanel = pRibbonUICategory->AddPanel(_T("RibbonUI Panel"), m_PanelImages.ExtractIcon(1)); // 在面板上添加Ribbon命令按钮(CMFCRibbonButton) pTestPanel->Add(new CMyRibbonButton(ID_BTN1, _T("11"), 0)); pTestPanel->Add(new CMyRibbonButton(ID_BTN2, _T("22"), 1)); pTestPanel->Add(new CMyRibbonButton(ID_BTN3, _T("33"), 2)); class CMyRibbonButton : public CMFCRibbonButton{public: CMyRibbonButton(); virtual ~CMyRibbonButton(); CMyRibbonButton(UINT nID, LPCTSTR lpszText, int nSmallImageIndex = -1, int nLargeImageIndex = -1, BOOL bAlwaysShowDescription = FALSE); void OnLButtonDown(CPoint point); void OnMouseMove(CPoint point);}; ON_MESSAGE(ID_BTN1 , 你的函数) 不是,要是能这样就好了,要是在资源里添加按钮,直接可以添加响应函数,如果是在代码里动态添加CMFCRibbonButton,添加完成后按钮都是不可用的 可以调整它的高度吗??????????????????????????????????????????????????????????????????????????????????riboonbar 上可以放各种控件!!!!!!!!!!!!!!!!!!!!!!做成对话框效果!!!!!!!!!!!!!!!!!!!!!!!!!资料好少。。 我的帖子,帮忙see see 就是这样的。 靠。 。vs2008 是手动添加这段代码, vs2010有ribbon编辑器, 直接就可以AddHandler添加消息映射。 服务器端使用异步模型还是多线程的问题 CEdit为什么无法输入小数点 为什么打开串口后立即向串口写数据总是失败?加了延时也不行,在线等。。。 关于日期更新的问题 进程间的通讯该如何作,atom它是如何用的? ====求画园弧算法==== 请问如何new 一个结构体指针? stdafx.h 的问题,100立刻相送 初学VC,简单问题,MFC里#include的详细用法 在CEditView编辑时如何得到当前键盘光标的位置? opengl摄像机坐标系的问题 《Windows 程序设计(第5版)》北大译本和清华译本,哪个更好?
在该子目录里搜索afxribbonbutton.cpp
参考该文件里的void CMFCRibbonButton::OnDraw(CDC* pDC)方法.
该方法声明为virtual void OnDraw(CDC* pDC);
所以自己写一个继承自CMFCRibbonButton类的自定义类.
重写OnDraw方法就可以.这个方法太大了...但考虑的情况很全.楼主可视自身的情况取舍即可
由于CMFCRibbonElement系列的类不是窗口类.只能通过Ribbon元素所放置的窗口类传递过来的DC绘制.
放在CMFCRibbonBar上的元素由RibbonBar绘制,在CMFCRibbonStatusBar上的元素由StatusBar绘制.
因为这些Bar系列类继承自CWnd,拥有自主的DC
你要干什么? 响应单击事件?这个你create 按钮时给的id, 然后给id关联一个消息处理函数就可以了。
CMFCRibbonPanel *pTestPanel = pRibbonUICategory->AddPanel(_T("RibbonUI Panel"), m_PanelImages.ExtractIcon(1));
// 在面板上添加Ribbon命令按钮(CMFCRibbonButton)
pTestPanel->Add(new CMyRibbonButton(ID_BTN1, _T("11"), 0));
pTestPanel->Add(new CMyRibbonButton(ID_BTN2, _T("22"), 1));
pTestPanel->Add(new CMyRibbonButton(ID_BTN3, _T("33"), 2));
{
public:
CMyRibbonButton();
virtual ~CMyRibbonButton();
CMyRibbonButton(UINT nID, LPCTSTR lpszText, int nSmallImageIndex = -1, int nLargeImageIndex = -1, BOOL bAlwaysShowDescription = FALSE);
void OnLButtonDown(CPoint point);
void OnMouseMove(CPoint point);
};
就是这样的。 靠。 。vs2008 是手动添加这段代码, vs2010有ribbon编辑器, 直接就可以AddHandler添加消息映射。