搜索
查看: 612|回复: 10
打印 上一主题 下一主题

此帖已删

[复制链接]
跳转到指定楼层
楼主
发表于 2017-7-19 10:31:22 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tc_初学C 于 2018-4-30 18:33 编辑

此帖已删












沙发
 楼主| 发表于 2017-7-19 10:40:20 | 显示全部楼层
本帖最后由 初学C 于 2017-7-19 10:46 编辑

[mw_shl_code=c,true]int PutImage(HDC DC, char *ImagePath,int w,int h)
{   
    HANDLE FHD = 0;
    unsigned long dwFileSize = 0;
    HGLOBAL ImageMemary = 0;
    LPVOID MemaryLock = 0;
    unsigned long ActualSize = 0;
    IPicture *ppic = 0;        
    IStream *pstm = 0;     
    OLE_XSIZE_HIMETRIC hmWidth = 0;  
    OLE_YSIZE_HIMETRIC hmHeight = 0;
    GUID const IID_IPicture2 = {0};
    DWORD res = 0;
    FHD = CreateFile (ImagePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
    if(FHD == 0)
    {
       return GetLastError();   
    }
    dwFileSize = GetFileSize ( FHD, NULL );
    if(dwFileSize == 0)
    {
        res = GetLastError();
        CloseHandle ( FHD );
        return res;   
    }
    ImageMemary = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
    if(ImageMemary == 0)
    {   
       res = GetLastError();
       CloseHandle ( FHD );
       return res;   
    }
    MemaryLock = GlobalLock ( ImageMemary );
    if(MemaryLock == 0)
    {
       res = GetLastError();
       CloseHandle ( FHD );
       GlobalFree(ImageMemary);
       return res;   
    }
    if(0 == ReadFile ( FHD, MemaryLock, dwFileSize, &ActualSize, NULL) )
    {
       res = GetLastError();
       CloseHandle ( FHD );
       GlobalFree(ImageMemary);
       return res;
    }
    if(S_OK != CreateStreamOnHGlobal (ImageMemary, 0, &pstm) )
    {
        res = GetLastError();
        CloseHandle ( FHD );
        GlobalFree(ImageMemary);
        return res;     
    }
    res = OleLoadPicture(pstm,dwFileSize,1,&IID_IPicture2,(LPVOID*)&ppic);//一直在这一句出错
    if(res == E_POINTER)
    {
        CloseHandle ( FHD );
        GlobalFree(ImageMemary);
        return E_POINTER;   
    }
    if(res == E_NOINTERFACE)
    {
        CloseHandle ( FHD );
        GlobalFree(ImageMemary);
        return E_NOINTERFACE;   
    }
    if(ppic == 0)
    {
       res = GetLastError();
       CloseHandle ( FHD );
       GlobalFree(ImageMemary);
       return res;   
    }
    ppic->lpVtbl->get_Width(ppic, &hmWidth);
    ppic->lpVtbl->get_Height(ppic, &hmHeight);
    ppic->lpVtbl->Render(ppic,DC,0,0,w,h,0,hmHeight,hmWidth,-hmHeight,NULL);
    GlobalUnlock ( ImageMemary );
    CloseHandle ( FHD );
    GlobalFree(ImageMemary);
    return 1;
} [/mw_shl_code]
板凳
 楼主| 发表于 2017-7-19 12:51:11 | 显示全部楼层
4399APPLE 发表于 2017-7-19 11:26
图片应该要是BMP格式……

可是BMP格式也不行. 返回值说是不支持指定对象

点评

稍等一下我 我去刷题dp  发表于 2017-7-19 12:57
地板
 楼主| 发表于 2017-7-22 15:57:25 | 显示全部楼层
muchmuch 发表于 2017-7-22 15:01
哈哈,118斤,我才一百斤

是188斤                        
5#
 楼主| 发表于 2017-7-22 19:18:49 | 显示全部楼层
4399APPLE 发表于 2017-7-19 11:26
图片应该要是BMP格式……

话说你知道是什么问题了吗?我到现在还没查出。
6#
 楼主| 发表于 2017-7-22 22:33:19 | 显示全部楼层
这问题难道没人知道吗?                                      
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表