我有个.bmp文件,但我需要的是icon,我该如何将BITMAP转换为HICON呢(不能用转换工具转换为ICON文件,对于我没有意义)

解决方案 »

  1.   

    我不知道他们两个的文件格式是不是一样的如果是一样的话那就好办了
    你直接按二进制资源在程序中加载,然后强制转换 ,HICON只是一个指针而已!
      

  2.   

    sohou(大秦之刃) 的方法好像事行不通的.从bitmap到icon的转化是个非常复杂的过程,要对HICON和BITMAP的格式非常熟悉,从BITMAP中读取数据,然后按照ICON的格式生成文件头,然后填充数据,最后才能生成真正的ICON文件
      

  3.   

    你用icon的目的何在?
    说说看看,说不定有第二个方法
      

  4.   

    厄,你是要从一个Bitmap文件得到HICON,还是得到一个.ico文件?
    如果要得到HICON,还是比较简单的。用CImageList可以办到。
    先LoadBitmap,然后attach到一个CBitmap的对象上去,把这个CBitmap的对象存入CImageList,然后再ExtractIcon,就得到一个HICON的句柄。
    示例如下:CBitmap Bitmap;
    HBITMAP hThumbnailBmp = NULL;...hThumbnailBmp = ::CreateDIBSection(hMemDC, lpBmpInfo, DIB_RGB_COLORS, NULL, NULL, 0);
    StretchDIBits//»­Í¼
    (
    hMemDC, 
    ThumbRect.left, ThumbRect.top, ThumbRect.Width(), ThumbRect.Height(), //Dest
    0, 0, lpBmpInfo->bmiHeader.biWidth, lpBmpInfo->bmiHeader.biHeight,   //Src
    lpDibBits,
    lpBmpInfo,
    DIB_RGB_COLORS,
    SRCCOPY
    );
    Bitmap.Attach(hThumbnailBmp);
    imglstThumbnail.Replace(pItemInfo->nThumbIndex, &Bitmap, NULL);HICON hIcon = imglstThumbnail.ExtractIcon(...);
      

  5.   

    谢谢 codewarrior(会思考的草)及其他的朋友们