代码之家  ›  专栏  ›  技术社区  ›  Yira

如何自定义“数据链接属性”对话框中的“连接”选项卡?

  •  1
  • Yira  · 技术社区  · 7 年前

    我正在开发一个OLEDB提供程序,目前它利用了由提供的“默认”连接对话框 IDBPromptInitialize::PromptDataSource() this 。当我将我的提供者与某些客户端工具(如MS Excel或.udl文件)一起使用时,会出现相同的UI。我现在计划创建自己的UI。

    在“提供程序”选项卡中选择不同的OLEDB提供程序时,我注意到,对于其中一些提供程序,连接选项卡看起来非常不同,例如。 SQL Server Native Client 11.0

    因此,对其进行定制似乎在技术上是可行的。我的问题是:怎么做?

    注意:我知道我可以把自己的UI放在一起,我可以随时弹出它。但这不会神奇地集成到数据链接属性对话框的连接选项卡中,是吗?

    谢谢


    编辑

    ISpecifyPropertyPages::GetPages OleCreatePropertyFrame 如回答中所述。

    GetPages 成功调用了,但是只调用了我的ConnectionTab的构造函数(没有任何错误),然后选项卡立即消失(没有崩溃!)。不 IPropertyPage 方法,也没有调用任何其他内容。 知道问题出在哪里吗?


    好的,我知道了。在我的AdvancedTab课程中,我错过了 COM_INTERFACE_ENTRY(IPersistPropertyBag) 在COM映射中。我把太多精力放在连接选项卡上,因为我想先让它工作。

    #define _ATL_DEBUG_QI 之前 #include <atlcom.h> QueryInterface 调用失败 IPersistPropertyBag .

    1 回复  |  直到 7 年前
        1
  •  0
  •   Simon Mourier    7 年前

    这在这里描述: Interfaces Implemented by the Provider

    实现的OLEDB提供程序的对象 IIDBInitialize IDBProperties IServiceProvider .

    系统将称之为 实施 OLEDB_SVC_DSLPropertyPages (来自MSDAGUID.H)作为服务guid,并且 ISpecifyPropertyPages 作为接口ID。

    GUID值数组,其中每个GUID指定每个GUID的CLSID 属性页,该页可以显示在此的属性页中 恰好由两个表示可扩展属性的CLSID组成的数组 页码:第一个替换 选项卡,第二个 更换 这些页面必须正确注册,以便

    property pages .