`

VB 窗口处理技巧大全

    博客分类:
  • vb
VB 
阅读更多

VB提供了API函数SetWindowLong和GetWindowLong,可以让我们很容易取得对窗口的操作;通过对窗口属性的操作,可以更改窗口的显示风格。有些看来是正常情况下无法实现的窗口,现在你可以很容易的实现。只要你想到,更多希奇古怪的你也能做到。快试试下面的例子吧。

'以下例子中可能用到的API声明和常量、变量声明
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function
SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) 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 Const
SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOMOVE = &H2
Private Const SWP_DRAWFRAME = &H20
Private Const GWL_STYLE = (-16)
Private Const WS_THICKFRAME = &H40000
Private Const WS_DLGFRAME = &H400000
Private Const WS_POPUP = &H80000000
Private Const WS_CAPTION = &HC00000
Private Const WS_SYSMENU = &H80000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZE = &H20000000
Private Const WS_MAXIMIZE = &H1000000


--------------------------------------------------------------------------------

'例子一:任何一个控件(只要有窗口,这是我们的前提,下同),你可以在运行时随便更改它的大小。
Private Sub ControlSize(ControlName As Control, SetTrue As Boolean)
Dim dwStyle As Long
dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)
If SetTrue Then
dwStyle = dwStyle Or WS_THICKFRAME
Else
dwStyle = dwStyle - WS_THICKFRAME
End If
dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)
SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd,
0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME
End Sub
'用法:ControlSize picture1,true;设置第二个参数为False取消这种设置,下同


--------------------------------------------------------------------------------

'例子二:任何一个控件,我们都可以控制其显示风格为对话框的风格。
Private Sub ControlDialog(ControlName As Control, SetTrue As Boolean)
Dim dwStyle As Long
dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)
If SetTrue Then
dwStyle = dwStyle Or WS_DLGFRAME
Else
dwStyle = dwStyle - WS_DLGFRAME
End If
dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)
SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd,
0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME
End Sub
'用法:ControlSize picture1,true


--------------------------------------------------------------------------------

'例子三:任何一个控件,我们都可以控制其显示风格为模式对话框的风格
Private Sub ControlModal(ControlName As Control, SetTrue As Boolean)
Dim dwStyle As Long
dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)
If SetTrue Then
dwStyle = dwStyle Or WS_POPUP
Else
dwStyle = dwStyle - WS_POPUP
End If
dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)
SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd,
0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME
End Sub
'用法:ControlModal Picture1,true


--------------------------------------------------------------------------------

'例子四:任何一个控件,我们都可以给它加上标题栏,通过拖动标题栏,可以实现控件的运行时移动。
Private Sub ControlCaption(ControlName As Control, SetTrue As Boolean) Dim dwStyle As Long
dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)
If SetTrue Then
dwStyle = dwStyle Or WS_CAPTION
Else
dwStyle = dwStyle - WS_CAPTION
End If
dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)
SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd,
0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME
End Sub
'用法:ControlCaption picture1,true


--------------------------------------------------------------------------------

'例子五:任何一个控件,我们都可以给它加上ControlBox(所谓ControlBox,就是窗体的图标+最小化+最大化+关闭按钮)。
Private Sub ControlSysMenu(ControlName As Control, SetTrue As Boolean)
Dim dwStyle As Long
dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)
If SetTrue Then
dwStyle = dwStyle Or WS_SYSMENU
Else
dwStyle = dwStyle - WS_SYSMENU
End If
dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)
SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd,
0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME
End Sub
'用法:ControlCaption picture1,true:ControlSysmenu picture1,true

 

分享到:
评论

相关推荐

    VB窗口处理技巧大全

    Vb提供了API函数SetWindowLong和GetWindowLong,可以让我们很容易取得对窗口的操作;通过对窗口属性的操作,可以更改窗口的显示风格

    窗口处理技巧大全...

    VB 之 精 彩 编 程-窗口处理技巧大全

    VB动画版“关于”窗口,带拉幕和滚动字幕效果.rar

    VB动画版“关于”窗口,带拉幕和滚动字幕效果,拉幕式动画“关于“窗口,用来制作软件的”“关于”对话框之类的比较合适,打开窗口后,点击“关于本软件”后会弹出一个带滚动字幕的拉幕窗口,动画效果流畅,还可调节...

    VB技巧大全(1??10)

    VB技巧(2)-多媒体处理 1 音效档播放程式 2 如何用API播放CD 3 如何用API及MMSYSTEM.DLL播放AVI文件 4 如何用API及MMSYSTEM.DLL播放WAV文件 5 怎样检查声卡的存在 6 如何从" SOUND.DRV"中提取声音 7 ...

    VB编程资源大全(源码 API)

    使用SetWindowLong改变窗口的缺省窗口处理函数,从而建立可以显示不同颜色列表的程序(3KB) 20,filedialog_hook.ZIP DialogHook利用Windows API实现对文件打开对话框的监控(6KB) 21,djapi.zip A common API ...

    VB网络编程实例

    ◆ 82.htm 用Sockets发送电子邮件 ◆ 83.htm 用VB 创 建 自 己 的 通 信 程 序 ◆ 84.htm 用VB5.0开发通信软件的技巧 ◆ 85.htm 用VB5开发IE ◆ 86.htm 用VB编写网络寻呼 ◆ 87.htm ...

    VB编程资源大全(源码 其它1)

    g017 3维的breaKthrough游戏(8KB) 582,g016.zip 小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等...

    VB6.0初学者的10个编程小技巧

    关于vb初学者的忠告 信息来源:邪恶八进制信息安全团队(www.eviloctal.com) 1、如果一行程序太长,能不能换行? VB的程序代码是允许换行书写的,只要在每次换行的最后一个字符加上换行字符“_”就可以了。例如...

    可视化程序设计(VB)课件_东北大学

    掌握VB语言提供的事件编程机制,以及在Windows界面设计(窗口、控件)应用;以及的掌握VB语言在图形、文件操作和数据库应用等方面的基本应用方法;掌握程序调试方法,学会应用计算机通过程序解决实际问题。。 三、...

    VB.NET自制的看图工具软件.rar

    你可以通过这个小程序了解一些VB.NET与图片之间的操作技巧,另外还可以学习到窗口对话框的一些基本操作、PictureBox控件用法、目录和文件列表框的使用、处理鼠标事件、偏移量计算图片位置,重画图片、绘图画面,颜色...

    VB编程资源大全(源码 其它4)

    g017 3维的breaKthrough游戏(8KB) 582,g016.zip 小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等...

    VB.NET入门经典第三版001

     调试和错误处理技巧;  Web Services和.NET Remoting技术;  如何建立类库、创建自定义控制和自定义图形;  运用SQL Server和ADO.NET进行数据库编程;  了解移动应用程序及其构建方法。  本书读者对象:  ...

    VB SendKeys语句详解

    VB SendKeys语句详解 将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。 语法 SendKeys string[, wait] SendKeys 语句的语法具有以下几个命名参数: string 必需的。字符串表达式,指定要发送的...

    VB编程资源大全(源码 其它3)

    g017 3维的breaKthrough游戏(8KB) 582,g016.zip 小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等...

    VB编程资源大全(源码 其它2)

    g017 3维的breaKthrough游戏(8KB) 582,g016.zip 小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等...

    [VB.NET入门经典第三版]利斯.002

     调试和错误处理技巧;  Web Services和.NET Remoting技术;  如何建立类库、创建自定义控制和自定义图形;  运用SQL Server和ADO.NET进行数据库编程;  了解移动应用程序及其构建方法。  本书读者对象:  ...

    VB2008应用程序开发实例精讲(光盘文件)

    第2~6篇为VB 2008专题应用程序开发实例,通过19个专题领域实例,详细深入地介绍了VB 2008各种领域的应用开发技术和技巧,具体包括:数据库应用开发实例、网络与通信开发实例、多媒体应用开发实例、图形图像处理实例...

    Visual.Basic.2008编程参考手册.pdf

    提高部分则从面向对象编程、使用图形及与环境交互等方面阐述了Visual Basic 2008编程的实质性内容,其中提供了大量的示例代码,这不仅可以提高读者的编程技能,而且能使读者掌握大量的编程技巧,领悟编程精髓。...

    Visual Basic 6编程技术大全 中译本扫描版带书签 2/2

    Visual Basic 6编程技术大全 是非常详细和深入的Vb6学习教程,无论对初学者还是有经验的开发人员,都非常有帮助 第一部分基础篇1 第1章 VB6入门1 1.1 集成开发环境1 1.1.1 运行IDE1 1.1.2 选择工程类型1 1.1.3 IDE...

Global site tag (gtag.js) - Google Analytics