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
}
如何发送整型数组:
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
}