📄 pr33.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 "user32" Alias
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal
dwNewLong As Long) As Long<br>
Private Declare Function GetWindowLong Lib "user32" Alias
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long<br>
#Else<br>
Private Declare Function SetWindowLong Lib "User" (ByVal hwnd As
Integer, ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long<br>
Private Declare Function GetWindowLong Lib "User" (ByVal hwnd As
Integer, ByVal nIndex As Integer) As Long<br>
#End If<br>
<br>
Const WS_MINIMIZEBOX = &H20000 '最小化<br>
Const WS_MAXIMIZEBOX = &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 "User" (ByVal hWnd As
Integer, ByVal bRevert As Integer) As Integer<br>
Private Declare Function RemoveMenu Lib "User" (ByVal hMenu As
Integer, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer<br>
<br>
Const MF_BYPOSITION = &H400<br>
<br>
'在 Form_Load 事件中加入以下程序码<br>
<br>
Private Sub Form_Load()<br>
SystemMenu% = GetSystemMenu(hWnd, 0)<br>
Res% = RemoveMenu(SystemMenu%, 1, MF_BYPOSITION) <--- 第二个参数是
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) >= MAXLENGTH And KeyAscii <> 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 "c:\test.txt" 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 "user32" Alias
"MessageBoxA" (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 "计时器停掉了!", 64, "VB 的讯息框"<br>
End Sub<br>
<br>
Private Sub Command2_Click()<br>
MessageBox Me.hwnd, "注意!计时器还在跑!", "API
的讯息框", 64<br>
End Sub<br>
<br>
Private Sub Form_Load()<br>
Timer1.Interval = 1000<br>
Label1.Caption = "目前的时间是:" & Time<br>
End Sub<br>
<br>
Private Sub Timer1_Timer()<br>
Label1.Caption = "目前的时间是:" & 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 + -