Как обработать отправку сообщения из класса представления в диалог? - PullRequest
0 голосов
/ 18 января 2019

У меня есть приложение 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 Ответ

0 голосов
/ 18 января 2019

Для присвоения начального значения одному из участников вашего диалога вам не нужно отправлять ему сообщение.

Вы можете просто присвоить значение напрямую:

Так что вместо

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);
...