SetWindowLong問題

cjqzdm2008 2010-07-21 10:30:39
hi,各位好我有一個問題,我有兩個模塊
1.
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

'禁止本窗体拥有输入焦点的常数
Private Const WS_DISABLED = &H8000000 '创建一个初始被禁止的窗口
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE = (-16)

Public Sub DeclineKeyEvent(frm As Form)

Dim lngWinStyle As Long

lngWinStyle = GetWindowLong(frm.hwnd, GWL_EXSTYLE)
SetWindowLong frm.hwnd, GWL_EXSTYLE, lngWinStyle Xor WS_DISABLED

End Sub

2.
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const HWND_TOPMOST = -1 '将窗口置于列表顶部,并位于任何最顶部窗口的前面
Private Const HWND_NOTOPMOST = -2 '将窗口置于列表顶部,并位于任何最顶部窗口的后面
Private Const SWP_NOSIZE = &H1 '保持当前大小(cx和cy被忽略)
Private Const SWP_NOMOVE = &H2 '保持当前位置(cx和cy被忽略)

Public Sub OnTop(frmHwnd As Long, Setting As Boolean)

SetWindowPos frmHwnd, IIf(Setting, HWND_TOPMOST, HWND_NOTOPMOST), 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

End Sub

然後我在窗體中調用:
Private Sub Form_Load()
Me.Show
Call DeclineKeyEvent(Me)
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call DrapWindow(Me.hwnd)
End Sub

Private Sub Form_Paint()
Call OnTop(Me.hwnd, True)
End Sub


可以達到置頂和獲得不到焦點的目的,但是現在的問題是,在移動窗體的時候,不能適時移動了,只能在放開鼠標之後窗體才顯示,請問是什麽原因呢?

thx
...全文
131 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjqzdm2008 2010-07-22
  • 打赏
  • 举报
回复
以後不在這裡問問題了
cjqzdm2008 2010-07-21
  • 打赏
  • 举报
回复
好像和其他的沒有關係,就是使用GetWindowLong之後就不行了
lyserver 2010-07-21
  • 打赏
  • 举报
回复
不妨试试在移动前取消WS_DISABLED风格,移动后还原WS_DISABLED风格。
lyserver 2010-07-21
  • 打赏
  • 举报
回复
DrapWindow的代码是什么?
cjqzdm2008 2010-07-21
  • 打赏
  • 举报
回复
怎麼沒有人回覆我呢?

1,488

社区成员

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

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