mfc 子窗口IDC_EDIT 传值给父窗口IDC_EDIT
时间: 2023-08-04 17:06:53 浏览: 135
MFC子窗口与父窗口之间消息的传递
要将 MFC 子窗口 IDC_EDIT 的值传递给父窗口 IDC_EDIT,可以使用消息机制来实现。
首先,在子窗口的头文件中定义一个自定义的消息 ID,例如:
```
#define WM_UPDATE_PARENT_EDIT (WM_USER + 1)
```
然后,在子窗口的代码中,当 IDC_EDIT 的值发生变化时,发送一个自定义消息给父窗口:
```
// 获取子窗口 IDC_EDIT 的值
CString strValue;
GetDlgItemText(IDC_EDIT, strValue);
// 发送自定义消息给父窗口,同时传递子窗口 IDC_EDIT 的值
GetParent()->SendMessage(WM_UPDATE_PARENT_EDIT, 0, (LPARAM)&strValue);
```
接着,在父窗口的消息映射函数中处理该自定义消息,更新父窗口的 IDC_EDIT:
```
BEGIN_MESSAGE_MAP(CParentWnd, CWnd)
ON_MESSAGE(WM_UPDATE_PARENT_EDIT, OnUpdateParentEdit)
END_MESSAGE_MAP()
LRESULT CParentWnd::OnUpdateParentEdit(WPARAM wParam, LPARAM lParam)
{
// 获取子窗口 IDC_EDIT 的值
CString* pStrValue = reinterpret_cast<CString*>(lParam);
CString strValue = *pStrValue;
// 更新父窗口 IDC_EDIT 的值
SetDlgItemText(IDC_EDIT, strValue);
return 0;
}
```
这样,当子窗口 IDC_EDIT 的值发生变化时,父窗口的 IDC_EDIT 也会随之更新。注意在传递指针参数时要小心内存管理,确保指针有效性和生命周期。
阅读全文