编Release版本时,由于程序中有从res中载入图标,编的Release非得要将res文件放在一起才能正常运行,我想要编的release版本直接能运行,不需要res文件夹

解决方案 »

  1.   

    生成可执行文件时Res已经封装到了文件内部,不需要res文件夹啊,你程序在没有res文件夹的情况下有没有报错?报错信息是怎样的?
      

  2.   

    没有RES的情况下,那个按钮的背景是黑的
      

  3.   

    一般res文件夹位于程序源文件目录里面,而程序文件位于源文件目录上层的release或debug目录下,你res文件夹里面的文件添加到了程序资源里面没?还是直接从文件夹中调用的?
      

  4.   

    没有RES的情况下,那个按钮的背景是黑的
      

  5.   

    添加到程序资源里了,但是在导入的时候是直接从res文件夹导入的,因为用的是CImage类的Load函数导入的
    参数是全路径,不能用资源中的ID
      

  6.   

    那难怪了,你试试MAKEINTERSOURCE宏把ID转换成字符串文件名试试…
      

  7.   

    试了下,用MAKEINTERSOURCE还是不行
      

  8.   

    你用的方法是在程序运行时从外部文件动态加载图标,当然要有对应的文件才行。如果想只要一个exe,就要把图标作为资源添加到项目里面,通过资源ID或资源名称来加载(用LoadIcon等函数)。
      

  9.   

    你是怎么加载res资源中的文件的呢?LoadImage()之类的操作?
      

  10.   

    如果要用CImage类,可以用LoadFromResource成员函数。
      

  11.   

    右击资源文件 --》 添加 --》 导入图片资源HICON   hIcon   =   AfxGetApp()-> LoadIcon(ID); CButton cbtn;but.SetIcon(hIcon);
      

  12.   

    我是用CImage类中的Load这个函数加载的,是从RES文件直接导入的
      

  13.   

    那你就别用资源添加了,直接用你本地的图片,然后指定路径。跟资源文件就没有任何关系,下面是我用GDI+加载的图片进行绘制的,我查了资源文件没有描述我现在绘制这张图片。        Graphics graphics(this->m_hWnd);//Graphice对象
    CRect rect;
    GetClientRect(&rect);
    TCHAR EXEPULLPATH[MAX_PATH];
    GetModuleFileName(NULL,EXEPULLPATH,sizeof(EXEPULLPATH));
    CString strCurDir  = EXEPULLPATH;
    strCurDir = strCurDir.Left(strCurDir.ReverseFind('\\'));
    strCurDir = strCurDir.Left(strCurDir.ReverseFind('\\'));
    strCurDir += "\\Image\\Blue\\UnitBack.png";
    Image img(strCurDir);
    graphics.DrawImage(&img,0,0,rect.Width(),rect.Height());
      

  14.   

    Load是从文件中加载,LoadFromResource才是从资源中加载。