⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pr33.htm

📁 VB的一些常见的问题的解决方法
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>VB问题全功略(33)</title>
<style type="text/css">font         { font-size: 9pt; line-height: 13pt }
p            { font-size: 9pt; line-height: 13pt }
td           { font-size: 9pt; line-height: 13pt }
select       { font-family: 宋体; font-size: 9pt }
input        { font-family: 宋体; font-size: 9pt }
textarea     { font-family: 宋体; font-size: 9pt }
a            { color: blue; font-size: 9pt; text-decoration: none }
a:hover      { color: red; text-decoration: underline }
a:active     { color: red; text-decoration: underline }
BODY {	FONT-SIZE: 12px; SCROLLBAR-HIGHLIGHT-COLOR: #99ccff;  SCROLLBAR-SHADOW-COLOR: #99ccff; COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR:  #99ccff; SCROLLBAR-TRACK-COLOR: #ffffff; FONT-FAMILY: "宋体";  SCROLLBAR-DARKSHADOW-COLOR: #99ccff; SCROLLBAR-BASE-COLOR: #99ccff}
</style>
</head>

<body bgcolor="#FFFFFF">

<div align="center">
<center>
<table border="0" width="100%">
<tr>
<td width="100%">
<p align="center"></td>
</tr>
<tr>
<td align="left" bgcolor="#99CCFF" width="924"><font color="#FF0000">VB问题全功略(33)   
</font><font color="#000080">[<font face="宋体">查找本页请按Ctrl+F]</font></font></td>  
</tr>  
<tr>  
<td width="100%" align="center"></td>  
</tr>  
</center>  
<tr>  
<td>  
<p align="right">[<a href="pr32.htm"><u>上一页</u></a>]<font color="#FF0000"><b>(33)</b></font>[<a href="pr34.htm"><u>下一页</u></a>]</td>  
</tr>  
<center>  
<tr>  
<td><a href="#161">161、如何移除 MDIForm 的 Max/Min Button?</a><br>  
<a href="#162">162、如何防止 Form 被移动?</a><br>  
<a href="#163">163、如何设定 ComboBox 之最大长度?</a><br>  
<a href="#164">164、如何撰写没 Form 的程序?</a><br>  
<a href="#165">165、别让 MsgBox 中断了一些 Background 的处理作业</a><br>  
<br>  
<font color="#FF0000">161、如何移除 MDIForm 的 Max/Min Button?</font><a name="161"></a><br>  
<br>  
不像其他的 Form 一样,MDIForm 并没有提供 MaxButton 及 MinButton   
的属性来让我们移除最大化及最小化的按钮,如果您想移除   
MDIForm 的最大化及最小化的按钮,您可以在 MDIForm   
中加入以下的程序,但是如果您只想移除其中的一个,则只要将对应的程序码加上注解符号即可。<br>  
<br>  
'请在 MDIForm 的声明区中加入以下声明<br>  
<br>  
#If Win32 Then<br>  
Private Declare Function SetWindowLong Lib &quot;user32&quot; Alias   
&quot;SetWindowLongA&quot; (ByVal hwnd As Long, ByVal nIndex As Long, ByVal   
dwNewLong As Long) As Long<br>  
Private Declare Function GetWindowLong Lib &quot;user32&quot; Alias   
&quot;GetWindowLongA&quot; (ByVal hwnd As Long, ByVal nIndex As Long) As Long<br>  
#Else<br>  
Private Declare Function SetWindowLong Lib &quot;User&quot; (ByVal hwnd As   
Integer, ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long<br>  
Private Declare Function GetWindowLong Lib &quot;User&quot; (ByVal hwnd As   
Integer, ByVal nIndex As Integer) As Long<br>  
#End If<br>  
<br>  
Const WS_MINIMIZEBOX = &amp;H20000 '最小化<br>  
Const WS_MAXIMIZEBOX = &amp;H10000 '最大化<br>  
Const GWL_STYLE = (-16)<br>  
<br>  
'在 MDIForm 的 MDIForm_Load 事件中加入以下程序码<br>  
<br>  
Sub MDIForm_Load()<br>  
Dim lWnd As Long<br>  
lWnd = GetWindowLong(Me.hwnd, GWL_STYLE)<br>  
lWnd = lWnd And Not (WS_MINIMIZEBOX) '最小化<br>  
lWnd = lWnd And Not (WS_MAXIMIZEBOX) '最大化<br>  
lWnd = SetWindowLong(Me.hwnd, GWL_STYLE, lWnd)<br>  
End Sub<br>  
<br>  
<font color="#FF0000">162、如何防止 Form 被移动?</font><a name="162"></a><br>  
<br>  
有些应用程序,我们希望固定 Form   
的位置,不希望使用者移动它,在 VB5   
以上的版本,我们可以直接在属性表中设定 Form 的 Moveable   
属性为 False 即可。<br>  
<br>  
但是 VB4 以下的版本却没有这个功能,这时就得借助 API   
的功能了!而我们实际要做的,就是移除系统功能表 (   
ControlBox )   
中的【移动】的功能,您可以检查一下您现在使用的浏览器左上方的系统功能表,【移动】的位置是第二个,所以   
Index = 1 ( index 由 0 算起 )。<br>  
<br>  
'请在表单的声明区中加入以下声明<br>  
<br>  
Private Declare Function GetSystemMenu Lib &quot;User&quot; (ByVal hWnd As   
Integer, ByVal bRevert As Integer) As Integer<br>  
Private Declare Function RemoveMenu Lib &quot;User&quot; (ByVal hMenu As   
Integer, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer<br>  
<br>  
Const MF_BYPOSITION = &amp;H400<br>  
<br>  
'在 Form_Load 事件中加入以下程序码<br>  
<br>  
Private Sub Form_Load()<br>  
SystemMenu% = GetSystemMenu(hWnd, 0)<br>  
Res% = RemoveMenu(SystemMenu%, 1, MF_BYPOSITION) &lt;--- 第二个参数是   
Index<br>  
End Sub<br>  
<br>  
<font color="#FF0000">163、如何设定 ComboBox 之最大长度?</font><a name="163"></a><br>  
<br>  
在文字框 (TextBox) 中,我们可以设定 MaxLength   
属性来设定文字框可输入的最大长度,但是同样具有一个文字框的   
ComboBox,却没有提供这样的功能!要做到这个功能,必须自己写程序来判断。<br>  
<br>  
'下面就是一个范例程序:<br>  
'我们在 Key_Press 事件来处理,程序中假设最大长度为 10,并已将倒退键排除在外<br>  
<br>  
Private Sub Combo1_KeyPress(KeyAscii As Integer)<br>  
Const MAXLENGTH = 10 '设定最大长度为 10<br>  
If Len(Combo1.Text) &gt;= MAXLENGTH And KeyAscii &lt;&gt; vbKeyBack Then<br>  
KeyAscii = 0<br>  
End If<br>  
End Sub<br>  
<br>  
<font color="#FF0000">164、如何撰写没 Form 的程序?</font><a name="164"></a><br>  
<br>  
一般在撰写 VB 的程序时,由于一进入 VB   
的环境时就会自动产生一个 Form1,而 VB   
本身又是一种事件驱动程序,所以有些人一直认为 VB   
的程序一定会有一个以上的 Form 存在。其实 VB   
也可以撰写一些完全没有表单 (Form) 的程序。<br>  
<br>  
撰写的方法如下:<br>  
1、启动一个新的工程 (Project)<br>  
2、移除 Form1<br>  
3、开启一个 Module (名称可自取,或使用 Default 名称 Module1)<br>  
4、在 Module 中加入一段名为 Main 的 SubRoutine (名称一定要取为   
Main)<br>  
<br>  
'例:下面的程序执行时会开启 c:\test.txt   
并写入一个数字,然后直接结束,没有任何表单。<br>  
<br>  
Public Sub Main()<br>  
Open &quot;c:\test.txt&quot; For Output As #3<br>  
Print #3, 6666<br>  
Close #3<br>  
End '可有可无,会自动结束<br>  
End Sub<br>  
<br>  
<font color="#FF0000">165、别让 MsgBox 中断了一些 Background   
的处理作业</font><a name="165"></a><br>  
<br>  
在 VB 中,一旦您呼叫了 MsgBox,您正在执行的一些 Background   
的处理作业,例如计数器或时钟...等,都会停下来,直到您回应了   
MsgBox   
之后,一切才会恢复正常!或许您并不希望如此,这也有可能造成一些不必要的错误!<br>  
<br>  
要解决这个问题,您必须使用 Windows API 去呼叫 MessageBox   
Function,它的使用方法、外观和 MsgBox   
的结果完全相同,但是它却不会中断一些 Background   
的处理作业!<br>  
<br>  
在以下的范例中,您要在 Form 中加入一个 Label、二个   
CommandButton 及一个 Timer,不更改任何属性。<br>  
<br>  
'在声明区中加入以下声明:<br>  
<br>  
Private Declare Function MessageBox Lib &quot;user32&quot; Alias   
&quot;MessageBoxA&quot; (ByVal hwnd As Long, ByVal lpText As String, ByVal   
lpCaption As String, ByVal wType As Long) As Long<br>  
<br>  
'加入以下程序码:<br>  
<br>  
Private Sub Command1_Click()<br>  
MsgBox &quot;计时器停掉了!&quot;, 64, &quot;VB 的讯息框&quot;<br>  
End Sub<br>  
<br>  
Private Sub Command2_Click()<br>  
MessageBox Me.hwnd, &quot;注意!计时器还在跑!&quot;, &quot;API   
的讯息框&quot;, 64<br>  
End Sub<br>  
<br>  
Private Sub Form_Load()<br>  
Timer1.Interval = 1000<br>  
Label1.Caption = &quot;目前的时间是:&quot; &amp; Time<br>  
End Sub<br>  
<br>  
Private Sub Timer1_Timer()<br>  
Label1.Caption = &quot;目前的时间是:&quot; &amp; Time<br>  
End Sub</td>  
</tr>  
</table>  
</center>  
</div>  
<div align="center">  
<center>  
<table border="0" width="100%" cellspacing="1">  
<tr>  
<td width="100%" bgcolor="#99CCFF">  
<p align="center"><font color="#ff0000"><a href="../../index.html" target="_blank">[木瓜软件工作室]</a>  
整理</font></td> 
</tr> 
</table> 
</center> 
</div> 
 
</body> 
 
</html> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -