excel如何用宏自动抓取数据?

excel如何用宏自动抓取数据?,第1张

工具/原料

机械革命S3 Pro

Windows10

Excel2019

1、点击视图

点击菜单栏上“视图-宏”,下拉选择录制宏。

2、输入宏名

在名字输入框内输入宏的名称。

3、录制步骤

在表格中B1单元格内输入公式“=A1”。

4、执行宏

点击菜单栏上宏,打开对话框,点击执行。

5、抓取数据

单元格B2抓取到A2单元格内数据。

1. HyperSnap-DX 6.03.01 简体中文版(烈火)

HyperSnap-DX 是个屏幕抓图工具,它不仅能抓住标准桌面程序还能抓取 DirectX, 3Dfx Glide 游戏和视频或 DVD 屏幕图。本程序能以 20 多种图形格式(包括:BMP, GIF, JPEG, TIFF, PCX 等)保存并阅读图片。可以用热键或自动记时器从屏幕上抓图。功能还包括:在所抓的图像中显示鼠标轨迹,收集工具,有调色板功能并能设置分辨率,还能选择从 TWAIN 装置中(扫描仪和数码相机)抓图。

2. 屏幕录像专家 6.0 Build 20051226

《屏幕录像专家》是一款专业的屏幕录像制作工具。使用它你可以轻松地将屏幕上的软件 *** 作过程等录制成FLASH动画、ASF动画、AVI动画或者自播放的EXE动画。本软件采用直接录制方式或者先录制,再生成的方式录制屏幕录像,使用户对制作过程更加容易控制。本软件使用简单,功能强大,是制作各种屏幕录像和软件教学动画的首选软件。软件基本功能如下: 1.生成FLASH动画,文件小可以在网络上方便使用。 2.生成ASF动画,可以在网络上在线播放。 3.生成AVI动画,支持各种压缩方式。 4.生成EXE文件,可以自动播放动画不需附属文件。高度压缩,生成文件小。 5.支持后期配音和声音文件导入,使录制过程和配音分离。 6.录制目标自由选取:可以是全屏、选定窗口或者选定范围。 7.录制时可以设置是否同时录制声音,是否同时录制鼠标。 8.可以自动设置最佳帧数。 9.可以设置录音质量 10.可以自己定义快捷键 11.直接录制AVI功能 12.直接录制EXE功能 13.FLASH扩帧功能,使FLASH动画更加平滑。 14.EXE自动扩帧功能,更加平滑,即使是1帧/秒也有平滑的效果 15.AVI扩帧功能,可以制作25帧/秒的AVI动画 16.录制Realplay中播放的电影内容 17.鼠标点击自动提示功能 18.AVI合成、AVI截取、AVI转换压缩格式,EXE转成AVI 19.自由设置EXE录制播放时各种参数,比如位置、大小、背景色、控制窗体、时间等 20.支持EXE录像合成多节EXE 21.高度无损压缩,制作出最小的EXE录像 22.简单后期编辑功能,支持EXE截取、EXE合成、EXE转成LX、LX截取、LX合成等功能 23.EXE播放时可以定位到任意帧

3. 红蜻蜓抓图精灵2005 1.23 build 0430

红蜻蜓抓图精灵(RdfSnap)2005是一款完全免费的专业级屏幕捕捉软件,能够让您得心应手地捕捉到需要的屏幕截图。捕捉图像方式灵活,主要可以捕捉整个屏幕、活动窗口、选定区域、固定区域、选定控件、选定菜单等,图像输出方式多样,主要包括文件、剪贴板、画图和打印机。软件具有捕捉光标、设置捕捉前延时、显示屏幕放大镜、自定义捕捉热键、图像文件自动按时间或模板命名、捕捉成功声音提示、重复最后捕捉、预览捕捉图片、图像打印、图像裁切、图像反色、图像翻转、图像旋转、图像大小设置、常用图片编辑、墙纸设置等功能。捕捉到的图像能够以保存图像文件、复制到剪贴板、输出到画图、打印到打印机等多种方式输出。红蜻蜓抓图精灵2005 v1.22 build 0226 What's New1.修改鼠标右键单击捕捉预览窗口绘图工具栏各个工具按钮时出现错误动作的bug。2.修改某些机器上红蜻蜓抓图精灵软件窗口主菜单及托盘图标右键菜单中出现乱码的bug。3.其它细微修改。

