SendMessage с int в качестве параметра для lParam или wParam?

Скажите, что я хочу отправить сообщение на мой WndProc, но я также хочу отправить целое число.

SendMessage (m_hWnd, WM_DISPLAYCHANGE, NULL, int?);

Мой WndProc получит это правильно? Затем я хочу отправить это lParam (целое число) в функцию.

case WM_DISPLAYCHANGE:
{
pD2DResources->OnRender(lParam);
}
break;

Как отправить целое число как lParam или wParam, а затем повторно отправить это целое число в функцию в качестве параметра?

1

Решение

LPARAM и WPARAM — это просто определение типа надолго. Таким образом, int может быть отправлен как есть.

SendMessage(m_hWnd, WM_DISPLAYCHANGE, NULL, (LPARAM)yourInt)

В вашем wnd proc вы можете сделать

pD2DResource->Render((int)lParam)

Поскольку вы отправляете эту пользовательскую информацию как часть стандартных сообщений Windows (номер сообщения ниже WM_USER), вы должны быть осторожны, чтобы не передавать значения LPARAM, полученные в вашем оконном proc, непосредственно в DefWindowProc (proc по умолчанию для окна) — потому что yourInt может иметь особое значение для этого конкретного стандартного сообщения Windows. Либо вы можете передать фиксированное значение из вашего оконного процесса в DefWindowProc или посмотреть другие способы передачи более 4 байтов информации через LPARAM / WPARAM. Поскольку SendMessage является синхронным, вы можете передать адрес структуры, как это делают многие стандартные сообщения Windows.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]