我把另外一个工程B的工具条拖到我自己的工程A中,发现打开图象时候,和工程B不一样了。在B中,打开图象,放大的工具图标由灰色变成明亮的。我的A没有变化。查看B,发现放大工具图标,也没有对应的初始化函数,实在不明白了

解决方案 »

  1.   

    要是这样的话,可以通过
    SetState来进行设置就可以了~!~~
      

  2.   

    具体的可以参考MSDN:
    BOOL SetState(
    int nID,
    UINT nState );
      

  3.   

    我看了所有的地方,初始化都是pCmdUI->Enable(0);后来怎么让他变亮的呢,没有pCmdUI->Enable(1);啊
      

  4.   

    在下面函数中如果什么都没有写,结果导致放大工具条也能变亮,郁闷
    void CDemoDoc::OnUpdateViewZoomout(CCmdUI* pCmdUI) 
    {
    if (stretchMode) pCmdUI->Enable(0);
    if (m_ZoomFactor<=0.125) pCmdUI->Enable(0);
    }
      

  5.   

    如果实在不行请把代码压成*.rar当附件发在我的论坛上.
        同时在www.csdn.net上发帖,并给出在我的论坛的链接.压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps.
      

  6.   

    ViewZoomout是不是此按钮的ID
    如果是,
    OnUpdateViewZoomout函数就是控制此按钮的啊
      

  7.   

    D:\cximage599c_full\demo\demoDoc.cpp(63): ON_COMMAND(ID_VIEW_ZOOMIN, OnViewZoomin)
    D:\cximage599c_full\demo\demoDoc.cpp(65): ON_UPDATE_COMMAND_UI(ID_VIEW_ZOOMIN, OnUpdateViewZoomin)
    D:\cximage599c_full\demo\demoView.cpp(403): if (!pDoc->GetWaitingClick()) PostMessage(WM_COMMAND,ID_VIEW_ZOOMIN);
    D:\cximage599c_full\demo\resource.h(117):#define ID_VIEW_ZOOMIN               32786就这些,郁闷啊
      

  8.   

    ON_UPDATE_COMMAND_UI(ID_VIEW_ZOOMIN, OnUpdateViewZoomin)
    的意思是在OnUpdateViewZoomin中可以控制此按钮。
    pCmdUI->Enable(0);表示禁用此按钮。请查看
    stretchMode  m_ZoomFactor 这两个变量的量是否正确
      

  9.   

    非常感谢您,he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net),我把整个过程说一下,
    1、打开工程,处于无文件打开状态(filenothing)。这时只显示了框架类的菜单。显示的工具条大部分都是灰色的(除了新建和打开文件显亮可用)
    2、打开一个图像文件(这时子框架菜单被载入),下面就是关键问题:
    放大工具图标显亮变为可用,但查找其初始化函数OnUpdateViewZoomin)没有pCmdUI->Enable(1);,初始化函数如下:
    void CDemoDoc::OnUpdateViewZoomout(CCmdUI* pCmdUI) 
    {
    if (stretchMode) pCmdUI->Enable(0);
    if (m_ZoomFactor<=0.125) pCmdUI->Enable(0);
    }
    依照函数中语句,应该不管如何都会保持不可用的吧,前辈您说是吗?
    我按照您的要求,查找放大工具图标Id,有如下结果,
    D:\cximage599c_full\demo\demoDoc.cpp(63): ON_COMMAND(ID_VIEW_ZOOMIN, OnViewZoomin)
    D:\cximage599c_full\demo\demoDoc.cpp(65): ON_UPDATE_COMMAND_UI(ID_VIEW_ZOOMIN, OnUpdateViewZoomin)
    D:\cximage599c_full\demo\demoView.cpp(403): if (!pDoc->GetWaitingClick()) PostMessage(WM_COMMAND,ID_VIEW_ZOOMIN);
    D:\cximage599c_full\demo\resource.h(117):#define ID_VIEW_ZOOMIN               32786
    也就是当打开文件时候,也就初始化函数对其操作了,请问还会有什么情况会导致它显亮可用吗?
      

  10.   

    非常感谢您,he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net),我把整个过程说一下,
    1、打开工程,处于无文件打开状态(filenothing)。这时只显示了框架类的菜单。显示的工具条大部分都是灰色的(除了新建和打开文件显亮可用)
    2、打开一个图像文件(这时子框架菜单被载入),下面就是关键问题:
    放大工具图标显亮变为可用,但查找其初始化函数OnUpdateViewZoomin)没有pCmdUI->Enable(1);,初始化函数如下:
    void CDemoDoc::OnUpdateViewZoomout(CCmdUI* pCmdUI) 
    {
    if (stretchMode) pCmdUI->Enable(0);
    if (m_ZoomFactor<=0.125) pCmdUI->Enable(0);
    }
    依照函数中语句,应该不管如何都会保持不可用的吧,前辈您说是吗?
    我按照您的要求,查找放大工具图标Id,有如下结果,
    D:\cximage599c_full\demo\demoDoc.cpp(63):ON_COMMAND(ID_VIEW_ZOOMIN, OnViewZoomin)
    D:\cximage599c_full\demo\demoDoc.cpp(65):ON_UPDATE_COMMAND_UI(ID_VIEW_ZOOMIN, OnUpdateViewZoomin)
    D:\cximage599c_full\demo\demoView.cpp(403):if (!pDoc->GetWaitingClick()) PostMessage(WM_COMMAND,ID_VIEW_ZOOMIN);
    D:\cximage599c_full\demo\resource.h(117):#define ID_VIEW_ZOOMIN               32786
    也就是当打开文件时候,也就初始化函数对其操作了,请问还会有什么情况会导致它显亮可用吗?
      

  11.   

    he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net)在吗?
      

  12.   

    he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net)在吗?