如题,Release下程序菜单中的图标为什么都不显示了呢,Bitmap格式的, 在Debug下正常显示啊,工具栏上的图标两种环境下都正常显示
请问是怎么回事,又该怎么处理呢?

解决方案 »

  1.   

    以前碰到 相关结构体没初始化 会出现这样问题,DEBUG 没问题,release就没反应。不晓得是不是这方面原因。
      

  2.   

    不会吧,我是.LoadBitmap(...)来的,哪有相关结构体呢,你后来是怎么解决的呢
      

  3.   

    我在为菜单创建图标的代码是这样的:
    在MainFrame的OnCreat(...)函数中,
    {
       ...
      CBitmap m_BitStart;
      m_BitStart.LoadBitmap(IDB_BITMAP_START);//IDB_BITMAP_START为我新建的位图资源
      CMenu *subMenu=this->GetMenu()->GetSubMenu(4);
      ASSERT(subMenu->SetMenuItemBitmaps(ID_START_SIMULATION,MF_BYCOMMAN,
             &m_BitStart,&m_BitStart));
       ...//其他菜单图标也都是这样处理的
    }
    不知道是不是还要在其他地方设置什么,才能在Release下 正常显示菜单图标?
      

  4.   

    CBitmap m_BitStart;
    =============
    局部变量,函数结束后析构之后,相关的位图对象也被释放了,解决方法有如下几种:
    一:改为CBitmap *m_BitStart;
    二:在最后调用m_BitStart.Detach(),将类对象与GDI对象分离
    三:将CBitmap定义为静态变量或是类成员变量
      

  5.   

    ASSERT(subMenu->SetMenuItemBitmaps(ID_START_SIMULATION,MF_BYCOMMAN,
      &m_BitStart,&m_BitStart));囧。
    你的这个,在Release编译方式下根本就不会执行ASSERT只有在Debug下有效
      

  6.   

    哈哈,还是我太挫了,你一下就看中根本原因
    我平时编程都比较随意,因为我理解的不深,都是用到什么看到什么,用错了也不知道为什么....
    谢谢你,把ASSERT 去了 就好了....