如题!!!
解决方案 »
- Access 表达式 问题
- 关于MSFlexGrid批量删除的问题.
- 一句SQL语句,加了 group by 和 order by 就出错,怎么改?是用 access 做数据库
- 还是关于COMBO,TEXTBOX与MSHFLEXGRID表格结合使用的问题
- VB有没有返回变量或变量类型所占字节数的函数呢?
- odbc显示数据用什么控制方便
- 请教:print语句怎么才能打印到A4纸上面呀!????
- 用WebBrowser获得链接名称
- 已知一文本框text1的句柄,如何得到其中的内容??online~~~~~~~~~waiting~~~~~~~~
- 今天下午就可以上车了,高兴,散分!
- 一个错误的处理向各位高手请教???
- 在VB分布式数据库中并发问题
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 Const GWL_WNDPROC = (-4)
Public Const WM_RBUTTONUP = &H205
Public OldComboProc As Long
Public MousePoint As POINTAPI
Public Sub Initialize(hWnd As Long)
OldComboProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf NewComboProc)
End Sub
Public Function NewComboProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '处理按钮消息
Select Case Msg
Case WM_RBUTTONUP
Form1.PopupMenu Form1.Menu, , Form1.Combo1.Left, Form1.Combo1.Top
End Select
NewComboProc = CallWindowProc(OldComboProc, hWnd, Msg, wParam, lParam)
End Function最后在窗口代码里:
Private Sub Form_Load()
Combo1.AddItem "Temp"
Combo1.AddItem "Temp2"
Initialize Combo1.hWnd
End Sub
这样就成功了,但现在还有两个问题没有解决,一是菜单弹出的位置不够准确,用GetCursorPos我不记得如何能获取鼠标在窗内的坐标了,二是现在只能在当选择了某一项时按右键才能弹出,而不是在选择项目的时候能弹出,因为那个时候COMBO