PostMessage — 如何发送 int 数组?

PostMessage — how to send int array?

如何发送整型数组:

int *pars = new int[4];
pars[0] = 87675;
//...
pars[3] = 1024;
PostMessage(?);

然后正确接收并清空内存:

LONG OnMessage(WPARAM wParam, LPARAM lParam) {
//?
}

一切都在一个过程中。

在单个进程中,您可以通过 LPARAM.

传递地址
    int *pars = new int[4];
    pars[0] = 87675;
    //...
    pars[3] = 1024;
    PostMessage(hWnd, WM_MY_CUSTOM_MSG, 0, (LPARAM)pars);

然后取自[​​=14=],使用后免费:

LONG OnMessage(WPARAM wParam, LPARAM lParam) {
    int *pars = (int*)lParam;

    // use it ...

    delete[] pars;
}

不理想,但这是 WinAPI ...

对于更类似于 RAII 的方法,将指针包装在 unique_ptr:

LONG OnMessage(WPARAM wParam, LPARAM lParam) {
    std::unique_ptr<int[]> pars((int*)lParam);

    // use it normally ...

    // it's freed automatically
}