无窗口激活ActiveX控件的bug

描述如下:
新建一个VB可执行文件的项目,拖放一个Label到Form上,设置Form的KeyPreview属性为True
并处理Form的KeyDown事件:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

    Label1.Caption = Label1.Caption & Chr(KeyCode)

End Sub
一切正常,Label1的Caption会显示你敲击的字符。
新建一个MFC ActiveX控件,在“控件设置”中选择“无窗口激活”,
编译之后,将控件加入VB项目,拖放到Form上,
再次运行VB项目,敲击键盘,字符会重复出现。

回到ActiveX控件项目,注释掉GetControlFlags函数的这一行:
dwFlags |= windowlessActivate;        (无窗口激活的关键)

编译运行,VB项目再次恢复正常。

令人郁闷的bug,不知道有否高手能否确认并提供解决办法?

原文地址:https://www.cnblogs.com/s5689412/p/168652.html