- 浏览: 5104970 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
/************************************************************/
VC IPicture
显示网络图片 显示远程图片 显示URL指定的图片
通过HTTP下载显示图片 显示网上广告图片
上面是我罗列的关键字,我找这个文章换了好几种关键字写法,才找到,
为了方便它人,我把关键字全部写上。
/************************************************************/
VC IPicture
显示网络图片 显示远程图片 显示URL指定的图片
通过HTTP下载显示图片 显示网上广告图片
上面是我罗列的关键字,我找这个文章换了好几种关键字写法,才找到,
为了方便它人,我把关键字全部写上。
/************************************************************/
文章很不错,正好解决了我的问题。感谢作者。这是个用SDK(没有使用MFC)开发的程序。
如果对SDK开发方式不是很熟,只看ShowPic函数就以了。
如果对SDK开发方式不是很熟,只看ShowPic函数就以了。
- #include <windows.h> // Windows SDK 要用到的
- #include <commdlg.h> // 打开文件的窗口要包含这个头文件
- //用到了 IPicture 接口,要包含下面两个 头文件
- #include <ocidl.h>
- #include <olectl.h>
- // 声明窗口函数的原型
- LRESULT CALLBACK MainWndProc ( HWND , UINT , WPARAM , LPARAM );
- // 声明显示图片的函数原型
- HRESULT ShowPic( char *lpstrFile, HWND hWnd) ;
- //图片文件名
- char lpstrFile[MAX_PATH]= "" ;
- int WINAPI WinMain ( HINSTANCE hThisInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpszArgument,
- int nFunsterStil)
- {
- // 窗口类名
- char szClassName[ ] = "ShowPicture" ;
- WNDCLASSEX windclass;
- //用描述主窗口的参数填充 WNDCLASSEX 结构
- windclass.cbSize = sizeof (windclass); //结构大小
- windclass.hInstance = hThisInstance; //实例句酚
- windclass.lpszClassName = szClassName;
- windclass.lpfnWndProc = MainWndProc; //窗口函数指针
- windclass.style = CS_DBLCLKS; //捕获双击事件
- windclass.cbSize = sizeof (WNDCLASSEX);
- windclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); //使用预定义图标
- windclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION); //使用预定义类的小图标
- windclass.hCursor = LoadCursor (NULL, IDC_ARROW); //使用预定义光标
- windclass.lpszMenuName = NULL; //不指定主菜单
- windclass.cbClsExtra = 0; //没有额外的类内存
- windclass.cbWndExtra = 0; //没有额外的窗口内存
- windclass.hbrBackground = ( HBRUSH ) COLOR_BACKGROUND; //使用预定义背景画刷
- //注册这个窗口类,如果失败直接退出程序
- if (!RegisterClassEx (&windclass))
- return 0;
- //创建主窗口
- HWND hWnd = CreateWindowEx (
- 0, //dwExStyle, 扩展样式
- szClassName, //lpClassName, 类名
- "显示图片 -- 鼠标双击浏览图片文件 -- Author:Unmi" , //lpWindowName, 标题
- WS_OVERLAPPEDWINDOW, //dwStyle, 窗口风格
- CW_USEDEFAULT, //X, 初始 X 坐标
- CW_USEDEFAULT, //Y, 初始 YX 坐标
- 640, //nWidth, 宽度
- 480, //nHeight, 高度
- HWND_DESKTOP, //hWndParent, 父窗口句柄
- NULL, //hMenu, 菜单句柄
- hThisInstance, //hInstance, 程序实例句柄
- NULL //lpParam, 用户数据
- );
- //显示窗口,刷新窗口客户区
- ShowWindow (hWnd, nFunsterStil);
- // 从消息队列中取出消息,交给窗口函数处理
- // 直到 GetMessage 取出的消息是 WM_QUIT,即FALSE,则结束消息循环
- MSG messages;
- while (GetMessage (&messages, NULL, 0, 0))
- {
- //转换键盘消息,把虚拟键转换为字符消息
- TranslateMessage(&messages);
- //将消息发送到相应的窗口函数
- DispatchMessage(&messages);
- }
- // GetMessage 返回 FALSE,程序结束 PostQuitMessage() 发出这一消息
- return messages.wParam;
- }
- // 窗口函数,消息由 DispatchMessage 派发
- LRESULT CALLBACK MainWndProc ( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch (message) //处理消息
- {
- case WM_DESTROY:
- //向消息队列投递一个 WM_QUIT 消息,促使 GetMessage 函数返回0,结束消息循环
- PostQuitMessage (0);
- break ;
- case WM_LBUTTONDBLCLK:
- {
- OPENFILENAME file = {0};
- file.lStructSize = sizeof (file);
- file.lpstrTitle = "请选择一个图片文件" ;
- file.lpstrFile = lpstrFile;
- file.nMaxFile = MAX_PATH;
- file.lpstrFilter = "Pictures(*.jpg,*.gif,*.bmp)\0*.jpg;*.gif;*.bmp\0\0" ;
- if (::GetOpenFileName(&file))
- {
- //清除原来的图像
- HDC hdc=GetDC(hWnd);
- RECT rect;
- ::GetWindowRect(hWnd,&rect);
- ::FillRect(hdc,&rect,( HBRUSH ) COLOR_BACKGROUND);
- ::SendMessage(hWnd,WM_PAINT,NULL,NULL);
- }
- }
- break ;
- case WM_PAINT:
- ShowPic(lpstrFile,hWnd);
- break ;
- default :
- //将我们不处理的消息交给系统 做默认处理
- return DefWindowProc (hWnd, message, wParam, lParam);
- }
- return 0;
- }
- // 显示图片, lpstrImgUrl 为图片URL地址,hWnd 为窗口句柄
- HRESULT Utils::ShowPic( char *lpstrImgUrl, HWND hWnd)
- {
- HDC hDC_Temp=GetDC(hWnd);
- IPicture *pPic;
- IStream *pStm;
- BOOL bResult;
- DWORD dwFileSize,dwByteRead;
- //读取网页上图片文件,实际是个CHttpFile指针
- CInternetSession session( "HttpClient" );
- CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl);
- if (httpFile!=INVALID_HANDLE_VALUE)
- {
- dwFileSize= httpFile->GetLength(); //获取文件字节数
- 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;
- //把文件读入内存缓冲区
- dwByteRead = httpFile->Read(pvData,dwFileSize);
- 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);
- pPic->Release();
- httpFile->Close(); //关闭打开的文件
- if (SUCCEEDED(bResult))
- {
- return S_OK;
- }
- else
- {
- return E_FAIL;
- }
- }
补充说明:
原文的程序是使用SDK方式开发的,可能会有些人不习惯,我使用MFC方式验证调试了一下,效果还不错。如需要源码的,请到http://wallimn.ys168.com
(我的网络硬盘)下载。
我的程序是个很简单的程序,没有考虑重绘、图片大小的处理等问题,仅体现编程思想及方法。
发表评论
-
Delphi中编程实现TWebBrowser查找及上一个、下一个功能
2016-08-18 13:58 1319代码比较简单,全部内容如下: //1:向下搜索;-1:向上 ... -
OLEDB的Excel的IMEX和HDR是什么意思
2013-11-23 21:15 2087转自:http://blog.csdn.net/baple/a ... -
c#获取应用程序目录
2013-10-23 22:35 1708string str1 =Process.GetCurrent ... -
Visual C# 方案 -> 文本操作快捷键
2013-10-07 22:34 2018转自:http://technet.microsoft.com ... -
Visual Studio 2005快捷键大全
2013-10-07 22:29 1607转自:http://www.cnblogs.com/mekon ... -
C#正则表达式测试小工具
2013-10-04 18:51 4750C#的正则表达式使用比较方便,但复杂的正则表达式还是需要测 ... -
C#正则表达式语法规则详解
2013-10-04 17:26 3963正则表达式通常包含字 ... -
C# WINFORM 捕获全局异常
2013-10-01 11:56 2998using System; using System.Coll ... -
Visual C# 中XML注释的使用(含注释在开发时显示换行)
2013-10-01 11:54 2422在C#智能注释时,常常希望它能在开发时显示为换行,使得提示更加 ... -
DevExpress汉化(WinForm)
2013-09-19 17:27 8184/* *隔壁老王原创,2013-09-21,转载请保留本人信息 ... -
VC中的CImage类
2011-04-17 22:19 8872今天查找如何实现 ... -
VC旋转图片
2011-04-16 16:45 3743转自:http://hi.baidu.com/sweetpig ... -
VC多线程编程(转)
2010-12-22 21:11 3145原文地址:http://www.cnblo ... -
Manifest的问题
2010-05-11 10:08 2278原始连接:http://www.zming ... -
Asp.Net中Word,Excel等office com组件操作权限的问题
2010-05-06 13:57 10136近日在打开原来写的一 ... -
如何注销windows server2003 服务器中的远程连接
2009-12-14 01:29 3776碰到超过远程连接数而无法连接服务器,可以采用如下方法解决 ... -
访问WebBrowser控件中的HTML源码
2009-12-11 22:13 4069为了实现在自己的程序中显示HTML文档,我们一般采用IE(In ... -
Makefile详解(3/3)
2009-12-01 12:32 1519一、函数库文件的成员 一个函数库文件由多个文件组成。你可以以 ... -
Makefile详解(2/3)
2009-12-01 12:29 2196八、目标变量 前面我们所讲的在Makefile中定义的变量都 ... -
Makefile详解(1/3)
2009-12-01 12:27 2118原文地址:http://blog.csdn ...
相关推荐
使用 Windows IPicture 接口显示图片的类。谁用谁知道!要记得评价哦!
使用IPicture显示图片,使用步骤已经在界面上显示
本MFC小程序实现了下面3个功能 1.从本地读取文件,并显示...2.通过CHttpFile,CInternetSession类打开一个URL获取图片,并保存在本地, (随便在网上找个URL替换就可以) 3.从本地读取一幅图片,然后按照指定尺寸另存一份
代码实现了用IPicture显示多种格式的图片,可以在此基础上添加自己的图像处理功能。
CPicture_src-使用IPicture接口的类显示
ipicture方式实现图片显示,测试了bmp格式、gif格式和jpg格式均成功
VC下可以使用 IPicture接口来实现图片显示及放大缩小等功能,并且可以通过IImage控件来实现图片的显示
VC在MFC程序中显示JPG图片,GIF动画图片_IPicture_COM接口.zip
visual c++ VC调用JPEG、GIF图像的简便方法_IPicture_COM接口
IPicture使用总结,VC图像处理接口
VC 显示自适应大小的图片,在ImgView里显示一张自适应的图片,它使用了一个叫"CPicture"的类来封装IPicture。CPicture将一些麻烦的COM类型的参数映射为那些更容易被MFC程序员接受的类型,在CPicture里,你可以控制按...
一个很好的COM组件IPICTURE应用程序。有兴趣的朋友可以参考参考。 工程名345
介绍了在VC 环境中,利用ADO 2.5中所提供的Stream对象和Fields对象进行数据库中图片的存取,同时,还利用了IPicture接口实现多种格式图片的显示,并通过控件自画的方法解决了图片显示的刷新问题。
在VC中显示JPEG图像。 源码为MFC编写,使用了IPicture接口对象。显示图像只使用了一个函数:DisplayPicture(),参数为图像...显示图像的区域使用了一个VC图像控件的区域,实际可根据自己需要选择在界面所需区域显示。
没有无用代码,每句代码都有意义,基于IPicture显示图片,效果高,并且兼顾了了闪烁和擦除背景。 switch (nSBCode) { case SB_THUMBTRACK: { nPostion = GetScrollPos (SB_VERT); ScrollWindow(0, ...
利用IPicture动态从本地加载jpg、jpeg、bmp格式的图片,很多工程项目都会用到,简单好用。
jQuery制作图片标注提示信息插件。 演示地址:http://www.xwcms.net/js/tsk-fdc-dcc/88743.html
对IPicture的封装。实用简单
利用IPicture接口加载、显示图片,可加载jpg、...将所有操作封装为CPicture类,定义变量后,使用LoadPicture即可载入图片,使用ShowPicture显示图片到指定位置。 并附上demo,工程为vs2008创建,类本身vs所有版本通用
用com加载图片的一个封装类,很强大,可以直接使用哦