|
马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 a837861603 于 2019-4-15 11:38 编辑
用CreateWindowEx和ShowWindow创建控件之后如何再用SetWindowLong和CallWindowProc添加事件??? 找遍论坛没有与之相关的内容,望各位大神告知。下面是我用VB写的dll创建控件,也能添加事件,但是不能直接调用TC编写的事件。
VB创建按钮,并改变按钮的事件,并发送消息:
VB.class.cls代码:- Public C**t WM_LBUTTONUP = &H202
- Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
- Public 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
- Public OldWinProc As Long
- Public Function OnMenu(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
- Select Case wMsg
- Case WM_LBUTTONUP
- msgbox "ok"
- End Select
- OnMenu = CallWindowProc(OldWinProc, hwnd, wMsg, wParam, lParam)
- End Function
复制代码
VB.Module1.bas代码:
- Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
- Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
- Private C**t SW_SHOWNORMAL = 1
- Private C**t GW_HWNDNEXT = 2'被屏蔽字符:C o n s t
- Function showwindws(IpClassName, lpWindowName, xx, yy, wth, hei, hwnd, shijianB)
- Dim gButtonHwnd&
- gButtonHwnd& = CreateWindowEx(0&, IpClassName, lpWindowName, &H40000000, xx, yy, wth, hei, hwnd, 0, App.hInstance, shijianB)
- Call ShowWindow(gButtonHwnd&, SW_SHOWNORMAL)
- OldWinProc = SetWindowLong(gButtonHwnd&, GWL_WNDPROC, AddressOf OnMenu)
- showwindws = gButtonHwnd&
- End Function
复制代码 TC注册插件后调用:
- var 句柄A=controlgetchildhwnd("图色助手")'父窗
- AAA=工程.showwindws("Button","按钮333",106,8,697,399,句柄A,创建之前载入的事件())
复制代码- 功能 创建之前载入的事件()
- 调试输出("111")
- 结束
复制代码
VB可以过滤事件消息并动作,怎么换成TC里的函数???
|
|