Member 14594285 Ответов: 2

Отправить сообщение родителю


Я написал::

<pre>
GetParent()->SendMessage(FSM_MESSAGE, MAKEWPARAM((WPARAM)& string, 268), 0);





поэтому я посылаю родителю строку со значением 268...сейчас...когда я получаю сообщение У меня есть ошибка:

//case 268:
			
				//pstr = (CString*)wParam;
			

			//	m_Edit.SetWindowText(*pstr);
				
				//break;


Что я уже пробовал:

поэтому я не получаю правильную строку.- как я могу это сделать?

Richard Deeming

Если вы хотите, чтобы кто-то помог вам исправить ошибку, вы должны сказать нам, что это за ошибка.

Нажмите на зеленую ссылку "улучшить вопрос" и обновите свой вопрос, чтобы включить полную информацию об ошибке. Не забудьте указать, к какой строке кода он относится.

Shao Voon Wong

Как вы определяете FSM_MESSAGE?

Shao Voon Wong

ОП любит задавать вопросы по МФЦ. Я советую ему правильно изучать МФЦ по книге.

2 Ответов

Рейтинг:
0

Richard MacCutchan

Я не думаю, что вы можете создать допустимый указатель в качестве младшей части WPARAM. Вы должны изменить свой код на:

GetParent()->SendMessage(FSM_MESSAGE, 268, &string);

И настройте свой обработчик сообщений в Родительском процессе.


CPallini

И установка высокого слова WPARAM на 268 не помогает... :-)
5.

Richard MacCutchan

Спасибо. И особенно когда LPARAM свободен.

Рейтинг:
0

Shao Voon Wong

Определите свой FSM_MESSAGE в pch.h или stdafx.h в зависимости от версии VC++. Убедиться WM_APP+200 еще не используется в вашем проекте.

#define FSM_MESSAGE WM_APP+200

Объявите свою функцию обработчика в заголовке диалогового окна
afx_msg LRESULT OnFsmMessage(WPARAM wparam, LPARAM lparam);

Свяжите свою функцию с FSM_MESSAGE между BEGIN_MESSAGE_MAP и END_MESSAGE_MAP в диалоговом окне cpp.
ON_MESSAGE(FSM_MESSAGE, &CSendMsgToParentExampleDlg::OnFsmMessage)

Реализуйте свою функцию таким образом.
LRESULT CSendMsgToParentExampleDlg::OnFsmMessage(WPARAM wparam, LPARAM lparam)
{
	CString* pStr = reinterpret_cast<CString*>(wparam);

	switch (lparam)
	{
	case 268:
		m_edtText.SetWindowTextW(*pStr);
	}

	delete pStr;

	return 0;
}

Это как отправить сообщение на свой родительский диалог с ребенком.
void ChildDialog::OnBnClickedBtnSendMsgToParent()
{
	CString msg;
	m_edtMsg.GetWindowTextW(msg);

	CString* pStr = new CString(msg); // make a copy else go out of scope

	GetParent()->SendMessage(FSM_MESSAGE, (WPARAM)pStr, 268);
}

Запутался? Взгляните на пример кода на Пример отправки сообщения в родительский диалог в MFC[^]. Загрузите его и играйте с ним.