代码之家  ›  专栏  ›  技术社区  ›  JimEvans

我可以将STL数据结构传递给Win32消息循环吗?

  •  2
  • JimEvans  · 技术社区  · 14 年前

    typedef struct tagCOMMAND
    {
        std::map<std::string, std::string> locator;
        std::string body;
    } COMMAND, *LPCOMMAND;
    

    然后将结构传递给消息,如下所示:

    LPCOMMAND cmd;
    cmd->body = "Hello";
    cmd->locator["Hello"] = "World";
    PostThreadMessage(dwThread, MY_CUSTOM_MESSAGE, NULL, (LPARAM)cmd);
    

    如果这是好的,谁负责释放内存,调用线程还是工作线程?

    注意:我的印象是使用Windows消息循环是这里最简单和最好的方法,但如果更合适的话,我并不反对使用类似Boost库的方法。然而,这是一个特定于Windows的应用程序,并且只能在Windows上运行,所以跨平台兼容性并不是我非常关心的问题。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Lior Kogan    14 年前

    只要有一个接收器(不多也不少),将指向对象的指针作为异步消息参数传递是正常的。