专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » vb通用对话框:VB与MS-Draw设计通用作图软件 »正文

vb通用对话框:VB与MS-Draw设计通用作图软件

来源: 发布时间:星期四, 2008年9月25日 浏览:51次 评论:0
一、OLE技术介绍

OLE和DDE,是支持Windows应用之间相互通讯的一种机制。OLE技术通过\"对象\"集成win dows应用程序,它采用图象、图表、数据库、声音、文本等构成复合对象(也称复合文档)。 OLE技术是在复合文档中实现链接对象或嵌入对象的一组协议,该技术首先由Aldus公司在1 988年提出,后被Microsoft公司引进到Windows中。使用OLE,一个应用程序可以和其他应用程序合作,以产生包含有不同种类对象的复合文档,并且文档中所包含的对象易于被用户操作。

支持OLE调用的Windows软件,在Windows中会有注册登记信息,查看WIN.INI中[embeddi ng]节的内容,可知道Windows中包含哪些可以调用的OLE对象。画笔(PBRUSH.EXE)、统计图 (Microsoft Graph)、对象包装程序(PACKGER.EXE)和录音机(SOUNDREC.EXE)是Windows环境下常用的OLE嵌
入对象。

Windows环境下的大部分开发工具(如C、C++、PASCAL、Visual Basic 3.0、CA-Reali zer、FoxPro for Windows、Visual FoxPro for Windows等)大都支持开发具有调用OLE对象能力的应用程序,相比之下,Visual Basic 3.0开发OLE调用程序更容易。

Windows环境下采用OLE技术开发应用程序有许多优点:

(1)、提高软件开发效率:通过OLE的嵌入其它WINDOWS应用程序,应用程序员所进行的软件开发工作实际上变成了软件集成(或称\"软件组合\"),这样就比逐个开发软件功能模块要快得多,应用软件的开发周期大大缩短;

(2)、性能稳定、可靠:由于OLE嵌入对象程序都是经过严格测试过的商品软件,因此,经过\"组合\"的软件,只要经过对\"组合过程\"部分进行严格测试(测试的工作量相对来说较小), 就能成为性能稳定可靠的高质量软件;

(3)、功能完善:OLE嵌入其它WINDOWS应用程序,不仅\"嵌入\"了其它应用程序的数据,同时也\"嵌入\"了其它应用程序的功能。应用软件中能够\"嵌入\"所有的WINDOWS OLE嵌入对象, 例如,你通过Word,Excel,Mail,Microsoft Graph等建立起一个包含文字处理、电子报表、电子邮件和统计图形的综合性办公自动化系统软件;

(4)、开发人员不再需要是编程专家:Visual Basic 3.0中提供了OLE 2.0 调用功能,大大降低了OLE调用的难度,一般的软件开发人员即可开发出调用Windows OLE对象的应用程序。

Visual Basic for Windows 3.0(以下简称VB)是一个面向Windows的高级开发系统,它采用事件驱动机制、可视化界面设计及集成化的开发、调试、编译环境,VB同时还提供DDE 、OLE程序开发功能。VB既适合于初级程序员,又适合于高级程序员编写功能强大的应用软件。

二、通用作图系统的设计

1、在Windows中添加Microsoft Draw OLE工具:

(1)修改win.ini:
[embedding]
MSDraw=MicrosoftDrawing,MicrosoftDrawing,c:\\yzgraph\\msdraw.exe,picture

(2)创建MSDRAW.REG:

REGED99v
HEKY_CLASSES_ROOT\\MSDraw=Microsoft Drawing
HKEY_CLASSES_ROOT\\MSDraw\\protocol\\StdFileEditing\\server=c:\\yzgraph\\msdraw. exe

(3)运行REGED99v.EXE MSDRAW.REG,屏幕上会出现\"c:\\yzgraph\\msdraw.exe
中的信息已成功地登录在登录数据库中\"。

(4)从Microsoft Word 5.0中文版中\\windows\\msapps\\msdraw子目录中拷贝 MSDRAW.EXE、MS-DRAW.HLP至c:\\yzgraph子目录下。

2、在VB中创建一个FORM1:启动Visual BASIC 3.0,选File-NEW Project菜单;

3、在FORM1上创建\"存盘\"\"打印\"\"退出\"三个按钮对象;

4、在FORM1上创建一个OLE2对象:在Toolbox窗口选OLE2.0控件,移动鼠标至Forml窗口上,按下左鼠标同时移动鼠标光标拖出一个小小的矩形。松开左鼠标,这时,屏幕上会出现\" insert object\"对话窗口,选择Create New-MicrosoftDrawing-ok,这时Microsoft Drawi ng就会启动,退出Microsoft Drawing;

5、在Visual Basic 3.0中增加一个图形存盘及打印控件(mhoutbx.vbx):

mhoutbx.vbx是MicroHelp公司提供的具有图形显示打印功能的通用VBX控件。
在Visua l Basic 3.0中选File-Add File菜单,选中mhoutbx.bx;

AutoSize =-1 \'True

EraseForRead = -1\'True

6、在FORM1上创建一个图形存盘及打印的mhoutbx对象(用于Microsoft Draw的结果存盘、打印输出);

7、使FORM1始终处于\"最上层\"(即不被其它窗口覆盖):

Global.bas:

Global Const SWP_MOVE=2
Global Const SWP_NOSIZE=1
Global Const FLAGS=SWP_MOVE Or SWP_NOSIZE
Global Const HWND_TOPMOST=-1
Global Const HWND_NOTOPMOST=-2
Declare Function SetWindowsPos Lib\"user\"(ByVal h%,ByVal hb%,ByVal X%, ByVal y%,ByVal cx%,ByVal cy%,By-Val f%)As Integer
Declare Function GetSystemMetrics% Lib\"user\"(ByVal nIn-dex%)
Global Const
NILL=0&
Global Const WM_SYSCOMMAND=&H112
Global Const WM_LBUTTONDBLCLK=&H203
Global Const SC_CLOSE=&HF06O
Global Const WM-CLOSE=&H10
Global Const WM_GETMINMAXINFO=&H24
Declare Function FindWindows Lib \"User\"(ByVal lpClassName As Any,ByVal lpW indowsName As Any) As Integer

Declare Function sendmessage& Lib \"user\"(ByVal hWnd%,ByVal wmsg%, ByVal wpa ram%,ByVal Iparam As Long) As Long

Global Const SW_SHOWMAXIMIZED=3

Declare Function ShowWindows Lib \"User\"(ByVal hWnd As Integer, ByVal nCmd S how As Integer)As Integer

8、激活MSDraw,并使其最大化:

Sub Form_Load()
Dim rc%,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\"Microsoft Draw-绘图\"
SendKeys\"%F\",True
SendKeys\"{LEFT}X\",True
form1.Show
End Sub

9、图形存盘:

Sub Panel3D1_Click()
a$=\"c:\\test.wmf\"
AppActivate\"Microsoft Draw-绘图\"
SendKeys \"%FU\",True
FORM1.MhOutbox1.MetaFileName=a$
FORM1.MhOutbox1.SaveMetaFile=True

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: