我要载入一个位图资源,按照函数要求,可以直接用id号载入,也可用指向资源名的指针载入,那么我下面的语句到底错在什么地方呢,应该怎么改呢,请各位不吝指教,谢谢:)
CString string;
string="IDB_LIFE";
m_pBitmap->LoadBitmap(string);

解决方案 »

  1.   

    没有这种用法,可以载入一个bmp文件
      

  2.   

    LoadBitmap的参数也不是String 型的
      

  3.   

    你的IDB_LIFE是字符串,类型不匹配
      

  4.   

    但IDB_LIFE是资源的ID号,那string就应该是指向这个资源名字的指针,
    为什么不符合函数的参数类型呢
      

  5.   

    类型不符。
    要想动态改变,可以用类似swith——case语句判断,再加载啊
      

  6.   

    在loadbitmap()函数中,参数可以是两种
    LPCTSTR lpszResourceName 
    和UINT nIDResource ;
    上面的表示指向于装载的位图的资源命的指针
    下面表示的是装载位图的资源的ID号
    我们一般用下面的这种方式比较多
    但是当我要装入不同的位图的时候不是必须用这种方法的吗
    这里的string不就是指向位图资源的指针吗?
      

  7.   

    两种做法
    CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP1);
    bmp.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1));
    MAKEINTRESOURCE(ABC)结果不是"ABC"
      

  8.   

    可不可以灵活一点儿
    不用这种switch-case判断
    我想既然函数规定了有这种用法
    应该是可以的呀
      

  9.   

    把下面的复制到你的记事本中看:(这是我以前的笔记,看起来像是乱码在这里……)

    资源ID实际上应是一个字符串,所以对于ID,你可以用字符串,标志符,或者是一个数字,但是调用方法是有区别的,如:如果你用你自已的数字那么你要这样调用:
    hIcon = LoadIcon (hInstance, MAKEINTRESOURCE (125)) ;
    The obscure method is this: 
    hIcon = LoadIcon (hInstance, TEXT ("#125")) ;
    Windows recognizes the initial # character as prefacing a number in ASCII form.
    "
    你还可以用最好的方法,用一个字符串来定义你的资源,也就是定义一个加上引号的串,假设是"anxing";那么用下面的方法调用:
    LoadIcon(hInstance,TEXT("anxing"));上面的是WINAPI方法,我想你用MFC也是一样的。