4. SnagIt 8.0

强大的屏幕捕捉程序,不仅能捕捉 Windows 下的屏幕,也能捕捉 DOS 的屏幕。存盘支持的图形格式很多。还可以捕获屏幕 *** 作保存为 AVI 文件。开始支持微软的 DirectX 技术,以前不能折取 3D 游戏图片的毛病总算有了改进。

5. Macromedia Captivate 1.01.1418

Macromedia Captivate能够自动录制屏幕上的任何动作,并建立Flash格式的互动文档。可以添加文字、旁白录音等。使用者不需要具备编程能力。·英文界面·免费试用30天。

6. SnagIt 7.2.5 汉化补丁

一个强大的屏幕捕捉程序,不仅能捕捉 Windows 下的屏幕,也能捕捉 DOS 的。存盘支持的图形格式也很多。SnagIt对于系统并不会要求太高,凡Windows 98/95/NT 皆可使用,而且只要有Windows 支持的打印机,就可以设定打印机输出,若有设定32位的MAPI,还可以以电子邮件方式来输出。

7. HyperSnap-DX 6.03.01

HyperSnap-DX 是个屏幕抓图工具,它不仅能抓住标准桌面程序还能抓取 DirectX, 3Dfx Glide 游戏和视频或 DVD 屏幕图。本程序能以 20 多种图形格式(包括:BMP, GIF, JPEG, TIFF, PCX 等)保存并阅读图片。可以用热键或自动记时器从屏幕上抓图。功能还包括:在所抓的图像中显示鼠标轨迹,收集工具,有调色板功能并能设置分辨率,还能选择从 TWAIN 装置中(扫描仪和数码相机)抓图。

8. #1 Screen Capture 3.3

#1 Screen Capture 是一个用来通过多种方法来捕获计算机屏幕的实用工具程序,它包括:捕获最新的全屏幕,捕获最新的动态窗口;捕获按钮,窗口;控制面板;捕获任何指定区域!支持DirectX和DOS窗口模式的截图功能,截取的图片可以保存为bmp,png,pcx,tif,gif,jpg等格式!

9. ACS Capture专业屏捕软件 1.11

ACS Capture 是一个功能强大的、专业的屏幕捕捉和屏幕录制软件。ACS Capture 提供多种屏幕捕捉模式(包括全屏幕、矩形区域、圆形区域、椭圆形区域、任意多边形区域、菜单对象、按钮对象等),你可以轻松的捕捉屏幕上的任意形状或区域的图像,并能够将捕捉获得的图像保存未BMP、JPG、TIFF、PNG多种不同格式。ACS Capture 可以使您轻松、高效的完成屏幕快照以及区域图像捕捉,还可以为您节约大量的时间,提高您的工作效率。ACS Capture 还可以让您轻松地将您在屏幕上的动作录制成AVI视频流文件。ACS Capture 能够捕捉到EXE和DLL文件中的图标,而且能够搜索某个目录下的所有EXE和DLL文件中的图标以及图标文件。ACS Capture 支持多语言,您可以非常方便的将其翻译为任何其他语言版本。

10. 抓图小帮手 1.2

使用这套软件,您可以截取屏幕上任何大小的图片并且保存下来。它具备了所有基本的抓图功能,同时还提供图像输出和保存方式,并支持抓图热键。虽然"抓图小帮手"的功能没有某些同类软件全面,但是就单纯的抓图来说,已是绰绰有余。还犹豫什么?赶快下载一个试试!

11. 豪杰屏幕录像机 2.02(0117)

