网站运营优化

网站设计、开发、策划、运营、优化和推广等

« 用VB编写网络监控软件屏保程序模板化完整源代码 »

VB中实现窗体自动隐藏

  OICQ聊天时的窗体自动隐藏功能,用VC 或CBC都可以很简单地实现,前几天看到有一则用CBC实现的例子,便想用VB实现一下,可惜当窗体上放满控件时,FORM的MOUSEMOVE事件不能很好地触发,所以只好用以下的笨办法,现把代码贴上,窗体上需放一TIMER控件,Interval属性为200。大伙如有好的意见,不妨贴出来,让我学习学习。

  Option Explicit

  Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

  Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
  End Type
  Private Type POINTAPI
  X As Long
  Y As Long
  End Type

  Private Const HWND_TOPMOST = -1
  Private Const SWP_NOSIZE = &H1
  Private Const SWP_NOMOVE = &H2
  Private Const HWND_TOP = 0
  Private Const SWP_NOACTIVATE = &H10
  Private Const SWP_SHOWWINDOW = &H40


  Private Sub Form_Load()
  '窗体放在最前面
  SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
  End Sub

  Private Sub Timer1_Timer()
  Dim p As POINTAPI
  Dim f As RECT
  GetCursorPos p '得到MOUSE位置
  GetWindowRect Me.hwnd, f '得到窗体的位置
  If Me.WindowState <> 1 Then
  If p.X > f.Left And p.X < f.Right And p.Y > f.Top And p.Y < f.Bottom Then
  'MOUSE 在窗体上
  If Me.Top < 0 Then
  Me.Top = -10
  Me.Show
  ElseIf Me.Left < 0 Then
  Me.Left = -10
  Me.Show
  ElseIf Me.Left + Me.Width >= Screen.Width Then
  Me.Left = Screen.Width - Me.Width + 10
  Me.Show
  End If

  Else
  If f.Top <= 4 Then
  Me.Top = 40 - Me.Height
  ElseIf f.Left <= 4 Then
  Me.Left = 40 - Me.Width
  ElseIf Me.Left + Me.Width >= Screen.Width - 4 Then
  Me.Left = Screen.Width - 40
  End If
  End If
  End If

  End Sub




发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

<< 2012-1 >>

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

订阅博客

  • 订阅我的博客:订阅我的博客

站内搜索

热文排行

最新评论及回复

最近发表

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.