VB的一些小知识——重载Wndproc
来源:互联网 发布:我的妻子是网络主播 编辑:程序博客网 时间:2024/04/30 08:56
废话不说!大神直接飘过、
直接简介;
代码语言:Visual Basic
代码作用:本代码直接采用重载Wndproc的方式构造一个可以吸附在屏幕顶部的窗口
'模块代码==========================================================
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" ( lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
Public Const GWL_WNDPROC = (-4)
Public Const WM_WINDOWPOSCHANGING = &H46
Type WINDOWPOS
hwnd As Long
hWndInsertAfter As Long
x As Long
y As Long
cx As Long
cy As Long
flags As Long
End Type
Public preWinProc As Long
Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim lwd As Long, hwd As Long
If Msg = WM_WINDOWPOSCHANGING Then
Dim WPOS As WINDOWPOS
CopyMemory WPOS, ByVal lParam, Len(WPOS)
If WPOS.y < 20 Then WPOS.y = 0
CopyMemory ByVal lParam, WPOS, Len(WPOS)
End If
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function
'窗口代码===========================================================
Private Sub Form_Load()
Dim ret As Long
preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
End Sub
‘==================================================================
相信很多人看到代码都是一个想法,直接贴到程序里,这里我还是希望大家注意代码的理解;
这样你可以做到的不仅仅是代码能够实现的功能,你可以常识这改代码,然后写属于自己的代码,来实现更多的功能!
对于以上代码不做解释;可以修改If WPOS.y < 20 Then WPOS.y = 0
这个判断条件来实现更多的功能,相信经过一番尝试就会懂的!提示注意消息WM_WINDOWPOSCHANGING 的结构;
可以查查各个参数的含义,当然猜也猜得到!
- VB的一些小知识——重载Wndproc
- 重载WndProc
- 重载WndProc
- VB的一些小技巧。
- 【备忘】c++重载的一些知识
- ASP的一些小知识
- 一些小的网络知识
- vc的一些小知识
- javascript的一些小知识
- Ruby的一些小知识
- 数据库的一些小知识
- 一些wince的小知识
- nfs的一些小知识
- 一些凌乱的小知识
- Linux的一些小知识
- 麦克风的一些小知识
- C#的一些小知识
- IOS的一些小知识
- 数据结构的排序
- FPGA学习笔记6-Quartus II中的TCL脚本(翻译)
- 他的统计学(转载)
- mac os 自带文件夹突然变为英文的解决办法
- http的header
- VB的一些小知识——重载Wndproc
- POJ2528 Mayor's posters
- 用python 实现上传文件功能
- 开通了新的空间
- Eclipse的HTML编辑器
- 里程碑-博客开通
- Linux系统--job control
- 优盘安装ubuntu
- Windows程序设计__孙鑫C++Lesson6《菜单操作》