📄 vbtips9.htm
字号:
得到X坐标</p>
<p id="content">Label2 = "y: " & z.y '
得到Y坐标</p>
<p id="content">End Sub </p>
<p id="content">5、按F5运行程序,移动鼠标注意观察两个标签对象的变化。<br>
<a href="#Return">返回</a></p>
<p id="content"><a name="怎样捕捉窗体的鼠标?"><b>怎样捕捉窗体的鼠标?</b></a></p>
<p id="content">这个技巧将向您展示如何使用捕捉光标的API函数阻止鼠标指针移出窗体。</p>
<p id="content">注意!:如果窗体的BorderStyle属性被设为sizeable(2或5),则当你改变窗体的大小时鼠标就会“逃脱”程序的监控!因此你最好把BorderStyle设为0、1、3或4。</p>
<p id="content">步骤:</p>
<ol>
<li>把以下代码添加如模块:</li>
</ol>
<p id="content">Option Explicit </p>
<p id="content">Type RECT</p>
<p id="content">Left As Long</p>
<p id="content">Top As Long</p>
<p id="content">Right As Long</p>
<p id="content">Bottom As Long</p>
<p id="content">End Type </p>
<p id="content">Declare Function ClipCursor Lib
"user32" _</p>
<p id="content">(lpRect As Any) As Long</p>
<p id="content">Public Sub DisableTrap(CurForm As Form)</p>
<p id="content">Dim erg As Long</p>
<p id="content">'声明过程变量</p>
<p id="content">'设置新坐标</p>
<p id="content">Dim NewRect As RECT</p>
<p id="content">CurForm.Caption = "释放鼠标"</p>
<p id="content">With NewRect</p>
<p id="content">.Left = 0&</p>
<p id="content">.Top = 0&</p>
<p id="content">.Right = Screen.Width /
Screen.TwipsPerPixelX</p>
<p id="content">.Bottom = Screen.Height /
Screen.TwipsPerPixelY</p>
<p id="content">End With</p>
<p id="content">erg& = ClipCursor(NewRect)</p>
<p id="content">End Sub </p>
<p id="content">Public Sub EnableTrap(CurForm As Form)</p>
<p id="content">Dim x As Long, y As Long, erg As Long</p>
<p id="content">'声明过程变量</p>
<p id="content">'设置新坐标</p>
<p id="content">Dim NewRect As RECT</p>
<p id="content">'得到TwipsperPixel</p>
<p id="content">'窗体的ScaleMode必须设为Twips!!!</p>
<p id="content">x& = Screen.TwipsPerPixelX</p>
<p id="content">y& = Screen.TwipsPerPixelY</p>
<p id="content">CurForm.Caption = "捕捉鼠标"</p>
<p id="content">'设置光标的范围</p>
<p id="content">With NewRect</p>
<p id="content">.Left = CurForm.Left / x&</p>
<p id="content">.Top = CurForm.Top / y&</p>
<p id="content">.Right = .Left + CurForm.Width / x&</p>
<p id="content">.Bottom = .Top + CurForm.Height / y&</p>
<p id="content">End With</p>
<p id="content">erg& = ClipCursor(NewRect)</p>
<p id="content">End Sub </p>
<p id="content">2、在窗体上添加两个命令按钮(Command
Button)。</p>
<p id="content">3、把以下代码添加如Form1。</p>
<p id="content">Private Sub Command1_Click()</p>
<p id="content">EnableTrap Form1</p>
<p id="content">End Sub </p>
<p id="content">Private Sub Command2_Click()</p>
<p id="content">DisableTrap Form1</p>
<p id="content">End Sub </p>
<p id="content">Private Sub Form_Unload(Cancel As
Integer)</p>
<p id="content">'程序结束时释放鼠标。</p>
<p id="content">DisableTrap Form1</p>
<p id="content">End Sub<br>
<a href="#Return">返回</a></p>
<p id="content"><a
name="怎样得到文本框(TextBox)中的文本行数?"><b>怎样得到文本框(TextBox)中的文本行数?</b></a></p>
<p id="content">计算文本框中输入文本的行数可以使用SendMessage函数返回,当一行文字发生环绕时,它将被当作新的一行,而被非简单的计算文本中的换行符个数。</p>
<p id="content">把以下API函数的声明添入模块文件的general
declarations区域,如果您使用的是VB4-32或VB5,也可以把此声明添入Form1的general
declarations中,并把所有的“Public”更换为“Private”。</p>
<p id="content">Option Explicit</p>
<p id="content">Public Declare Function SendMessageLong
Lib _</p>
<p id="content">"user32" Alias
"SendMessageA" _</p>
<p id="content">(ByVal hwnd As Long, _ </p>
<p id="content">ByVal wMsg As Long, _ </p>
<p id="content">ByVal wParam As Long, _</p>
<p id="content">ByVal lParam As Long) As Long</p>
<p id="content">Public Const EM_GETLINECOUNT = &HBA </p>
<p id="content">Form Code</p>
<p id="content">Sub Text1_Change()</p>
<p id="content">Dim lineCount as Long</p>
<p id="content">On Local Error Resume Next</p>
<p id="content">'得到/显示文本行数</p>
<p id="content">lineCount = SendMessageLong(Text1.hwnd,
EM_GETLINECOUNT, 0&, 0&)</p>
<p id="content">Label1 = Format$(lineCount,
"##,###")</p>
<p id="content">End Sub </p>
<p id="content">注释:</p>
<p id="content">为了使本程序成功,请在设计阶段把文本框的Multiline属性设为True。<br>
<a href="#Return">返回</a></p>
<p id="content"><a
name="怎样使程序的标题条闪烁?"><b>怎样使程序的标题条闪烁?</b></a></p>
<p id="content">建立新的项目文件,添加模块文件,并填写如下代码:</p>
<p id="content">Public Declare Function FlashWindow _</p>
<p id="content">Lib "user32" (ByVal hwnd As
Long, _</p>
<p id="content">ByVal bInvert As Long) As Long</p>
<p id="content">在窗体中添加两个按钮和一个计时器,并用设置以下属性:</p>
<p id="content">command1.caption="开始"</p>
<p id="content">command2.caption="停止"</p>
<p id="content">timer1.interval=500 '每0.5秒闪烁一次</p>
<p id="content">timer1.enabled=false</p>
<p id="content">Private Sub Timer1_Timer()</p>
<p id="content">a& = FlashWindow(Me.hwnd, 1)</p>
<p id="content">End Sub</p>
<p id="content">Private Sub Command1_Click()</p>
<p id="content">Timer1.Enabled = True</p>
<p id="content">End Sub</p>
<p id="content">Private Sub Command2_Click()</p>
<p id="content">Timer1.Enabled = False</p>
<p id="content">End Sub</p>
<p id="content">按F5运行程序。 <br>
<a href="#Return">返回</a></p>
</td>
</tr>
</table>
</center></div>
<hr>
<div align="center"><center>
<table border="0" cellspacing="1" width="88%">
<tr>
<td width="80%"><p align="left"><a
href="vbtips.htm#Return">[1]</a> <a href="vbtips1.htm">[2]</a>
<a href="vbtips2.htm">[3]</a> <a href="vbtips3.htm">[4]</a>
<a href="vbtips4.htm">[5]</a> <a href="vbtips5.htm">[6]</a>
<a href="vbtips7.htm">[7]</a> <a href="vbtips7.htm">[8]</a>
[9] <a href="vbtips10.htm">[10]</a></p>
</td>
<td><p align="right"><font size="2">第九页(共十页)</font></p>
</td>
</tr>
</table>
</center></div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -