请问下c语言如何实现插入图片功能

大概是这样。做了个电话簿,看主函数界面的时候让那个程序框框有1张图片做背景输入个1,2,3之后,进入存储之类的功能时候,能再切换一张本地图片做背景,应该怎么弄呢?... 大概是这样。
做了个电话簿,看主函数界面的时候让那个程序框框有1张图片做背景
输入个1,2,3之后,进入存储之类的功能时候,能再切换一张本地图片做背景,应该怎么弄呢?
展开
 我来答
星月小木木
2016-01-13 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:9617万
展开全部
  1. C语言写控制台程序是无法加图片的,只能用命令行输出,最多就是设置下背景和字体,颜色之类的。如果开发API窗口程序,完全依赖于操作系统的函数库。C语言本身并不提供这类函数。

  2. 下面是windows系统下实现的函数代码,第一个参数是图片的存放的位置,第二个参数是窗口句柄。

  3. HRESULT ShowPic(char *lpstrFile,HWND hWnd)
    {
    HDC hDC_Temp=GetDC(hWnd);
    IPicture *pPic;
    IStream *pStm;
    BOOL bResult;
    HANDLE hFile=NULL;
    DWORD dwFileSize,dwByteRead;
    //打开图形文件
    hFile=CreateFile(lpstrFile,GENERIC_READ,
    FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    if (hFile!=INVALID_HANDLE_VALUE)
    {
    dwFileSize=GetFileSize(hFile,NULL);//获取文件字节数  
    if (dwFileSize==0xFFFFFFFF)
    return E_FAIL;
    }
    else
    {
    return E_FAIL;
    }
    //分配全局存储空间  
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
    LPVOID pvData = NULL;
    if (hGlobal == NULL)
    return E_FAIL;
    if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块  
    return E_FAIL;
    ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件读入内存缓冲区
    GlobalUnlock(hGlobal);
    CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
    //装入图形文件
    bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
    if(FAILED(bResult))
    return E_FAIL;
    OLE_XSIZE_HIMETRIC hmWidth; //图片的真实宽度, 单位为英寸 
    OLE_YSIZE_HIMETRIC hmHeight; //图片的真实高度, 单位为英寸
    pPic->get_Width(&hmWidth);
    pPic->get_Height(&hmHeight);
    //转换hmWidth和hmHeight为pixels距离,1英寸=25.4毫米
    int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);
    int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);
    //将图形输出到屏幕上(有点像BitBlt)
    bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,0,hmHeight,hmWidth,-hmHeight,NULL);
    hmHeight,NULL);
    pPic->Release();
    CloseHandle(hFile);//关闭打开的文件
    if (SUCCEEDED(bResult))
    {
    return S_OK;
    }
    else
    {
    return E_FAIL;
    }
    }

魔尊第一楼
2012-05-30 · TA获得超过371个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:100万
展开全部
你百度上搜索Easyx loadimage();会有你想要知道的东西,你得先下载个Easyx,就好办了。

希望对你有帮助!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式