Как обработать отправку сообщения из класса представления в диалог?
У меня есть приложение SDI, которое вручную, док и мэйнфрейм. В классе просмотра у меня есть кнопка, чтобы открыть другой диалог, скажем, диалог Фрахтования. Я хотел бы открыть это диалоговое окно и отправить начальное значение из представления, чтобы назначить некоторую переменную в диалоге, но я не могу поймать событие сообщения в классе диалога. Ниже, как мой код:
// button onclick to show new dialog
charteringDlg = new CharteringDlg();
// show chartering dialog
if(charteringDlg->Create(IDD_DIALOG_CHATTERING, GetDesktopWindow()))
{
bChartering = true;
charteringDlg->MoveWindow(900,300,450,300);
charteringDlg->ShowWindow(SW_SHOW);
int temp = 12;
GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
}
и в диалоге фрахтования я обрабатываю сообщение как ниже
ON_MESSAGE(UWM_MYMESSAGE_CHARTERING, &CharteringDlg::OnSetShowTemp)
фрахтование
LRESULT CharteringDlg::OnSetShowTemp(WPARAM, LPARAM lParam)
{
int * s = (int *)lParam;
return 0;
}
Я установил точку останова на функцию OnSetShowTemp(), но она не может перейти туда. Любая идея будет с благодарностью.
1 ответ
Для назначения начального значения одному из участников вашего диалога вам не нужно отправлять ему сообщение.
Вы можете просто присвоить значение напрямую:
Так что вместо
GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
у вас должно быть что-то вроде:
charteringDlg->thevalueorwhatever = 12;
И кстати:
GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
В любом случае, вы должны отправить сообщение в диалог, а не в главное окно:
charteringDlg->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);