可能重复:
Why does GetSafeHwnd() return zero in an ActiveX control?
我正在构建一个ActiveX通信组件。我有一个班级,实际上为我做每一个沟通的事情。我必须用Hwnd句柄实例化这个类,以便让类将消息传递给它的所有者(所有者派生自COleControl)。
但是当我使用delphi的app构建中使用ActiveX控件时,this->GetSafeHwnd();
返回的句柄返回NULL。 ('this'指针是我从COleControl中获得的类的一个实例)
有人有解决方案吗?
答案 0 :(得分:1)
可能你的控制允许无窗激活。这种控制可以在父窗口内呈现,而不具有自己的窗口。不同的容器可以将此控件创建为窗口或无窗口。
禁用控件的“允许无窗口激活”属性。但是,这会降低控制渲染性能。您可以为内部通信创建另一个不可见窗口,并且仍允许无窗口激活。
详细信息:请参阅COleControl :: GetControlFlags和windowlessActivate标志。