“课件制作”的全新突破,跟踪录制屏幕上所有区域的动作和键盘、鼠标的声音,可保存为EXE,AVI,GIF和HSR格式,编码速度快,高保真,也常被应用进行计算机监控管理。 功能说明:★ 录制/保存/播放功能 可以录制全屏幕,活动窗口,固定区域,指定区域的屏幕动作,包括鼠标的声音和键盘的声音,然后保存为EXE,AVI,GIF,HSR四种格式,保存完后可以进行播放。 ★ 后期编辑功能 可以对HSR格式的文件进行后期的编辑,编辑内容包括对文件每一帧添加图板说明,删除帧,添加声音,合并两个以上的HSR文件。 ★ 设置功能 可以在录制过程中设置是否要添加时间显示,添加标题,添加图板说明,鼠标是否显示以及显示形式,对视音频编码的设置,快捷键设置等。 ★ 浮动窗口的切换 可以在原始窗口和浮动窗口之间进行切换,方便 *** 作。

12. Capture Professional 5.08a 汉化版

本软件是一个小巧、实用、功能全面的屏幕捕捉工具。它能够捕捉静止图像或 AVI 视频;也能从扫描仪或数码相机获取图像;能从 EXE、DLL等文件中提取图形资源(包括图像、图标、光标);还有一个功能强大的图像编辑器, 包括各种绘图工具、特效以及宏 *** 作。 本软件分为演示版(Demo)和商业零售版(Retail)两个版本。演示版与零售版在功能上没有差别,也没有使用期限等限制,但在捕捉到的图像或视频上会额外显示“演示版”字样。

13. Flash Cam 1.79 汉化版

相信 Flash Cam 是很多人所期待的 FLASH 影像捕捉工具,是一个非常好的用来做演示的软件。它能把屏幕的 *** 作行动录为 flash 文件。而且你还可以编辑或删除录下来的图片。它可以制作出相当棒的 SWF格式的教学影片,可以将捕捉的影像单独帧连贯起来成为一个SWF文件,还可以插入标题文字、录制旁白声音、自订鼠标轨迹、制作出 HTML SWF 文件..,实在是软件教学的最佳选择!此为企业汉化版,解压缩后直接运行安装即可,第一次运行时输入以上注册信息即为企业版本。该汉化版本中集成了官方网站上 Flash Cam 的插件包,其实就是几个子目录中多了许多新的图形文件,相当于素材,非常不错,而且还可增强 Flash Cam 的功能。

14. 超级屏捕 SuperCapture(ACA Capture) 5.10 标准版

ACA Capture 超级屏捕是一款非常强大的专业图像捕捉软件。它是中国首届共享软件大赛优秀软件。超级屏捕 4.11 可轻松捕捉全屏、窗口、控件、区域、固定区域、不规则区域。轻松抓取特殊菜单、鼠标、超长屏幕、网页、网页图像(可将网页内图片一次全部抓取);支持定时捕捉、自定义热键;支持BMP/JPEG/TIF/PNG/GIF等17种图形格式的浏览与转换;可将捕捉后图像发送到 Office文档(如Excel,word,PowerPoint)。

15. 屏幕截图能手 1.8

屏幕截图能手可方便地帮助您将计算机屏幕显示内容用文件的形式保存下来。支持单张截图和连续截图,整个 *** 作过程只需要按一两下热键即可。1)支持整屏截图和个别窗口截图。2)支持标准的Windows图像格式(bmp格式)和压缩格式(jpg)3)热键 *** 作,可随意定义。 4)可方便地浏览截图和进行 *** 作。

16. #1 Screen Capture 3.2 汉化版

#1 Screen Capture 是一个用来通过多种方法来捕获计算机屏幕的实用工具程序,它包括:捕获最新的全屏幕,捕获最新的动态窗口;捕获按钮,窗口;控制面板;捕获任何指定区域!支持DirectX和DOS窗口模式的截图功能,截取的图片可以保存为bmp,png,pcx,tif,gif,jpg等格式!

17. 抓图魔法师 2.1

绿色软件,无需安装,解压后直接可用。只要您能看到图片/图标都能抓取,包括用Windows媒体播放器播放的avi,gif动态图象。图片/图标可以进行jpg、bmp、ico、emf、wmf格式互换。附带魔法关机功能,再也不怕恶意程序驻留人而无法关机!

18. 中华神捕 1.62

