У вас правильная идея, но вы используете неправильное сообщение. Вам нужно присвоить значение от RegisterWindowMessage()
до cp_struct.dwData
, назначить длину байта ваших данных cp_struct.cdData
, а затем отправить cp_struct
с помощью сообщения WM_COPYDATA
(вам нужно использовать фактическое HWND
другого приложения, не HWND_BROADCAST
), например:
msg_number = RegisterWindowMessage(MY_WINDOW_MSG);
if (msg_number != 0)
{
cp_struct.dwData = msg_number;
cp_struct.lpData = &fig;
cp_struct.cbData = sizeof(Figure);
SendMessage(hWnd, WM_COPYDATA, 0, (LPARAM)&cp_struct);
}
.
case WM_CREATE:
{
msg_number = RegisterWindowMessage(MY_WINDOW_MSG);
break;
}
case WM_COPYDATA:
{
reciver_struct = (PCOPYDATASTRUCT)(lParam);
if ((msg_number != 0) && (reciver_struct->dwData == msg_number))
{
Figure *figure = (Figure*) cp_struct.lpData;
... use figure as needed ...
return 0;
}
... pass the message to a default handler for processing ...
break;
}