用vs2010 编写MFC程序 在做Ribbon界面,控件关联变量问题
用vs2010编写MFC程序在做Ribbon界面的时候在面板上面放了一个颜色按钮,现在我运行的时候怎么才能把用户选择的颜色值获得到?用GetColor()函数?,可是怎么...
用vs2010 编写MFC程序 在做Ribbon界面的时候 在面板上面放了 一个颜色按钮,现在我运行的时候怎么才能把用户选择的颜色值获得到?用GetColor()函数?,可是怎么给这个颜色按钮关联一个变量呢?还有好多面板上面的控件我都想关联一个变量,可是VS2010我实在找不到怎么关联面板上面控件的方法,求大牛帮帮忙啊
哎 下面那个大哥说的 啥?实在是没看懂!简单点儿描述就是怎么给ribbon上 面板里面的控件关联一个变量? 展开
哎 下面那个大哥说的 啥?实在是没看懂!简单点儿描述就是怎么给ribbon上 面板里面的控件关联一个变量? 展开
1个回答
展开全部
GetValue()后 , 返回值t (COleVariant变量)中,COLORREF clr = t.intVal(就是这里)。
参考一下我的代码。
str.Format(_T("通道%d显示的颜色,可以由用户选择输入。"),ch);
CMFCPropertyGridColorProperty* pProp6 = new CMFCPropertyGridColorProperty(_T("颜色显示"), (_variant_t)m_lclDaqParam.m_clrCh[ch], NULL, str);
pProp6->EnableOtherButton(_T("其他..."));
pProp6->EnableAutomaticButton(_T("默认"), ::GetSysColor(COLOR_3DFACE));
pProp6->SetData(CHS_CHANNEL+600+ch);
//-----------------------------------------------------------------------------------------------------
int catorgries = (int) pProp->GetData();
COleVariant t = pProp->GetValue();
.....
else if ( (600<=catorgries) && ( 700> catorgries) )
{
ch = catorgries-CHS_CHANNEL-600;
COLORREF clr = t.intVal;
BYTE R = GetRValue(clr);
BYTE G = GetGValue(clr);
BYTE B = GetBValue(clr);
m_lclDaqParam.m_clrCh[ch] = RGB(R,G,B);
}
参考一下我的代码。
str.Format(_T("通道%d显示的颜色,可以由用户选择输入。"),ch);
CMFCPropertyGridColorProperty* pProp6 = new CMFCPropertyGridColorProperty(_T("颜色显示"), (_variant_t)m_lclDaqParam.m_clrCh[ch], NULL, str);
pProp6->EnableOtherButton(_T("其他..."));
pProp6->EnableAutomaticButton(_T("默认"), ::GetSysColor(COLOR_3DFACE));
pProp6->SetData(CHS_CHANNEL+600+ch);
//-----------------------------------------------------------------------------------------------------
int catorgries = (int) pProp->GetData();
COleVariant t = pProp->GetValue();
.....
else if ( (600<=catorgries) && ( 700> catorgries) )
{
ch = catorgries-CHS_CHANNEL-600;
COLORREF clr = t.intVal;
BYTE R = GetRValue(clr);
BYTE G = GetGValue(clr);
BYTE B = GetBValue(clr);
m_lclDaqParam.m_clrCh[ch] = RGB(R,G,B);
}
追问
简单点儿描述就是怎么给ribbon上 面板里面的控件关联一个变量?
追答
用ID关联 看这里 ID_DISP_OUTPUT_VIEW_CURRENT
new按钮
CMFCRibbonButton* pBtnOutputCurrent = new CMFCRibbonButton(ID_DISP_OUTPUT_VIEW_CURRENT, _T("当前视图"),-1,12);
pDispOuputView->Add(pBtnOutputCurrent);
。。。
添加消息循环
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
。。。
ON_COMMAND(ID_DISP_OUTPUT_VIEW_CURRENT, &CMainFrame::OnDispLayoutOutputViewCurrent)
ON_COMMAND(ID_DISP_OUTPUT_VIEW_ALL, &CMainFrame::OnDispLayoutOutputViewAll)
。。。
响应函数
void CMainFrame::OnDispLayoutOutputViewCurrent()
{
。。。
这些都是我的工程里的代码,你试验一下,有问题问我。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询