如何处理从视图 class 发送到对话框的消息?
How to handle message send from view class to dialog?
我有手动视图、文档和大型机的 SDI 应用程序。在视图 class 中,我有打开另一个对话框的按钮,比如说租船对话框。我想打开该对话框并从视图发送初始值以在对话框中分配一些变量,但我无法在对话框 class 中捕获消息事件。下面是我的代码:
// 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() 函数中设置了断点,但它无法跳转到那里。
任何想法将不胜感激。
要为您的对话成员之一分配初始值,您不需要向其发送消息。
直接赋值即可:
所以
GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
你应该有这样的东西:
charteringDlg->thevalueorwhatever = 12;
顺便说一句:
GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
无论如何都是错误的,您应该将消息发送到对话框而不是主 window:
charteringDlg->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
我有手动视图、文档和大型机的 SDI 应用程序。在视图 class 中,我有打开另一个对话框的按钮,比如说租船对话框。我想打开该对话框并从视图发送初始值以在对话框中分配一些变量,但我无法在对话框 class 中捕获消息事件。下面是我的代码:
// 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() 函数中设置了断点,但它无法跳转到那里。 任何想法将不胜感激。
要为您的对话成员之一分配初始值,您不需要向其发送消息。
直接赋值即可:
所以
GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
你应该有这样的东西:
charteringDlg->thevalueorwhatever = 12;
顺便说一句:
GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
无论如何都是错误的,您应该将消息发送到对话框而不是主 window:
charteringDlg->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);