窗口传给控件一个位图ID,控件如何加载这个位图?

解决方案 »

  1.   

    什么意思?你是不是想得到位图的句柄(HBITMAP)或得到位图结构体(BITMAP)?
    HBITMAP hBitmap=LoadBitmap(HWND,MAKEINTRESOURCE(ID));
    BITMAP bitmap;
    bitmap=GetObject(hBitmap, sizeof (BITMAP),  &bm1) ;
      

  2.   

    对不起,少找字了。是加载容器(五笔里,“容器”的输入方法与“窗口”一样)里面的位图!比如加载exe里面的资源。
      

  3.   

    LoadLibrary()后LoadBitmap(),用Load进来的句柄和ID值作参数
    或者用FindResource(),LoadResource()
      

  4.   

    和MFC里的方法一样的.
    直接用:FindResource(),LoadResource()
    找到资源然后加载,或者像STRING之类的资源可以直接LoadString(ID)的方式直接加载.
      

  5.   

    LoadString(ID)
    中的ID,肯定会被当成控件里资源,而不是容器里的资源。to zjh824(coder)
    控件里不能获得容器的模块句柄吗?非得要LoadLibrary?
    我想,只要得到容器的模块句柄就好办了,直接AfsSetResourceHandle()一下即可,可是不知道如何去获取容器的模块句柄(HINSTANCE)。
      

  6.   

    没看清是ATL/ActiveX/COM版块的
    作为容器也是一个进程,控件相当于是一个动态库,
    在Dll库里调用进程的资源可以先GetModuleHandle(NULL),得到当前进程的实例句柄,然后用这个句柄调用LoadBitmap即可.
    跨进程调用资源应该先LoadLibrary才能得到实例句柄,不跨进程直接GetModuleHandle.