2017-09-26 22 views
1

我想在VCL中使用FMX。看起来有一个容器TFireMonkeyContainer它。我在它生成的hpp上收到错误“不是允许的类型”。下面是它的错误看起来类似的代码C++项目中的TFireMonkeyContainer

__property HWND FireMonkeyFormHandle = {read=GetHostedFMXFormWindowHandle, nodefault}; 

基本上我编译从GitHub 10.1西雅图项目,并用它产生的BPL和HPP。

有没有人在C++中使用过这个容器?

谢谢。

+1

'FireMonkeyFormHandle'被声明为'published'。对于已发布的属性,“HWND”不是有效的数据类型。此外,该属性是只读的,这是发布属性的另一个禁止。作者犯了一个编码错误。修改'Parnassus.FMXContainer.pas'使'FireMonkeyFormHandle'为'public'而不是'published',然后重新编译。 –

+0

这需要处理该错误。但是现在我得到了fmx和vcl模糊错误。使用完全作用域类型似乎不能解决它。 IDE防止保存并且dfm不会出现。也许fmx和vcl不能在C++ builder中混合使用。谢谢。 –

+1

德尔福产生的HPP文件有'使用命名空间...'陈述他们的底部,所以它可能是同名VCL和FMX符号被倒入全局命名空间,因此歧义。查看HPP文件以查看它们使用的具体'NO_USING_NAMESPACE _...'条件,然后根据需要在C++项目选项中定义这些条件。或者,只需定义“DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE”条件。 –

回答

1

这是在最近的更新中解决的,现在可以在C++项目中使用了。在包含VCL和FMX标题时(如在您的定义NO_USING_NAMESPACE_FMX_FORMS评论中),您可能需要小心。请拉the latest from github