




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC基于对话框的程序如何显示图片?用什么控件?或是什么其他的方法?在网上查了好久都没有符合要求的,都是基于视图的.最简便的方法.在窗口上点右键插入ActiveX控件里面以Microsoft开头的控件里寻找关于图片的控件.比如Microsoft ListView Control.等等.在对话框类中的OnPaint()函数中用DrawIcon()函数来加载就可以了。有这个控件 名字叫picture就在编辑框的上面,把它拖到对话框上再加载你要的图片就可以了简单的ICON可以直接使用picture控件,它是一个位图,大小16*16 or 32*32方法一:CDC * dc; dc=GetDC(); /得到对话框的设备环境 CDC dcMemory; dcMemory.CreateCompatibleDC(dc); /得到与对话框设备环境相兼容的内存DC bitmap=new CBitmap(); HBITMAP hbitmap; /装载图片 hbitmap=(HBITMAP):LoadImage(NULL,C:pan.bmp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); if(hbitmap) /成功 bitmap-Attach(hbitmap); else /出错。返回 AfxMessageBox(打开图像文件出错); /释放内存中的设备环境 ReleaseDC(dc); ReleaseDC(&dcMemory); delete bitmap; return; /取得图像的大小 long bmWidth,bmHeight; /图像的宽度,和高度 BITMAP bm; bitmap-GetBitmap(&bm); bmWidth=bm.bmWidth; bmHeight=bm.bmHeight; dcMemory.SelectObject(bitmap); dc-BitBlt(0,0,bmWidth,bmHeight,&dcMemory,0,0,SRCCOPY);/把内存中的图像复制到对话框DC中去另外,转一篇描述的比较详细的资料供参考:/Unmi/archive/2007/12/01/164444.html想做个东西,用VC,希望是在程序界面上能把指定 URL 的图片显示出来,还没找到如何显示 HTTP 资源的图片,先还是让本地图片能在 VC 的窗口(包括各种控件)中显示出来吧。在网上搜索了一番,大家代码都如出一辙,我也不能生搬硬载,不由又亲手实践了一下,并连同原来学过的 Window SDK 做窗口程序也复习了一遍,没有使用到 MFC,只需存成单个源文件,甚至用 CL 命令来编译都无须打开 VC 的,在 VC6 中测试通过。代码如下:(仅需关键最后一个方法 ShowPic(char *lpstrFile, HWND hWnd)#include / Windows SDK 要用到的 #include / 打开文件的窗口要包含这个头文件 /用到了 IPicture 接口,要包含下面两个 头文件 #include #include / 声明窗口函数的原型 LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM); / 声明显示图片的函数原型 HRESULT ShowPic(char *lpstrFile,HWND hWnd) ; /图片文件名 char lpstrFileMAX_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;*.bmp00; 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; / 显示图片,此文的重点之所在了, lpstrFile 为图片文件名,hWnd 为窗口句柄 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); pPic-Release(); CloseHandle(hFile);/关闭打开的文件 if (SUCCEEDED(bResult) retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江小学五年级上册奥数单选题100道及答案
- 小学生心理健康家庭教育讲座
- 建筑设计大师解析
- 新年版面设计规范
- 汉语介绍课件
- 小寒课件介绍
- 卫生资格考试考生经验交流试题与答案
- 执业护士考试心理素质提升试题及答案
- 医学界动态趋势执业医师考试试题及答案
- 民警职业教育培训课件
- 湖南省天壹名校联盟2025届高三5月适应性考试(化学)
- 村干部公务员试题及答案
- 浙江省杭州地区(含周边)重点中学2024-2025学年高一下学期期中考试化学试卷(含答案)
- 2025年北京市石景山区九年级初三一模语文试卷(含答案)
- 2025年人教版九年级中考道法社会热点专题 热点七 《黑神话:悟空》
- 2025年浙江省温州市中考一模语文试题(含答案)
- GB/T 12385-2025管法兰用垫片密封性能试验方法
- 油烟机清洗合同协议范本
- 宾馆卫生考试题及答案
- 高中家长会 共筑梦想,携手未来课件-高二下学期期末家长会
- (正式版)YST 1682-2024 镁冶炼行业绿色工厂评价要求
评论
0/150
提交评论