Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Translating C++ Excel RTD Server (DLL) to Qt ActiveX DLL Server
Forum Updated to NodeBB v4.3 + New Features

Translating C++ Excel RTD Server (DLL) to Qt ActiveX DLL Server

Scheduled Pinned Locked Moved Unsolved General and Desktop
qt5.12.xactivexvisual c++excelactiveqt
1 Posts 1 Posters 653 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    MoAboulmagd
    wrote on last edited by
    #1

    Hi,

    I have a Microsoft Office Excel RTD (real-time data) server in Visual C++ as a DLL (in-process server), and it works fine when I use it in Excel 2016.

    The issue is that I have to integrate it into an already existing Qt5 application (trading platform). The end-goal is to allow traders to import some data into excel and the data (obviously should be updated in near real-time).

    I've looked at this documentation, but it skims over instructions for building the server. I do not need ActiveX controls at least for now (which is sadly what most of the above link focuses on). It will just be a DLL that gives real-time data (on updateNotify()) to the cells that have an RTD call to it. Furthermore, my Qt5 project uses cMake as the build system, as opposed to qMake.

    I don't mind getting a stand-alone Qt5 version of this server up and running first, and then converting it into cMake (shouldn't be too difficult).

    I am having trouble with converting COM objects into Qt-like objects...

    For example:

    struct __declspec(uuid("a43788c1-d91b-11d3-8f39-00c04f3651b8"))
        IRTDUpdateEvent : IDispatch
    {
        //
        // Raw methods provided by interface
        //
    
        virtual HRESULT __stdcall UpdateNotify() = 0;
        virtual HRESULT __stdcall get_HeartbeatInterval(
            /*[out,retval]*/ long* plRetVal) = 0;
        virtual HRESULT __stdcall put_HeartbeatInterval(
            /*[in]*/ long plRetVal) = 0;
        virtual HRESULT __stdcall Disconnect() = 0;
    };
    
    struct __declspec(uuid("ec0e6191-db51-11d3-8f3e-00c04f3651b8"))
        IRtdServer : IDispatch
    {
        //
        // Raw methods provided by interface
        //
    
        virtual HRESULT __stdcall ServerStart(
            /*[in]*/ struct IRTDUpdateEvent* CallbackObject,
            /*[out,retval]*/ long* pfRes) = 0;
        virtual HRESULT __stdcall ConnectData(
            /*[in]*/ long TopicID,
            /*[in]*/ SAFEARRAY** Strings,
            /*[in,out]*/ VARIANT_BOOL* GetNewValues,
            /*[out,retval]*/ VARIANT* pvarOut) = 0;
        virtual HRESULT __stdcall RefreshData(
            /*[in,out]*/ long* TopicCount,
            /*[out,retval]*/ SAFEARRAY** parrayOut) = 0;
        virtual HRESULT __stdcall DisconnectData(
            /*[in]*/ long TopicID) = 0;
        virtual HRESULT __stdcall Heartbeat(
            /*[out,retval]*/ long* pfRes) = 0;
        virtual HRESULT __stdcall ServerTerminate() = 0;
    };
    

    My server is essentially based off of this, with minor differences.

    Any help would be greatly appreciated.

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved