vb实现键盘控制图形移动 10
2个回答
展开全部
没有装VB6,提供一下方法,希望你自己写代码.
SetWindowLong设置窗口消息处理新函数地址.指向自己定义的消息处理函数.
自己定义的消息处理函数中获取 上 下 左 右 方向键按下产生的消息.msg的值是WM_COMMAND.怎么判断是方向键,查MSDN中关于WM_COMMAND消息的介绍.
获取图形的RECT结构值:GetWindowRect(图形控件的句柄,RECT结构指针).
左方向时,将RECT的left成员的值减去一个值,这个值是移动时的像素数.
右方向时,将RECT的left成员的值加上一个值,同上.
上方向时,将RECT的top成员的值减去一个值,同上.
下方向时,将RECT的top成员的值加上一个值,同上.
然后使用SetWindowPos(hPicture,0,Rect.left,Rect.top,0,0,SWP_NOSIZE)进行图形控件的位置设置.hPicture指图形控件的句柄.SWP_NOSIZE指不更改控件尺寸.
步骤就是这样,优点是,即使窗体上有其他控件,焦点在其他控件上,主窗体依然可以通过方向键控制图形的移动.因为所有子控件收到按键消息时,都会转发WM_COMMAND消息给主窗体.部分子控件可能不接收按键消息.
SetWindowLong设置窗口消息处理新函数地址.指向自己定义的消息处理函数.
自己定义的消息处理函数中获取 上 下 左 右 方向键按下产生的消息.msg的值是WM_COMMAND.怎么判断是方向键,查MSDN中关于WM_COMMAND消息的介绍.
获取图形的RECT结构值:GetWindowRect(图形控件的句柄,RECT结构指针).
左方向时,将RECT的left成员的值减去一个值,这个值是移动时的像素数.
右方向时,将RECT的left成员的值加上一个值,同上.
上方向时,将RECT的top成员的值减去一个值,同上.
下方向时,将RECT的top成员的值加上一个值,同上.
然后使用SetWindowPos(hPicture,0,Rect.left,Rect.top,0,0,SWP_NOSIZE)进行图形控件的位置设置.hPicture指图形控件的句柄.SWP_NOSIZE指不更改控件尺寸.
步骤就是这样,优点是,即使窗体上有其他控件,焦点在其他控件上,主窗体依然可以通过方向键控制图形的移动.因为所有子控件收到按键消息时,都会转发WM_COMMAND消息给主窗体.部分子控件可能不接收按键消息.
展开全部
你的图片控件Image1,控制Image1的控件Picture1。
代码
Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
If Keycode = 37 then Image1.Left = Image1.Left - 100
If Keycode = 38 then Image1.Top = Image1.Top - 100
If Keycode = 39 then Image1.Left = Image1.Left + 100
If Keycode = 40 then Image1.Top = Image1.Top + 100
End Sub
按键盘上方向键即可移动
代码
Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
If Keycode = 37 then Image1.Left = Image1.Left - 100
If Keycode = 38 then Image1.Top = Image1.Top - 100
If Keycode = 39 then Image1.Left = Image1.Left + 100
If Keycode = 40 then Image1.Top = Image1.Top + 100
End Sub
按键盘上方向键即可移动
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询