我用sendmessage移动picturebox控件,错在哪里,为何不能移动?

badboy168 2005-01-24 08:06:37
option explicit
Private Declare Function ReleaseCapture Lib “user32” () As Long
Private Declare Function SendMessage Lib “user32” Alias “SendMessageA” (ByVal hwnd As Long, ByVal wMsg As Long,

ByVal wParam As Long, lParam As Any) As Long

Const WM_SYSCOMMAND = &H112
Const SC_MOVE = &HF012

Private Sub Form1_Load()
picture1.dragmode=1
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then

'为当前的应用程序释放鼠标捕获
ReleaseCapture

'移动控件
SendMessage picturebox1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End If
End Sub


在移动时picturebox的位置没有变,还是在原地不动~!请朋友们帮我解决一下,谢谢
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
badboy168 2005-01-25
  • 打赏
  • 举报
回复
有没有介绍这些WM_NCLBUTTONDOWN和 HTCAPTION等等常量使用的义意和说明的相关材料呀
你解决的很明白 ,只是不明白他们具体是什么意思,下午结贴
homezj 2005-01-24
  • 打赏
  • 举报
回复
这与dragmode=1没关系,不用设置,用默认的0就行
homezj 2005-01-24
  • 打赏
  • 举报
回复
呵呵!刚才正忙,没去找声明,是这样
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

就是在窗体非客户区,产生一次左键按下HitTestCaption的效果,相当于按住了标题栏啦,明白了吧?
badboy168 2005-01-24
  • 打赏
  • 举报
回复
homezj(小吉) :
第一、不用设置dragmode吗?
第二、&HA1,2,0 是什么意思,能解述一下吗
homezj 2005-01-24
  • 打赏
  • 举报
回复
第一、这种方式与拖窗口一样,不会设置dragmode=1
第二、消息发错了。请换
SendMessage PictureBox1.hWnd, &HA1, 2, 0

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