超级屏幕抓图工具、超级作图工具、超级图片浏览工具、超强Office插件1、可以轻松抓取整个桌面、选定对象、菜单、选定矩形区域、选定多边形区域、选定圆形区域、选定椭圆区域。2、支持任意视图自动滚屏。3、支持BMP/JPG/GIF等各种格式图像文件的读写。4、提供多种图像处理方案,如改变亮度、对比度、黑白处理、旋转、镜相。5、支持多种作图方式,可自定义任意渐变图形作图方案、50余种图案填充作图方案、任意改变线型、线宽。6、超级Office插件功能。7、超级图片浏览功能。

19. HyperCam 2.13.00 汉化版

HyperCam 是一套专门用来捕捉您的 *** 作画面的程序,包括鼠标的移动轨迹与音效,然后将它保存为标准的 AVI 视频文件让您播放。很适合用来制作教学课程或演示,您可以轻易地依照平常的 *** 作方式,将步骤一步一步地捕捉下来,只需将此 AVI 文件播放,即可观看。『汉化说明』----------------------------------------------------- 安装文件到任一目录运行即可! 本程序尚未破解,请不要询问有关破解事项。如果您找到破解补丁,替换主程序即可,不影响汉化,因为汉化的是另一个资源文件。

20. !Quick Screenshot Maker 2.10

是一个屏幕拷贝工具,按Print Screen键后,它可以让您将图片保存、修改、发送email、复制到剪贴板、打印或者显示等。

21. Flash Saver 5.7

Flash Saver 可以让 Flash 动画的储存更为方便,您只要输入一个网址,它就可以自动侦测出 SWF 档、影片档;还可以透过快速键「F7」及浏览器工具列按钮来 *** 作下载动作。

22. 超级屏捕 SuperCapture(ACA Capture) 5.10 专业版

超级屏捕是一款非常强大的专业图像捕捉软件。它是中国首届共享软件大赛优秀软件。超级屏捕可轻松捕捉全屏、窗口、控件、区域、固定区域、不规则区域。轻松抓取特殊菜单、鼠标、超长屏幕、网页、网页图像(可将网页内图片一次全部抓取);支持定时捕捉、自定义热键;支持BMP/JPEG/TIF/PNG/GIF等17种图形格式的浏览与转换;可将捕捉后图像发送到 Office文档(如Excel,word,PowerPoint)。专业版 4.11 包含了标准版的所有功能,同时它还有很多专业的功能:例如DirectX、Direct3D游戏屏幕及视频播放屏幕抓取、从网页捕捉所有 Flash;播放Flash;将桌面活动图像捕捉为AVI视频文件(提供多种压缩方式);轻松地从您的电脑上捕捉您想要的任何图标Icon,例如从一个文件中,或者一个文件夹中,甚至是您机器的整个硬盘……它适用于任何需要对屏幕图像处理的用户。使用超级屏捕能极大节省您处理屏幕图像的时间,提高工作效率。

23. GetFlash 2.52 简体中文版

网页中有很多你非常喜欢的Flash动画,如何把它们方便地保存到你自己硬盘上?此工具可快速抓取并保存网页中所有 Flash 动画,并内置观看Flash的功能。软件 *** 作简单,功能实用!

24. Virtual Camera 0.8.3 Build 0424

Virtual Camera 虽然是一个假的"照相机",但它可是一个十分出色的截图工具,不但是图片文字,甚至是视频和Flash也能吃定,当然如果你有真的摄像头,那么Virtual Camera照样可以配合它进行拍照和摄像,不错吧?那赶快试试看!

25. 超级捕快 白金版 V7.6 Build 560

《超级捕快》是梦幻科技继《数码大师》、《彩影》和《超级转换秀》软件后的再一优秀力作,超级捕快这次也带来了革命性的功能,其是国内首个拥有捕捉家庭摄像机DV、数码相机DC、摄像头、TV电视卡和电脑屏幕画面并保存为AVI或WMV视频文件的优秀共享软件。此软在捕捉功能细节上表现出色,比如允许在捕捉视频上输出文字、捕捉的各种喜好设置、兼容一个系统的多种捕捉装置、定时捕捉、屏幕捕捉功能上允许局部捕捉等,同时支持非压缩AVI、压缩AVI(包括DivX)或WMV视频文件的保存。令人激动的是,其更内置广播功能,可以将您的动态捕捉到的视频广播到网络,朋友通过浏览器即可共享收看,当然您也可以利用这个功能进行远程监控,这个设计堪称前卫。《超级捕快》拥有超强的硬件兼容能力,加上一流的解压技术,此软再次成为了您捕捉视频和广播视频工具的首选。

