112
Publibsp; st SC_MOVE = HF01
2
其中 ReleaseCapture 函数是用来释放鼠标捕获的,SendMessage 函数是一个在 Windows API 中非常重要的函数,在这里的作用是用来向 Windows 发送移动窗体的消息。WM_SYSAND 是向 Windows 发送消息的常量。SC_MOVE 是控制移动窗体的常量。请注意:这里 SC_MOVE 的赋值是 HF012,表示鼠标对象。
3、在窗体的 MouseDown 过程中加入以下代码:
Private Sub ForMouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, WM_SYSAND, SC_MOVE, 0
End Sub
其中 ReleaseCapture 函数用来释放鼠标捕获,SendMessage 函数向 Windows 发送移动窗体的消息。
4、保存并运行程序,按下鼠标,你会发现窗体会随着鼠标的移动而移动。
以上讲述了如何在 VB 中用鼠标拖动窗体,其实,控件的拖动的原理是一样的。例如以下代码可以实现图片框的拖动:
ReleaseCapture
SendMessage Picture1.hwnd, WM_SYSAND, SC_MOVE, 0
(注:以上程序在 Windows98、VB5.0/6.0 下调试通过。在 NT4.0、VB6.0 下不能运行。)
103,Q:用 Delphi5.0 编程实现 Windows 桌面的隐藏和显示
A:实现原理是调用 Windows 的 API 函数。程序代码如下:
 rocedure TFor.Button1Click(Sender: TObject);
var hDesktop:Thandle;
begin
hDesktop:=FindWindow('Progn',nil);
ShowWindow(hDesktop,SW_HIDE); //隐藏桌面
end;
 rocedure TFor.Button2Click(Sender: TObject);
var hDesktop:Thandle;
begin
hDesktop:=FindWindow('Progn',nil);
ShowWindow(hDesktop,SW_SHOW); //显示桌面
end;
 rocedure TFor.Button3Click(Sender: TObject);
begin
close;
end
104,Q:应用 Microsoft TTS 语音引擎的 Delphi 语言实例
A:建立一个单窗体工程,添加一个 Edit 和 2 个 Button 控件,分别命名为 Edit1、btnSpeak、btnStop。