如何处理从视图类发送到对话框的消息?

时间:2019-01-18 13:56:48

标签: mfc message sdi cview

我有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 :(得分: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);