26. Flash 32 3.13

这个软件不单可捕捉任何形状的画面,更可将捕捉后得图片储存成 105 种不同格式,甚至将一组连续画面制作成动画,还提供多种 filter 方便制作特别效果。

27. Flash2X Flash Hunter 2.0.3

想把在网上看到Flash动画抓下来,保存到硬盘上欣赏吗?这个工具就可以轻松方便地帮你完成这个工作。它还可以扫描你浏览过的Flash动画,保证不会有遗留。它还能聪明地自动识别你的代理服务器设置。这是一个非常简单易用的好工具。最重要的是,它是完全免费的,而且不会过期!

28. 搜易轻松抓屏[EasySnap] 2.7

一款国产简体中文版专业级电脑屏幕抓图工具,全面支持可视化截屏和热健 *** 作。功能特色如下:可视化鼠标点击方式抓图,支持桌面、区域、对象、窗口等多种方式抓屏;抓屏后图片可以保存为JPG/BMP等多种格式;可对图片进行定制比例放大、缩小处理;支持任意大小图片剪切处理;可随意设置抓取图像为16/24/32/256等系统色调或真彩色;抓屏图像可通过各种打印机打印输出;用户可自由调节抓屏延时时间;最小化时程序图标隐藏于系统托盘,可轻松调用热健抓屏。

29. 屏幕录象机 2.6

屏幕录象机它可以记录你的屏幕上的任何动作及鼠标的移动过程,同时使用了较高的压缩率。当然压缩率可以选择,在正常的 *** 作情况下,每分钟的生成的文件大小在200K左右(800x600x32bits)。屏幕录象机生成的文件可用软件附带的S-Player播放,也可生成可执行文件,在MS-Windows 9X,NT

1.在框架窗口中如何获得,视图类的指针

CMDIFrameWnd *pFrame =

(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd

// Get the active MDI child window.

CMDIChildWnd *pChild =

(CMDIChildWnd *) pFrame->GetActiveFrame()

// or CMDIChildWnd *pChild = pFrame->MDIGetActive()

// Get the active view attached to the active MDI child

// window.

CMyView *pView = (CMyView *) pChild->GetActiveView()

2文档,视图,框架窗口指针的获取与应用

1) 在View中获得Doc指针

2) 在App中获得MainFrame指针

3) 在View中获得MainFrame指针

4) 获得View(已建立)指针

5) 获得当前文档指针

6) 获得状态栏与工具栏指针

7) 获得状态栏与工具栏变量

8) 在Mainframe获得菜单指针

9) 在任何类中获得应用程序类

10) 从文档类取得视图类的指针(1)

11) 在App中获得文档模板指针

12) 从文档模板获得文档类指针

13) 在文档类中获得文档模板指针

14) 从文档类取得视图类的指针(2)

15) 从一个视图类取得另一视图类的指针

VC中编程对于刚刚开始学习的同学,最大的障碍和问题就是消息机制和指针获取与

*** 作。其实这些内容基本上是每本VC学习工具书上必讲的内容,而且通过MSDN很多

问题都能解决。下面文字主要是个人在编程中指针使用的一些体会,说的不当的地

方请指正。一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,

无论是多文档还是单文档,都存在指针获取和 *** 作问题。下面这节内容主要是一般

的框架,然后再讲多线程中的指针使用。使用到的类需要包含响应的头文件。首先

一般获得本类(视,文档,对话框都支持)实例指针this,用this的目的,主要可以通

过类中的函数向其他类或者函数中发指针,以便于在非本类中 *** 作和使用本类中的

功能。

1) 在View中获得Doc指针 CYouSDIDoc *pDoc=GetDocument()一个视只能有一个文

档。

2) 在App中获得MainFrame指针

