COM: Как передать аргумент enum в методе Invoke (C ++) - PullRequest
0 голосов
/ 24 мая 2018

Я собираюсь вызвать метод COM в коде C ++.Метод COM требует передать аргумент enum.Тип enum также определен в библиотеке COM.

CComDispatchDriver object;
object.CoCreateInstance(L"Server.RequestManager");

const int NUM_PARAMS = 1;
// The argument actually should be a enum type, but I don't know how to do that.
CComVariant vParams[NUM_PARAMS] = {0};  

CComVariant results;
::VariantInit(&results);
HRESULT hr = session.InvokeN(L"Method", vParams, NUM_PARAMS, &results);



// COM definition is something like this

//
// Type library items
//

enum __declspec(uuid("xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"))
DataType
{
    DataType_Insert = 0,
    DataType_Update = 1,
    DataType_Delete = 2
};


struct __declspec(uuid("xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"))
IRequestManager : IDispatch
{
    //
    // Wrapper methods for error-handling
    //

    IRequestPtr CreateMethod (enum DataType dataType );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...