用VisualBasic与MS-Draw开发通用作图软件

2016-02-19 19:23 39 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享用VisualBasic与MS-Draw开发通用作图软件,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - 编程语言 】

一、OLE技术介绍
  
  OLE和DDE,是支持Windows应用之间相互通讯的一种机制。OLE技术通过"对象"集成windows应用程序,它采用图象、图表、数据库、声音、文本等构成复合对象(也称复合文档)。OLE技术是在复合文档中实现链接对象或嵌入对象的一组协议,该技术首先由Aldus公司在1988年提出,后被Microsoft公司引进到Windows中。使用OLE,一个应用程序可以和其他应用程序合作,以产生包含有不同种类对象的复合文档,并且文档中所包含的对象易于被用户操作。
  
  支持OLE调用的Windows软件,在Windows中会有注册登记信息,查看WIN.INI中[embedding]节的内容,可知道Windows中包含哪些可以调用的OLE对象。画笔(PBRUSH.EXE)、统计图(MicrosoftGraph)、对象包装程序(PACKGER.EXE)和录音机(SOUNDREC.EXE)是Windows环境下常用的OLE嵌
  入对象。
  
  Windows环境下的大部分开发工具(如C、C 、PASCAL、VisualBasic3.0、CA-Realizer、FoxProforWindows、VisualFoxProforWindows等)大都支持开发具有调用OLE对象能力的应用程序,相比之下,VisualBasic3.0开发OLE调用程序更容易。
  
  Windows环境下采用OLE技术开发应用程序有许多优点:
  
  (1)、提高软件开发效率:通过OLE的嵌入其它WINDOWS应用程序,应用程序员所进行的软件开发工作实际上变成了软件集成(或称"软件组合"),这样就比逐个开发软件功能模块要快得多,应用软件的开发周期大大缩短;
  
  (2)、性能稳定、可靠:由于OLE嵌入对象程序都是经过严格测试过的商品软件,因此,经过"组合"的软件,只要经过对"组合过程"部分进行严格测试(测试的工作量相对来说较小),就能成为性能稳定可靠的高质量软件;
  
  (3)、功能完善:OLE嵌入其它WINDOWS应用程序,不仅"嵌入"了其它应用程序的数据,同时也"嵌入"了其它应用程序的功能。应用软件中能够"嵌入"所有的WINDOWSOLE嵌入对象,例如,你通过Word,Excel,Mail,MicrosoftGraph等建立起一个包含文字处理、电子报表、电子邮件和统计图形的综合性办公自动化系统软件;
  
  (4)、开发人员不再需要是编程专家:VisualBasic3.0中提供了OLE2.0调用功能,大大降低了OLE调用的难度,一般的软件开发人员即可开发出调用WindowsOLE对象的应用程序。
  
  VisualBasicforWindows3.0(以下简称VB)是一个面向Windows的高级开发系统,它采用事件驱动机制、可视化界面设计及集成化的开发、调试、编译环境,VB同时还提供DDE、OLE程序开发功能。VB既适合于初级程序员,又适合于高级程序员编写功能强大的应用软件。
  
  二、通用作图系统的设计
  
  1、在Windows中添加MicrosoftDrawOLE工具:
  
  (1)修改win.ini:
  [embedding]
  MSDraw=MicrosoftDrawing,MicrosoftDrawing,c:yzgraphmsdraw.exe,picture
  
  (2)创建MSDRAW.REG:
  
  REGEDIT
  HEKY_CLASSES_ROOTMSDraw=MicrosoftDrawing
  HKEY_CLASSES_ROOTMSDrawprotocolStdFileEditingserver=c:yzgraphmsdraw.Exe
  
  (3)运行REGEDIT.EXEMSDRAW.REG,屏幕上会出现"c:yzgraphmsdraw.exe"中的信息已成功地登录在登录数据库中"。
  
  (4)从MicrosoftWord5.0中文版中windowsmsappsmsdraw子目录中拷贝MSDRAW.EXE、MS-DRAW.HLP至c:yzgraph子目录下。
  
  2、在VB中创建一个FORM1:启动VisualBASIC3.0,选File-NEWProject菜单;
  
  3、在FORM1上创建"存盘""打印""退出"三个按钮对象;
  
  4、在FORM1上创建一个OLE2对象:在Toolbox窗口选OLE2.0控件,移动鼠标至Forml窗口上,按下左鼠标同时移动鼠标光标拖出一个小小的矩形。松开左鼠标,这时,屏幕上会出现"insertobject"对话窗口,选择CreateNew-MicrosoftDrawing-ok,这时MicrosoftDrawing就会启动,退出MicrosoftDrawing;
  
  5、在VisualBasic3.0中增加一个图形存盘及打印控件(mhoutbx.vbx):
  
  mhoutbx.vbx是MicroHelp公司提供的具有图形显示打印功能的通用VBX控件。在VisualBasic3.0中选File-AddFile菜单,选中mhoutbx.bx;
  
  AutoSize=-1'True
  
  EraseForRead=-1'True
  
  6、在FORM1上创建一个图形存盘及打印的mhoutbx对象(用于MicrosoftDraw的
  结果存盘、打印输出);
  
  7、使FORM1始终处于"最上层"(即不被其它窗口覆盖):
  
  Global.bas:
  
  GlobalConstSWP_MOVE=2
  GlobalConstSWP_NOSIZE=1
  GlobalConstFLAGS=SWP_MOVEOrSWP_NOSIZE
  GlobalConstHWND_TOPMOST=-1
  GlobalConstHWND_NOTOPMOST=-2
  DeclareFunctionSetWindowsPosLib"user"(ByValh,ByValhb,ByValX,
  ByValy,ByValcx,ByValcy,By-Valf)AsInteger
  DeclareFunctionGetSystemMetricsLib"user"(ByValnIn-dex)
  GlobalConst
  NILL=0&
  GlobalConstWM_SYSCOMMAND=&H112
  GlobalConstWM_LBUTTONDBLCLK=&H203
  GlobalConstSC_CLOSE=&HF06O
  GlobalConstWM-CLOSE=&H10
  GlobalConstWM_GETMINMAXINFO=&H24
  DeclareFunctionFindWindowsLib"User"(ByVallpClassNameAsAny,
  ByVallpWindowsNameAsAny)
  AsInteger
  
  DeclareFunctionsendmessage&Lib"user"(ByValhWnd,ByValwmsg,
  ByValwparam,ByValIparamAsLong)
  
  GlobalConstSW_SHOWMAXIMIZED=3
  
  DeclareFunctionShowWindowsLib"User"(ByValhWndAsInteger,
  ByValnCmdShowAsInteger)AsInteger
  
  8、激活MSDraw,并使其最大化:
  
  SubForm_Load()
  Dimrc,msdraw_h,Ipclass$,lpcaption$
  form1,Width=Pane13D1.Width
  rc=SetWindowPos(form1.hWnd,HWND
  _TOPMOST,0,0,0,0,Flags)
  rc=sendmessage(form1,OLE1.hWnd,WM
  _LBUTTONDBLCLK,0,NILL)
  AppActivate"MicrosoftDraw-绘图"
  SendKeys"F",True
  SendKeys"{LEFT}X",True
  form1.Show
  EndSub
  
  9、图形存盘:
  
  SubPanel3D1_Click()
  a$="c:est.wmf"
  AppActivate"MicrosoftDraw-绘图"
  SendKeys"FU",True
  FORM1.MhOutbox1.MetaFileName=a$
  FORM1.MhOutbox1.SaveMetaFile=True
  EndSub
  
  10、图形打印:
  
  SubPanel3D2_Click()
  AppActivate"MicrosoftDraw-绘图"
  SendKeys"FU",True
  MhOutboxl.OutContext=1
  MhOutbox.EndPage=True
  EndSub
  11、退出:
  SubPanel3D3_Click()
  Unloadform1
  End
  EndSub->