CWinApp 中的 m_pMainWnd变量就是MainFrame的指针

也可以: CMainFrame *pMain =(CMainFrame *)AfxGetMainWnd()

3) 在View中获得MainFrame指针 CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd

4) 获得View(已建立)指针 CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd

CyouView *pView=(CyouView *)pMain->GetActiveView()

5) 获得当前文档指针 CDocument * pCurrentDoc =(CFrameWnd *)m_pMainWnd->GetActiveDocument()

6) 获得状态栏与工具栏指针 CStatusBar * pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR)

CToolBar * pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR)

7) 如果框架中加入工具栏和状态栏变量还可以这样

(CMainFrame *)GetParent()->m_wndToolBar

(CMainFrame *)GetParent()->m_wndStatusBar

8) 在Mainframe获得菜单指针 CMenu *pMenu=m_pMainWnd->GetMenu()

9) 在任何类中获得应用程序类

用MFC全局函数AfxGetApp()获得。

10) 从文档类取得视图类的指针

从文档获得视图类指针目的一般为了控制同一文档的多个视图的定位问题,我的体会

特别是文字处理CEditView当产生多个视图类时,这个功能是非常需要的。

CDocument类提供了两个函数用于视图类的定位:

GetFirstViewPosition()和GetNextView()

virtual POSITION GetFirstViewPosition() const

virtual CView* GetNextView(POSITION&rPosition) const

注意:GetNextView()括号中的参数用的是引用方式,因此执行后值可能改变。

GetFirstViewPosition()用于返回第一个视图位置(返回的并非视图类指针,而是一

个POSITION类型值),GetNextView()有两个功能:返回下一个视图类的指针以及用

引用调用的方式来改变传入的POSITION类型参数的值。很明显,在Test程序中,只有

一个视图类,因此只需将这两个函数调用一次即可得到CTestView的指针如下(需定

义一个POSITION结构变量来辅助 *** 作):

CTestView* pTestView

POSITION pos=GetFirstViewPosition()

pTestView=GetNextView(pos)

这样,便可到了CTestView类的指针pTestView.执行完几句后,变量pos=NULL,因为没

有下一个视图类,自然也没有下一个视图类的POSITION.但是这几条语句太简单,不

具有太强的通用性和安全特征;当象前面说的那样,当要在多个视图为中返回某个指

定类的指针时,我们需要遍历所有视图类,直到找到指定类为止。判断一个类指针指

向的是否某个类的实例时,可用IsKindOf()成员函数时行检查,如:

pView->IsKindOf(RUNTIME_CLASS(CTestView))

即可检查pView所指是否是CTestView类。

有了以上基础,我们已经可以从文档类取得任何类的指针。为了方便,我们将其作

为一个文档类的成员函数,它有一个参数,表示要获得哪个类的指针。实现如下:

CView* CTestDoc::GetView(CRuntimeClass* pClass)

{

CView* pView

POSITION pos=GetFirstViewPosition()

while(pos!=NULL){

pView=GetNextView(pos)

if(!pView->IsKindOf(pClass))

break

}

if(!pView->IsKindOf(pClass)){

AfxMessageBox("Connt Locate the View.\r\n ")

return NULL

}

return pView

}

其中用了两次视图类的成员函数IsKindOf()来判断,是因为退出while循环有三种

可能:

1.pos为NULL,即已经不存在下一个视图类供 *** 作;

2.pView已符合要求。

1和2同是满足。这是因为GetNextView()的功能是将当前视图指针改变成一个视图

的位置同时返回当前视图指针,因此pos是pView的下一个视图类的POSITION,完全

有可能既是pos==NULL又是pView符合需要。当所需的视图是最后一个视图是最后一

个视图类时就如引。因此需采用两次判断。

使用该函数应遵循如下格式(以取得CTestView指针为例):

CTestView* pTestView=(CTestView*)GetView(RUNTIME_CLASS(CTestView))

RUNTIME_CLASS是一个宏,可以简单地理解它的作用:将类的名字转化为

CRuntimeClass为指针。至于强制类型转换也是为了安全特性考虑的,因为从同一个

