zoukankan      html  css  js  c++  java
  • winRT Com组件开发流程总结

    winRT Com组件开发:

    1.编辑idl文件,winRT COM的idl文件与win32的idl文件有差异,如下:

    interface ItestWinRTClass;

    runtimeclass testWinRTClass;

    [uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx), version(NTDDI_WIN8), exclusiveto(testWinRTClass)]
    interface ItestWinRTClass : IInspectable
    {
    // Method
    HRESULT SetChange(DWORD dwNewChange);
    }

    [version(NTDDI_WIN8), activatable(NTDDI_WIN8), marshaling_behavior(agile)]
    runtimeclass testWinRTClass
    {
    [default]interface ItestWinRTClass;
    }

    2. 编辑.man文件,将注册信息写入.man文件。

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsRuntimeActivatableClassIDxxxxx

    HKEY_CLASSES_ROOTInterfacexxxxx

    winRT COM中,主要起作用的是HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsRuntimeActivatableClassIDxxxxx这个注册表项,与传统win32的HKEY_CLASSES_ROOTCLSIDxxxxx这个不同,在生成com对象时,主要搜索前一个注册表项,找到com的类和接口。

    3.编写Module文件,将激活类的class factory写入module文件中。

    4.编写xxx.h和xxx.cpp文件,实现类和接口。

    // header file

    class CtestWinRTClass: public RuntimeClass<ItestWinRTClass, FtmBase>
    {
    InspectableClass(RuntimeClass_xxx, PartialTrust);

    public:
    CtestWinRTClass();

    IFACEMETHOD(SetChange)(DWORD dwNewChange) override;

    private:
      int m_test;
    };

    // source file 

    5.编译,生成xxx.h文件和xxx_i.c文件,给其他引用的类使用。

    6.手动将注册表信息导入到target machine中。

    7.将生成的.winmd文件拷贝到target machine中,.winmd文件是新的元数据,供运行时和编译阶段的引用使用,这是winRT的一个特色。

    8.将生成的dll拷贝到target machine,即可运行。

    9.测试,写一个UnitTest程序:

    HRESULT hr;

    ComPtr<ItestWinRTClass> ppiTest;

    hr = ActivateInstance(StringReference(RuntimeClass_xxxx).Get(), ppiTest);

    VERIFY_SUCCEEDED(hr, L"Windows::Foundation::ActivateInstance() xxx is activated");

    hr = ppiTest->SetChange(100);
    VERIFY_SUCCEEDED(hr, L"testWinRTClass->SetChange() calling is OK");

  • 相关阅读:
    Java单链表的实现方法汇总整理
    Java内存模型(JMM)图文并茂,条理清晰
    Java基础知识点整理(2021年最新版)
    Spring常见的77道面试题及答案(2021版)
    Python第二次学习知识点总结
    VUE学习十九,表单输入绑定v-model
    VUE学习十八,事件处理v-on
    VUE学习十七,列表渲染v-for
    VUE学习十五,Class与Style绑定
    VUE学习十四,侦听器
  • 原文地址:https://www.cnblogs.com/codefinder/p/com_programming002.html
Copyright © 2011-2022 走看看