- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我继承了一个使用 Ole 和 ActiveX 工具的旧项目。编译会在 PROP_ENTRY 宏上给出弃用警告,并用 PROP_ENTRY_TYPE 替换,但它需要第 4 个参数。我找到了一个类型列表,如 VT_BSTR、VT_UNIT、VT_UNKNOWN 等,但我不清楚如何确定这些类型应该是什么。由于旧的宏不需要类型,在旧的处理方式中是否有我可以使用的默认类型?如果做不到这一点,有人对这些项目的类型有什么建议吗?我尝试对所有内容都使用 VT_BSTR,因为大多数值可能是(?)字符串,但这在某些 ActiveX 内容中会失败;也试过 VT_UNKNOWN。建议表示赞赏。使用旧代码确实可以运行(有一些问题),但是能够将我们的代码库向前移动会很好。谢谢,肯
BEGIN_PROPERTY_MAP(CCiButton)
#if 1
// old style
PROP_ENTRY("Caption", DISPID_CAPTION, CLSID_NULL)
PROP_ENTRY("Back Color", DISPID_BACKCOLOR, CLSID_StockColorPage)
PROP_ENTRY("Fill Color", DISPID_FILLCOLOR, CLSID_StockColorPage)
PROP_ENTRY("Font", DISPID_FONT, CLSID_StockFontPage)
PROP_ENTRY("Picture", DISPID_PICTURE, CLSID_StockPicturePage)
PROP_ENTRY("Button Style", 1, CLSID_CiButtonProp)
PROP_ENTRY("Text Color", 2, CLSID_StockColorPage)
PROP_ENTRY("Text Shadow Color", 3, CLSID_StockColorPage)
PROP_ENTRY("Tool Tip Text", 4, CLSID_CiButtonProp)
PROP_ENTRY("Disabled Picture", 5, CLSID_StockPicturePage)
PROP_ENTRY("Enabled", DISPID_ENABLED, CLSID_NULL)
#else
// new style, fails.
PROP_ENTRY_TYPE("Caption", DISPID_CAPTION, CLSID_NULL, VT_UNKNOWN)
PROP_ENTRY_TYPE("Back Color", DISPID_BACKCOLOR, CLSID_StockColorPage, VT_UNKNOWN)
PROP_ENTRY_TYPE("Fill Color", DISPID_FILLCOLOR, CLSID_StockColorPage, VT_UNKNOWN)
PROP_ENTRY_TYPE("Font", DISPID_FONT, CLSID_StockFontPage, VT_UNKNOWN)
PROP_ENTRY_TYPE("Picture", DISPID_PICTURE, CLSID_StockPicturePage, VT_UNKNOWN)
PROP_ENTRY_TYPE("Button Style", 1, CLSID_CiButtonProp, VT_UNKNOWN)
PROP_ENTRY_TYPE("Text Color", 2, CLSID_StockColorPage, VT_UNKNOWN)
PROP_ENTRY_TYPE("Text Shadow Color", 3, CLSID_StockColorPage, VT_UNKNOWN)
PROP_ENTRY_TYPE("Tool Tip Text", 4, CLSID_CiButtonProp, VT_UNKNOWN)
PROP_ENTRY_TYPE("Disabled Picture", 5, CLSID_StockPicturePage, VT_UNKNOWN)
PROP_ENTRY_TYPE("Enabled", DISPID_ENABLED, CLSID_NULL, VT_UNKNOWN)
#endif
END_PROPERTY_MAP()
最佳答案
需要作为第三个参数的变体类型是您正在使用的属性返回值的类型
例如 PROP_ENTRY_TYPE("Enabled", DISPID_ENABLED, CLSID_NULL, VT_BOOL)
现在,如果您不确定应该发送的数据类型是什么,那么您可以传递 VT_EMPTY。这样做的原因是宏 PROP_ENTRY 和 PROP_ENTRY_TYPE 都在内部调用相同的 API,该 API 将变体类型作为参数之一。
在 PROP_ENTRY_TYPE 的情况下,传递的变体类型是在宏中传递的类型。
在 PROP_ENTRY 的情况下,传递的变体类型是 VT_EMPTY。因此,您可以直接在 PROP_ENTRY_TYPE 中传递 VT_EMPTY 以避免此问题。
例如 PROP_ENTRY_TYPE("Enabled", DISPID_ENABLED, CLSID_NULL, VT_EMPTY)
问候,里沙布
关于c++ - 从 PROP_ENTRY 转换为 PROP_ENTRY_TYPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8763314/
我继承了一个使用 Ole 和 ActiveX 工具的旧项目。编译会在 PROP_ENTRY 宏上给出弃用警告,并用 PROP_ENTRY_TYPE 替换,但它需要第 4 个参数。我找到了一个类型列表,
我是一名优秀的程序员,十分优秀!