基类之间的指针类型是互相兼容的。这种强制类型转换也许并不必要,但能避免一

些可能出现的麻烦。

3.从一个视图类取得另一视图类的指针 综合1和2,很容易得出视图类之间互相获得

指针的方法:就是用文档类作中转,先用1的方法得到文档类的指针,再用2的方法,

以文档类的视图定位函数取得另一个视图类。同样,可以实现成一个函数:

(假设要从CTestAView中取得指向其它视图类的指针)

CView* CTestAView::GetView(CRuntimeClass* pClass)

{

CTestDoc* pDoc=(CTestDoc*)GetDocument()

CView* pView

POSITION pos=pDoc->GetFirstViewPosition()

while(pos!=NULL){

pView=pDoc->GetNextView(pos)

if(!pView->IsKindOf(pClass))

break

}

if(!pView->IsKindOf(pClass)){

AfxMessageBox("Connt Locate the View.")

return NULL

}

return pView

}

这个函数和2中的GetView()相比,一是多了第一句以取得文档类指针,二是在

GetFirstViewPosition()和GetNextView()前加上了文档类指针,以表示它们是文档

类成员函数。有了此函数;当要从CTestAView中取得CTestBView的指针时,只需如

下:CTestBView* pTestbView=(CTestView*)GetView(RUNTIME_CLASS(CTestBView))

11)对于单文档中也可以加入多个文档模板,但是一般的开发就使用MDI方式开发

多文档模板,其方法与上述视图的获取方法很接近,

可以用CWinApp::GetFirstDocTemplatePostion获得应用程序注册的第一个文档模板

的位置;利用该值来调用CWinApp::GetNextDocTemplate函数,获得第一个

CDocTemplate对象指针。 POSITION GetFirstDocTemplate( ) const

CDocTemplate *GetNextDocTemplate( POSITION &pos ) const

第二个函数返回由pos 标识的文档模板。POSITION是MFC定义的一个用于迭代或对象

指针检索的值。通过这两个函数,应用程序可以遍历整个文档模板列表。如果被检索

的文档模板是模板列表中的最后一个,则pos参数被置为NULL。

12)一个文档模板可以有多个文档,每个文档模板都保留并维护了一个所有对应文

档的指针列表。

用CDocTemplate::GetFirstDocPosition函数获得与文档模板相关的文档集合中第一

个文档的位置,并用POSITION值作为CDocTemplate::GetNextDoc的参数来重复遍历与

模板相关的文档列表。函数原形为:

viaual POSITION GetFirstDocPosition( ) const = 0

visual CDocument *GetNextDoc(POSITION &rPos) const = 0

如果列表为空,则rPos被置为NULL.

13)在文档中可以调用CDocument::GetDocTemplate获得指向该文档模板的指针。

函数原形如下: CDocTemplate * GetDocTemplate ( ) const

如果该文档不属于文档模板管理,则返回值为NULL。

14)一个文档可以有多个视。每一个文档都保留并维护一个所有相关视的列表。

CDocument::AddView将一个视连接到文档上,将该视加入到文档相联系的视的列表

中,并将视的文档指针指向该文档。当有File/New、File/Open、Windows/New或

Window/Split的命令而将一个新创建的视的对象连接到文档上时, MFC会自动调用

该函数,框架通过文档/视的结构将文档和视联系起来。当然,程序员也可以根据自

己的需要调用该函数。

Virtual POSITION GetFirstViewPosition( ) const

Virtual CView * GetNextView( POSITION &rPosition) cosnt

应用程序可以调用CDocument::GetFirstViewPosition返回与调用文档相联系的视的

列表中的第一个视的位置,并调用CDocument::GetNextView返回指定位置的视,并将

rPositon的值置为列表中下一个视的POSITION值。如果找到的视为列表中的最后一个

视,则将rPosition置为NULL.

15)从一个视图类取得另一视图类的指针

这个应用在多视的应用程序中很多见,一般如果自己在主程序或者主框架中做好变

量记号,也可以获得,还有比较通用的就是用文档类作中转,以文档类的视图遍历

定位,取得另一个视图类。这个功能从本文第10项中可以得到。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11192038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存