北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
看到别人用EXCEL的用户窗体实现了鼠标画线,效果较好.
可以是我用同样的代码在ACCESS中调试却不能通过?压根就画不出线.
不知道为什么?是不是窗口句柄的取值不对?
我把EXCEL窗体中的全部代码一起贴出来.请高人指点:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Ihwnd As Long, Idc As Long, Ipo As POINTAPI
'====
Private Sub CommandButton1_Click()
Dim pt As POINTAPI
Ipo.x = 5
Ipo.y = 10
x = 500
y = 500
MoveToEx Idc, Ipo.x, Ipo.y, pt
LineTo Idc, x * 4 / 3, y * 4 / 3
End Sub
Private Sub UserForm_Initialize()
Ihwnd = FindWindow(vbNullString, Me.Caption)
Debug.Print Ihwnd
Idc = GetDC(Ihwnd)
End Sub
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
Ipo.x = x * 4 / 3
Ipo.y = y * 4 / 3
End Sub
Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
Dim pt As POINTAPI
MoveToEx Idc, Ipo.x, Ipo.y, pt
LineTo Idc, x * 4 / 3, y * 4 / 3
End Sub