0

我在 Windows 7 Professional 上使用 Python2.7 和 Visual Studio 2010。

我正在尝试使用 SendMessage 将 copydatastruct 对象发送到 MFC C++ 程序。C++ 程序很好地接收到消息,但是,我无法确定 dwData 属性的正确数据类型。

正在根据 C++ 代码中声明的变量检查 dwData 属性:

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

C++ 代码中的 OnCopyData 函数有一个基本的 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;
}

由于我没有正确发送它,它永远不会遇到正确的情况并最终使用默认值。

我在我的 python 脚本中将 copydatastruct 设置为:

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

并将变量声明为:

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

这会将正确的四位数字发送到 C++ 程序,但不能正确识别 switch case。

当我将python脚本中的变量声明为:

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

C++ 程序接收到一个像 32786 这样的数字,当然,它不适用于 switch 语句。

我如何需要在 dwData 属性中声明要发送到 C++ 程序的变量,以使它们与 C++ 代码一起使用。我有一种感觉,我真的很愚蠢,并且错过了一些相对简单的东西。

提前致谢。

4

0 回答 0