来源:https://www.tulaoshi.com/n/20160219/1620872.html

延伸阅读
标签: PHP
一、小序 HTML简单易学又通用,一般的PHP程序就是嵌入在HTML语言之中实现的。但是随着Web越来越广泛的应用,HTML的弱点也越来越明显了。XML的出现,弥补了这些不足,它提供了一个能够处理互联网上全部数据的通用方法。 二、HTML的局限性分析 1、 HTML的可扩展性差。虽然作为一般的应用,HTML应经够用了,但是在处理数学和化学...
利用VisualBasic开发应用程序时,常常会遇到这样的问题:生成的可执行文件在开发的机器上能够运行,复制到另一台机器上则无法运行,这种现象称之为应用程序与机器环境相关。造成这种现象主要有两个方面的原因:一是程序在运行过程中调用了一些文件,如数据库文件、文本文件和图片文件等,由于路径使用不当而无法定位;二是VisualBasic编译成的.E...
1、开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。 2、开发注重交互的简单应用程序可以使用对话框为基础的窗口,如果文件读写简单这可利用CFile进行。 3、开发注重交互并且文件读写复杂的的简单应用程序可以利用以CFormView为基础视的单文档视结构。 4、利用对话框得到用户输入的数据,在等级提高后可使用就地输...
为了方便用户使用和使系统具有灵活性,大多数Win-dows应用程序将用户所做的选择以及各种变化的系统信息记录在初始化(INI)文件中。因此,当系统的环境发生变化时,可以直接修改INI文件,而无需修改程序。由此可见,INI文件对系统功能是至关重要的。本文将介绍采用VisualBasicforWindows(下称VB)开发Windows应用程序时如何读写INI文件。 ...
在软件开发过程中,有一些看似很简单的问题,却很容易被一般的开发人员所忽略,这些“Bugs”的存在,影响我们软件走向商品化。下面所列出的是笔者在使用VisualBasic开发软件时,碰到了几个这类问题,这里给出其解决方法,供大家探讨交流。 一防止应用程序加载两份 当我们的应用程序在Windows下运行后,在操作过程中,有时会把它...

经验教程

836

收藏

45
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部