Activex中加入了工具栏,如何使用Update_Command_UI那种的功能来更新工具栏按钮状态 Activex中加入了工具栏,如何使用Update_Command_UI那种的功能来更新工具栏按钮状态appwizzard中没有WM_IDLEUPDATECMDUI,WM_KICKIDLE消息,全部手动添加的全部没响应!好几天了,想不出有什么办法,求指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ON_Update_Command_UI用菜单显示就能触发啊,点击菜单就触发了难道用Invalidate无效么? 你看看这个帖子http://bbs.csdn.net/topics/40150965 上面的帖子看过了,确实是菜单可以响应的工具条就是不行......,郁闷之极我有个想法,就是怎么能获得工具栏上按钮的CCmdUI 然后在OnTimer里手动更新。可以么?如果可以怎么才能获得CCmdUI呢 //-------菜单创建开始long lStyle;lStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);lStyle &= WS_POPUP;//WS_OVERLAPPEDWINDOW;lStyle |= CBRS_GRIPPER;::SetWindowLong(m_hWnd, GWL_STYLE, lStyle);CWnd * pWnd = AfxGetMainWnd(); m_Menu = new CMenu;m_Menu->LoadMenu(IDR_MAINMENU);SetMenu(m_Menu);m_Menu->Detach();//-------菜单创建结束//-------工具栏创建开始if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | TBSTYLE_FLAT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){ TRACE0("Failed to create toolbar\n"); return -1; // fail to create}//-------工具栏创建结束不同的是菜单是WS_POPUP的,工具栏不是,工具栏用popup的话就直接报错了 void CXXXCtrl::OnTimer(UINT nIDEvent) { CCmdUI state; state.m_nID = ID_DXF_BTN; state.m_pOther = this; state.m_nIndex = 8; //需要截取update_command_ui的工具栏按钮索引,也就是从0数第8个 CWnd::OnCmdMsg(state.m_nID, CN_UPDATE_COMMAND_UI, &state, NULL); COleControl::OnTimer(nIDEvent);}这样添加了void CXXXCtrl::OnUpdateDxfBtn(CCmdUI* pCmdUI) { pCmdUI->SetCheck(1);//m_ptrData->GetPtrConfigData()->GetChartShow());}倒是可以响应了,但是按钮在setcheck后仍然为凸起状态,实际貌似没有效果,求帮助!快疯了 mfc如何做出像windows桌面图标的那种效果? Unhandled exception in Mby.exe (MFC42D.DLL) :0xC0000005;Access Violation 怎么回事? 搜索引擎项目合作 关于线程等待临界区的问题? 那为高手帮一下,在windows2000下,如何读取CPU的温度呢? 请问一个TREECTRL自绘的问题 →★★★★★让你的软件,网站,企业一夜成名★★★★★← 请教如何在vc中测试c++ build的控件 急!如何实现屏幕拷贝 帮忙看一下下面的程序。 C++ 驱动开发里调用GDI问题 进度条空间,显示的进度只是中间一条线,如图所示
http://bbs.csdn.net/topics/40150965
工具条就是不行......,郁闷之极我有个想法,就是怎么能获得工具栏上按钮的CCmdUI 然后在OnTimer里手动更新。可以么?
如果可以怎么才能获得CCmdUI呢
long lStyle;
lStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);lStyle &= WS_POPUP;//WS_OVERLAPPEDWINDOW;
lStyle |= CBRS_GRIPPER;
::SetWindowLong(m_hWnd, GWL_STYLE, lStyle);
CWnd * pWnd = AfxGetMainWnd();
m_Menu = new CMenu;
m_Menu->LoadMenu(IDR_MAINMENU);
SetMenu(m_Menu);
m_Menu->Detach();
//-------菜单创建结束
//-------工具栏创建开始
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| TBSTYLE_FLAT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
//-------工具栏创建结束
不同的是菜单是WS_POPUP的,工具栏不是,工具栏用popup的话就直接报错了
{
CCmdUI state;
state.m_nID = ID_DXF_BTN;
state.m_pOther = this;
state.m_nIndex = 8; //需要截取update_command_ui的工具栏按钮索引,也就是从0数第8个
CWnd::OnCmdMsg(state.m_nID, CN_UPDATE_COMMAND_UI, &state, NULL); COleControl::OnTimer(nIDEvent);
}这样添加了
void CXXXCtrl::OnUpdateDxfBtn(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(1);//m_ptrData->GetPtrConfigData()->GetChartShow());
}倒是可以响应了,但是按钮在setcheck后仍然为凸起状态,实际貌似没有效果,求帮助!快疯了