Связь между Python и C ++ через SendMessage

Я использую Python2.7 и Visual Studio 2010 на Windows 7 Professional.

Я пытаюсь использовать SendMessage для отправки объекта copydatastruct в программу MFC C ++. Программа на C ++ получает сообщение нормально, однако я не могу определить правильный тип данных для атрибута dwData.

Атрибут dwData проверяется по переменным, объявленным в коде C ++:

#define RUN_ASYNC 0x8001
#define RUN_SYNC 0x8002
...
#define RUN_MCS 0x8012
...

Функция OnCopyData в коде C ++ имеет базовый оператор switch:

...
switch(pCopyDataStruct->dwData)
{
case RUN_ASYNC:
{
// DO STUFF
}
break;
case RUN_SYNC:
{
// DO STUFF
}
break;
...
case RUN_MCS:
{
// DO STUFF
}
break;
...
default:
TRACE(_T("OnCopyData unknown function"))
break;
}

Так как я не отправляю его должным образом, он никогда не попадает в соответствующий регистр и заканчивается использованием по умолчанию.

Я устанавливаю copydatastruct в моем скрипте Python как:

class COPYDATASTRUCT(Structure):
_fields_ = [("dwData", c_ulong),
("cbData", c_uint),
("lpData", c_void_p)]

и объявив переменные как:

RUN_ASYNC = 8001
RUN_SYNC = 8002
...
RUN_MCS = 8012
...

Это отправляет правильное четырехзначное число в программу C ++, но оно не распознается должным образом для случая переключения.

Когда я объявил переменные в скрипте Python как:

RUN_ASYNC = 0x8001
RUN_SYNC = 0x8002
...
RUN_MCS = 0x8012
...

Программа на C ++ получает число типа 32786, которое, конечно же, не работает с оператором switch.

Как мне нужно объявить переменные, которые я собираюсь отправить программе C ++, в атрибуте dwData, чтобы заставить их работать с кодом C ++. У меня такое чувство, что я действительно тупой и упускаю что-то относительно простое.

Заранее спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]