用SetSystemCursor制作一个等待事件的窗体
2008-02-18 23:00
501 查看
SetSystemCursor 看名字就知道是设置系统指针的涵数,我们常见的指针型态有手型的、繁忙等待的、水平调整、上下调整等等,根据既定的参数我们很容易把自已喜爱的鼠标指针设置为各种型态,来替代系统的指针。就让我们挖掘其功能,扩展一些新的用法吧。
这一节讲的是怎样利用SetSystemCursor 制作一个等待事件的窗体。准备之前,先在网上找一款动感的自已喜欢的鼠标指针(后缀名为ani) 。完整代码如下:
'读取指针文件或一个动画指针文件(扩展名分别是.cur和.ani)
Private Declare Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
'改变一个标准系统指针
Private Declare Function SetSystemCursor Lib "user32.dll" (ByVal hcur As Long, ByVal id As Long) As Long
'从指定的模块或应用程序实例中载入一个鼠标指针
Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
'复制指定的光标
Private Declare Function CopyCursor Lib "user32" Alias "CopyIcon" (ByVal hcur As Long) As Long
'清除指定的鼠标指针,并释放它占用的所有系统资源
Private Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Long) As Long
Private Const OCR_WAIT = 32514 '系统繁忙指针参数
Dim hCursor As Long
Dim OldCurSor As Long
Private Sub Form_Load()
'取系统繁忙事件的指针
OldCurSor = LoadCursor(ByVal 0&, OCR_WAIT)
'复制指针文件,以便能正常恢复初始状态
OldCurSor = CopyCursor(OldCurSor)
'新的指针文件
hCursor = LoadCursorFromFile(CurrentProject.Path & "/aero_working.ani")
End Sub
'在程序需要处理等待的地方加入下面的代码
'设置新的等待指针
SetSystemCursor hCursor, OCR_WAIT
' .............................. 需要处理事件的代码自已加吧
'恢复初始指针
SetSystemCursor OldCurSor, OCR_WAIT
Private Sub Form_Unload(Cancel As Integer)
'释放指针资源
If OldCurSor <> 0 Then
SetSystemCursor OldCurSor, OCR_WAIT
End If
DestroyCursor OldCurSor
DestroyCursor hCursor
End Sub
这一节讲的是怎样利用SetSystemCursor 制作一个等待事件的窗体。准备之前,先在网上找一款动感的自已喜欢的鼠标指针(后缀名为ani) 。完整代码如下:
'读取指针文件或一个动画指针文件(扩展名分别是.cur和.ani)
Private Declare Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
'改变一个标准系统指针
Private Declare Function SetSystemCursor Lib "user32.dll" (ByVal hcur As Long, ByVal id As Long) As Long
'从指定的模块或应用程序实例中载入一个鼠标指针
Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
'复制指定的光标
Private Declare Function CopyCursor Lib "user32" Alias "CopyIcon" (ByVal hcur As Long) As Long
'清除指定的鼠标指针,并释放它占用的所有系统资源
Private Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Long) As Long
Private Const OCR_WAIT = 32514 '系统繁忙指针参数
Dim hCursor As Long
Dim OldCurSor As Long
Private Sub Form_Load()
'取系统繁忙事件的指针
OldCurSor = LoadCursor(ByVal 0&, OCR_WAIT)
'复制指针文件,以便能正常恢复初始状态
OldCurSor = CopyCursor(OldCurSor)
'新的指针文件
hCursor = LoadCursorFromFile(CurrentProject.Path & "/aero_working.ani")
End Sub
'在程序需要处理等待的地方加入下面的代码
'设置新的等待指针
SetSystemCursor hCursor, OCR_WAIT
' .............................. 需要处理事件的代码自已加吧
'恢复初始指针
SetSystemCursor OldCurSor, OCR_WAIT
Private Sub Form_Unload(Cancel As Integer)
'释放指针资源
If OldCurSor <> 0 Then
SetSystemCursor OldCurSor, OCR_WAIT
End If
DestroyCursor OldCurSor
DestroyCursor hCursor
End Sub
相关文章推荐
- cursor: pin S等待事件
- 制作一个简单的等待窗口
- 利用System.EventHandler来实现两个窗体间的事件调用
- 关于等待事件cursor: pin S的一点介绍
- 利用System.EventHandler来实现两个窗体间的事件调用
- 多个进程同时等待网络的连接事件,当这个事件发生时,这些进程被同时唤醒,我们知道进程被唤醒,需要进行内核重新调度,这样每个进程同时去响应这一个事件,而最终只有一个进程能处理事件成功,其他的进程在处理该事件失败后重新休眠或其他。
- 遇到cursor: pin S等待事件
- Delphi 给窗体上面所有的控件都挂上一个事件处理过程华软源码
- C#(模板模式)将父窗体继承之后重写一个按钮的事件,为什么每次都要运行两次才结束?
- 一个tomcat部署两个项目引发的血案:Web app root system property already set to different value: 'webapp.root'
- oracle等待事件3构造一个Direct Path write等待事件和构造一个Log File Sync等待事件
- cursor: pin S wait on X等待事件
- C# 在线程单独开一个等待窗体,并改变进度条的值【别扭】
- 如何制作一个没有任何窗体的,隐藏在后台的程序。
- 一个session已经ACTIVE20多小时,等待事件SQL*Net more data from client
- 如果关闭一个窗体后激活另一个窗体的事件或方法
- 利用System.EventHandler来实现两个窗体间的事件调用
- Silverlight制作一个简单的菜单1-用到的知识讲解 xml数据读取,事件如何传递参数
- WinForm中一个窗体调用另一个窗体的控件和事件的方法(附带源码)
- Java 组件及事件处理实训 实训1: 编写一个窗体程序,能够对文本区中的文字设置字体和大小。