啊哈磊_编程从这里起步

标题: 此帖已删 [打印本页]

作者: 初学C    时间: 2017-7-19 10:31
标题: 此帖已删
本帖最后由 tc_初学C 于 2018-4-30 18:33 编辑

此帖已删













作者: 初学C    时间: 2017-7-19 10:40
本帖最后由 初学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]
作者: 4399APPLE    时间: 2017-7-19 11:26
图片应该要是BMP格式……
作者: 初学C    时间: 2017-7-19 12:51
4399APPLE 发表于 2017-7-19 11:26
图片应该要是BMP格式……

可是BMP格式也不行. 返回值说是不支持指定对象
作者: zhuzhu81998    时间: 2017-7-21 02:26
actually no one
94公斤是什么概念?
作者: muchmuch    时间: 2017-7-22 15:01
zhuzhu81998 发表于 2017-7-21 02:26
actually no one
94公斤是什么概念?

哈哈,118斤,我才一百斤
作者: 初学C    时间: 2017-7-22 15:57
muchmuch 发表于 2017-7-22 15:01
哈哈,118斤,我才一百斤

是188斤                        
作者: 初学C    时间: 2017-7-22 19:18
4399APPLE 发表于 2017-7-19 11:26
图片应该要是BMP格式……

话说你知道是什么问题了吗?我到现在还没查出。
作者: 初学C    时间: 2017-7-22 22:33
这问题难道没人知道吗?                                      
作者: 1138905368    时间: 2017-8-12 17:58
初学C 发表于 2017-7-22 15:57
是188斤

你厉害                          




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2