精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..技术文章连载..〓〓>>VB邮件>>VB邮件(5.29)

主题:VB邮件(5.29)
发信人: msnet()
整理人: cobe(1999-12-23 14:06:37), 站内信件
                      编者的话
====================================================================
大家好!
    这是关于VB和ASP的免费邮件列表。
    如果您有问题或想回答别人的问题,请给我写信。
    如果您有好的作品或您发现了好的作品,不要忘
了让大家共享。
    热情欢迎您的参与!!!
                                版主   冯德平
                                [email protected]
=============================================
            VB邮件(5.29)
a VB编程技巧几例


1 文本框内容的自动选择。

    在软件安装等一些场合需要将文本框中的内容自动选择,比如选择确省安装
路径,在VB中可用如下的事件驱动代码:

 

sub text1_getfocus()

text1.selstart=0 ’选择起始位置

text1.sellength=65000 ’选择长度

end sub

sellength接近文本框允许的最大长度(65535),这样做是为了

强迫VB使用文本的实际长度。

 

2 防止自身多次运行。

    由于WINDOWS的多任务处理功能, 有些程序可能打开后忘记了,下次用时还
可能再打开,这样做会占用系统资源降低系统效率。为了防止自身被多次运行,
可利用VB应用对象提供的PrevInstance属性来检测内存中是否已有一个自身的副
本,若有则给出提示后结束。一般将检测代码放在FORM_LOAD()中,因为程序
一运行就要检测。

代码如下:

sub form_load() 

if App.PrevInstance then 

msg$=App.exename & ”has already run” 

msgbox msg$,48 ’给出程序已运行的提示和一惊叹号以示警告

! 

end 

endif

end sub

 

3 格式化输入。

    在数据输入过程中,有些数据要求一定的格式,比如限制输入的只能为数字
或英文字符,这可用VB的格式输入文本框来实现。它与文本框(TEXT BOX)功能
基本相似,但多了一个MASK属性,MASK属性常用的设定如下: 

       #—限定仅能输入数字0~9;
       A— 限定输入为英文字符及数字; 
       ?—限定仅能输入英文字符;
       .—限定小数点位置;
       :—限定时间分隔号;        
       /—限定日期分隔号 

    不需编写代码,只要在设计时将格式化文本框对象(MASKED EDIT)的MASK属
性设计好所需格式即可。比如 ## - ## - ## 可输入12-11-96。

 

4 用MSGBOX函数设计版权信息。

    MsgBox函数可用来设计简易的版权信息,它只能显示文本,如果要求不高的
话可采用它,优点是非常方便,比如在菜单ABOUT项中显示版权信息。

    MsgBox函数的用法如下:MsgBox msg [, [type][, title] ]

       msg —需要显示的文字信息,如版权信息。
       type—按钮显示选择项。
       如 0 只显示 OK按钮(确省选择),4 显示 Yes 和 No 按钮
       title—标题文字信息。


    MSGBOX最多能显示1024个字符, 超出的将被截去;它可自动换行,如果你想
强制换行的话需要在换行处加入换行符CHR(10)。 

例子: 

Sub Form_Click ()

Msg1 = ” Copyright (c) 1996” & Chr(10) & ”Ver 

1.0 ” ’分两行显示

MsgBox Msg1, 0, ”Copyright demo” ’只显示一个OK按钮

End Sub 

□山东 许振华


b VB编程如何控制I/O口

    VB没有提供直接读写I/O口的方法。所以只能借助其他语言来编写DLL,然后
在VB中调用。如果要在Windows 3.X下读写端口,也可以下载ftp://ftp.winsite
.com/pub/pc/win31/programr/vbasic/portz10.zip,它是一个免费的VBX,可以
通过读写VBX的属性来实现读写端口的操作,十分方便。

    如果你在Windows下使用过C/C++,那么编写这样的DLL可能没有什么困难。在
C语言里都包括inp和outp函数。可以把下面这段C语言代码(32位)编译生成DLL
,然后在VB中调用。

 

       #include <conio.h>

       #include <Windows.h>

       /*作用:从指定端口读入一个字节

       参数:portid端口号

       返回值:读入的字节*/

       int _stdcall Inport(short portid)

       {

       return inp(portid);}

       /*作用:向指定端口写入一个字节

       参数:portid端口号*/

       void _stdcall output(short portid,short byte)

       {

         outp(portid,byte);

       }

       /*作用:从指定端口读入一个字节

       参数:portid端口号

       返回值:读入的字节*/

       int _stdcall Inportw(short portid)

       {

              return inpw(portid);}

       /*作用:向指定端口写入一个字节

       参数:portid端口号*/

       void _stdcall Outportw(short portid,short word)

       {

              outpw(portid,(unsigned short) word);

       }

    注意:这种方法只能用于Windows 95,不能用于Windows NT。
                                                tuis 推荐

c VB调用API技巧--拖动无系统标准标题栏的窗口
                           

  大家知道,在VB中可以通过设置Form的属性,制作无系统标题栏的窗口。可
是,由于失去了系统标题栏,如何使用鼠标拖动窗口便成了一个棘手的问题。其
实,借助API函数ReleaseCapture和SendMessage,这个问题便可迎刃而解了。

 

  首先,在module文件中加入下列声明语句:

 

  Declare Sub ReleaseCapture Lib"User"()

 

  Declare Function SendMessage Lib"User"(ByVal hWnd _

As Integer,ByVal wMsg As Integer,ByVal wParam As Integer,_lParam As
 Any)As Long

 

  Public Const WM_SYSCOMMAND=&H112

 

  Public Const SC_MOVE=&HF010

  Public Const HTCAPTION=2

 

  然后,在Form的MouseDown事件中加入下列代码:

 

  ReleaseCapture

 

  Ret&=SendMessage(Me.hWnd,WM_SYSCOMMAND,_SC_MOVE+HTCAPTION,0)

 

  ……

 

  程序运行后,只要当光标落在Form区域时按住鼠标左键,便可以拖动窗口了
。在一些要求生动活泼的界面的程序设计中,开发者常常希望自制风格独特的标
题栏,以满足整个界面的要求。通过这个方法,就可以使自制的标题栏达到乱真
的地步。不过,用作自制标题栏的控件,必须具有MouseDown事件以摆放上述代码

                          吴斌
=============================================
              问题征答()
=============================================
                其它
====================================================================
欢迎订阅VB免费邮件  
====================================================================  

订阅地址  http://server.com/WebApps/mail-list-subscribe.cgi?id=16852  

====================================================================  

如果您觉得这个邮件列表好的话,请告诉您的朋友。  
====================================================================
欢迎投稿  [email protected]  
====================================================================  

网易上的主页地址:http://www4.netease.com/~aaaaaaaaa 
本网站主页镜像地址:goodvbhome.yeah.net 
====================================================================

--
网易上的主页地址:http://www4.netease.com/~aaaaaaaaa
本网站主页镜像地址:http://goodvbhome.yeah.net

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.45.199]

[关闭][返回]