我已取得HBITMAP hBitmap.
BITMAP  bmXOR;
::GetObject(hBitmap, sizeof(BITMAP), &bmXOR );
但bmXOR.bmBits却为0x00000000.
为什么??

解决方案 »

  1.   


      你的 hBitmap 是合法的吗? 检查一下返回值是否为0
      

  2.   

    GetDIBits太麻烦了,我已经找到了GetBitmapBits,谢谢关注
      

  3.   

    如何由BITMAP信息算出bmXOR.bmBits的size??
      

  4.   

    ICONINFO iconinfo;
    BITMAP   bmAND,bmXOR;
    HICON hIcon=ExtractIcon(AfxGetInstanceHandle(),"d:\\word.exe",0);
    GetIconInfo(hIcon,&iconinfo);::GetObject( iconinfo.hbmMask, sizeof(BITMAP), &bmAND );
    ::GetObject( iconinfo.hbmColor, sizeof(BITMAP), &bmXOR );
    bmAND.bmWidthBytes为4
    bmXOR.bmWidthBytes为128
    为什么bmXOR.bmWidthBytes=128???
      

  5.   

    help!!!!
    性命攸关呀!!!
    help!!!!
      

  6.   

    什么意思?为什么bmXOR.bmWidthBytes不等于bmAND.bmWidthBytes???
      

  7.   

    hbmMask   Specifies the icon bitmask bitmap.
    hbmColor   Identifies the icon color bitmap. 
    两个对象,当然是不一样的!!要得到Bitmap数据就用GetDIBits
      

  8.   

    bmXOR.bmBitsPixel也不等于bmAND.bmBitsPixel,为什么???
    有人知道吗???
      

  9.   

    voohoo2000(zjj) :
    如果我从一个icon中得到hbmMask和hbmColor,
    用hbmMask和hbmColor通过CreateIcon 构建一个新的icon,
    那么参数“number of XOR planes ”选谁的?bmXOR.bmBitsPixel还是bmAND.bmBitsPixel
      

  10.   

    HICON CreateIcon(
        HINSTANCE hInstance, // handle to application instance
        int nWidth, // icon width
        int nHeight, // icon height
        BYTE cPlanes, // number of planes in XOR bitmask
        BYTE cBitsPixel, // number of bits per pixel in XOR bitmask
        CONST BYTE *lpbANDbits, // pointer to AND bitmask array
        CONST BYTE *lpbXORbits  // pointer to XOR bitmask array
       );这个参数还是蛮清楚的. ^_^
      

  11.   

    这是我的代码,hIconX == NULL 退出,为什么???
    ICONINFO iconinfo;
    BITMAP   bmAND,bmXOR;
    HICON hIcon=ExtractIcon(AfxGetInstanceHandle(),"d:\\wrar271c.exe",0);
    GetIconInfo(hIcon,&iconinfo);::GetObject( iconinfo.hbmMask, sizeof(BITMAP), &bmAND );
    ::GetObject( iconinfo.hbmColor, sizeof(BITMAP), &bmXOR );BYTE* lpBitsXOR=NULL;
    BYTE* lpBitsAND=NULL;
    GetBitmapBits(iconinfo.hbmColor,bmXOR.bmHeight*bmXOR.bmWidthBytes,&lpBitsXOR);
    GetBitmapBits(iconinfo.hbmMask,bmAND.bmHeight*bmAND.bmWidthBytes,&lpBitsAND);HICON hIconX = CreateIcon
    (AfxGetInstanceHandle( ),// application instance  
     bmAND.bmWidth,          // icon width 
     bmAND.bmHeight,         // icon height 
     bmXOR.bmPlanes,         // number of XOR planes 
     bmXOR.bmBitsPixel,      // number of bits per pixel 
     lpBitsAND,              // AND bitmask  
     lpBitsXOR);             // XOR bitmask 
    if(hIconX == NULL)
    return;
      

  12.   

    老兄你的空间都没开噢!!让他如何Receive DataBYTE* lpBitsXOR = new BYTE[bmXOR.bmHeight*bmXOR.bmWidthBytes];
    BYTE* lpBitsAND = new BYTE[bmAND.bmHeight*bmAND.bmWidthBytes];
      

  13.   

    GetBitmapBits(iconinfo.hbmColor,bmXOR.bmHeight*bmXOR.bmWidthBytes,lpBitsXOR);
    GetBitmapBits(iconinfo.hbmMask,bmAND.bmHeight*bmAND.bmWidthBytes,lpBitsAND);参数也错了,,^_^
    睡觉咯,Byebye