我有一个别人提供的现成单文档程序,小弟的毕设就是在它的基础上完成整合。
该程序是根据板卡设备动态加载菜单、工具栏。我为了方便,删掉了它原来默认的IDR_MAINFRAME,并将另一个我要用的工具栏改名为IDR_MAINFRAME,以使它作为默认的加载项。
它的程序先判断板卡型号,然后再根据型号加载菜单和工具栏,下面就是它加载工具栏的自定义函数。
BOOL CMainFrame::ShowToolbar(int TBarIndex)
{
switch(TBarIndex)
{
case 0: m_wndToolBar.LoadToolBar(IDR_MAINFRAME); break;
case 1: m_wndToolBar.LoadToolBar(IDR_MTOOLBAR2); break;
case 2: m_wndToolBar.LoadToolBar(IDR_MTOOLBAR3); break;
case 3: m_wndToolBar.LoadToolBar(IDR_MTOOLBAR4); break;
default: break;
}
return m_wndToolBar.ShowWindow(SW_SHOW);
}
(我就是把IDR_MAINFRAME删掉,把IDR_MTOOLBAR3改成IDR_MAINFRAME)它加载工具栏的指令是:pFrame->ShowToolbar(2);(该指令已被我删除,以便工具栏直接加载!)这个程序还删掉了工具栏的WS_VISIBLE属性,以使框架加载后先不显示它;等确定型号后再加载显示。(我已加回该属性)我现在要往工具栏中加入一个按钮,以实现对ControlBar打开/关闭的控制。
做好按钮后,我打开类向导,系统提示没有关联类,于是我就将CMainFrame与之关联。给该按钮添加了COMMAND和UPDATE_COMMAND消息映射,代码如下:(command)
ShowControlBar(&m_wndMyBar1, !m_wndMyBar1.IsVisible(), FALSE);(update_command)
pCmdUI->Enable();
pCmdUI->SetCheck(m_wndMyBar1.IsVisible());但是执行的时候却没有用,按钮状态是会跟着ControlBar的开/闭改变,但是按他却不会控制ControlBar打开或者关闭,如果关上ControlBar就再也打不开了。我自己又重新建立一个新的SDI,但是这个程序的IDR_MAINFRAME并不用我关联,我也是同样的方法添加的消息响应,但这个就能控制。所以现在我怀疑我手里现成的这个程序是不是有什么被改过了,而我不了解。
所以现在向大家求助,请高人帮忙分析一下可能哪里有问题才造成这个问题?如果有需要,还可以再贴代码,大家想看什么部分的说一下就行了!跪求了!~~~~能救我于水火的兄弟,我愿出500分!(由于系统只让一次给100,所以偶再后补)
谢谢了~~~~现在急死我了!

解决方案 »

  1.   

    你看一下你的ID号对应了几个整型值?搜一下ID号,我怀疑对应了2个.
      

  2.   

    如果可以的话,可以将程序源代码发到:[email protected]
    我帮你看看!注明帖子的URL!
      

  3.   

    如果能显示,那么关闭以后肯定能使用ShowControlBar再次显示!
    IDR_MAINFRAME是一个比较特别的东东,它代表了很多种资源的ID!
      

  4.   

    [email protected]
    说明问题原因及过程,还有你要达到的目的,我帮你看看
      

  5.   

    [email protected]
    帮你看看
      

  6.   

    别的没看,不过要改工具栏,直接在资源管理器里改,就是把IDR_MTOOLBAR3的位图复制到IDR_MAINFRAME里,再修改响应按钮的ID。或者,把IDR_MAINFRAME删除,把IDR_MTOOLBAR3的ID改为IDR_MAINFRAME。