Как обработать отправку сообщения из класса представления в диалог?

У меня есть приложение 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);
Другие вопросы по тегам