请问下,WM_LBUTTONDOWN消息如何使用?
鼠标左键按下的同时没按任何control,没按shift,wParam参数应该填什么?
配合sendmessage向一个按钮控件传送WM_LBUTTONDOWN消息时遇到了错误:
提示DLL调用约定错误
请问正确的写法应该是怎样呢?
鼠标左键按下的同时没按任何control,没按shift,wParam参数应该填什么?
配合sendmessage向一个按钮控件传送WM_LBUTTONDOWN消息时遇到了错误:
提示DLL调用约定错误
请问正确的写法应该是怎样呢?
解决方案 »
- 使用GDI+绘图时候发生的文图,图像只画了一部份,请教一下大家
- Codejock Xtreme 使用说明
- Combo1如何显示第一条记录!!!
- 怎么连不上SQL数据库
- 请问大家怎么用VB实现ADSL拨号软件开发。不需要驱动。就是拨号器
- 如何在VB中实现采集电子秤数据,重量精确到克(还有如何采集条形码扫描数据),急,高分
- 南京搞VB的老程序员还有多少,请加我QQ99290437,我想成立个团队!
- 谁有communication控件,送分!!
- 请问简单问题:VB中将INT型转换成STRING和从STRING转换成INT型的函数分别是什么?
- vb6 使窗体总在最前面,使用中出现很奇怪的问题!
- 问一个关于vb.net 中textbox的问题
- 请问如何设置msflexdgrid指定行的背景色?
The WM_LBUTTONDOWN message is posted when the user presses the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse. WM_LBUTTONDOWN
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor
Parameters
fwKeys
Value of wParam. Indicates whether various virtual keys are down. This parameter can be any combination of the following values: Value Description
MK_CONTROL Set if the ctrl key is down.
MK_LBUTTON Set if the left mouse button is down.
MK_MBUTTON Set if the middle mouse button is down.
MK_RBUTTON Set if the right mouse button is down.
MK_SHIFT Set if the shift key is down.
xPos
Value of the low-order word of lParam. Specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
yPos
Value of the high-order word of lParam. Specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
Return Values
If an application processes this message, it should return zero. Res
An application can use the MAKEPOINTS macro to convert the lParam parameter to a POINTS structure. 以上是关于这个消息的说明.看你是想设计为发送一个点击消息?那应该使用POSTMESSAGE:Private Function SendClick(hwnd As Long)
Dim I As Long
I = PostMessage(hwnd, WM_LBUTTONDOWN, 0, 0)
I = PostMessage(hwnd, WM_LBUTTONUP, 0, 0)
End Function
用SendMessage出现问题
可以用PostMessage滴 呵呵
PostMessage _Hwnd, WM_LBUTTONDOWN, 0&, MAKEPARAM(18, 29)MAKEPARAM是一个函数 转换坐标的Function MAKEPARAM(LoWord As Integer, HiWord As Integer) As Long
MAKEPARAM = (HiWord * &H10000) Or (LoWord And &HFFFF&)
End Function其实就是高低字节的转换
尝试了两位的办法.不过问题依旧.....郁闷中...
设想只传送一个仅仅鼠标左键被按下的消息(WM_LBUTTONUP先不传送,左键按下同时没有按键盘上任何的按键)
我的函数声明,看看哪里出问题函数与常数声明在一个标准模块中
Public Const MK_CONTROL = &H8
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)小曾哥的转换程序,标准模块中
Public Function MAKEPARAM(LoWord As Integer, HiWord As Integer) As Long
MAKEPARAM = (HiWord * &H10000) Or (LoWord And &HFFFF&)
End Function函数调用写在一个标签控件的click事件中
Private Sub lblSend_Click()
Dim i As Long
i = PostMessage(cmd1.hwnd, WM_LBUTTONDOWN, 0, 0)
End Sub尝试了其它写法..都没有成功,真是让人抓狂的......
i = (PostMessage cmd1.hwnd, WM_LBUTTONDOWN, 0&, 0&)
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, 0&, 0&
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, 0, 0
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, 0, ByVal 0&
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, 0&, ByVal 0&
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, ByVal 0&, ByVal 0&
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, ByVal 0&, 0&
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, 0&, MAKEPARAM(180, 290)
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, 0&, MAKEPARAM(18, 29)
或者再传送一个MK_CONTROL,问题依旧....
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, MK_CONTROL, 0
PostMessage cmd1.hwnd, WM_LBUTTONDOWN, MK_CONTROL,MAKEPARAM(18, 29)
或者不传送给button,传送给form!,问题依旧..真是打击人啊.%^$%#@#$..>>>>>
PostMessage frmMain.hwnd, WM_LBUTTONDOWN, 0, 0
PostMessage frmMain.hwnd, WM_LBUTTONDOWN, 0, ByVal 0
PostMessage frmMain.hwnd, WM_LBUTTONDOWN, 0, ByVal 0&
DLL 调用约定错误真是让人抓狂的.......
Private Sub lblSend_Click()
Dim i As Long
i = PostMessage(cmd1.hwnd, WM_LBUTTONDOWN, 0, 0)
I = PostMessage(cmd1.hwnd, WM_LBUTTONUP, 0, 0)
End Sub
实时错误'49':
DLL 调用约定错误
实时错误'49':
DLL 调用约定错误
继续抓狂ing................
这个令我感极度抓狂的问题终于得以告一段落了。
顺便公布下造成这个问题的终极原因
问题的根源。。就是。。函数声明没有写返回值的数据类型。。(As Long)
在输入函数声明时,函数是从windows API 参考上拷下来的 chm红色版本那个
如果各位朋友也是用这个版本的话,要注意加上 as + 数据类型哦