通过Tabstrip_Click事件启动新表单时,首先在父表单上注册鼠标

时间:2010-11-05 20:44:42

标签: vb6

我有以下代码:

Private Sub Tabstrip1_Click()
   Form2.Show vbModal, Me
end sub

Form2只有一个关闭按钮。除非form2位于调用表单之上,否则Form2上的第一个鼠标点击没有可见的效果,然后会出现一个错误,即模态表单无法显示两次!那么会发生的是第一次鼠标点击在父表单上注册。我尝试了所有类型的解决方法(主要是通过Tabstrip1_GotFocus),但是如果不做一些非常复杂的事情我就无法工作。

有简单的解决方案吗?

2 个答案:

答案 0 :(得分:4)

使用此代码修复鼠标捕获问题TabStrip控件在您的特定情况下展示

Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Sub TabStrip1_Click()
    Call ReleaseCapture
    Form2.Show vbModal, Me
End Sub

答案 1 :(得分:0)

此处描述了问题: https://support.microsoft.com/en-us/kb/262441

如上所述,TabStrip(假设只包含Mscomctl.ocx SP3中包含的版本)不会释放鼠标捕获,因此您必须在显示模式窗体之前调用ReleaseCapture



在旁边:

我刚刚编辑了之前的正确答案,但编辑被拒绝了。
"介绍外部依赖" ???根据我的经验,权威引用并不是件坏事,我认为这个链接对某人有用。