MFC MDI 主框架和标签页数据互操作

时间:2023-03-09 01:03:43
MFC MDI 主框架和标签页数据互操作

==================================声明==================================

本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性。

未经作者同意请勿修改(包括本声明),保留法律追究的权利。

未经作者同意请勿用于学术性引用。

未经作者同意请勿用于商业出版、商业印刷、商业引用。

本文不定期修正完善,为保证内容正确,建议移步原文处阅读。

本文链接:http://www.cnblogs.com/wlsandwho/p/4389576.html

=======================================================================

为了宇宙的和平,还是拿之前我的魔改系列说事儿吧!

本文内容基于http://www.cnblogs.com/wlsandwho/p/4282242.html

=======================================================================

之前成功的实现了MDI的自定义模板视图。

现在,假如一个标签页上有一个CListCtrl控件,如何使存储在主框架窗口的数据显示在CListCtrl中?或者使CListCtrl中的数据能够在主框架窗口使用?

=======================================================================

人世间有百媚千种,呃,解决问题的办法有千万种,我只选简单易行把握大的,盈盈一握的不行。

=======================================================================

这里我选择采用用户自定义消息的方式。

1 简单。

2 懒。

3 自带队列。

4 就算没响应也没关系,再发就是了。

5 子视图发送的请求传递到主框架执行,毕竟数据在那里。

=======================================================================

大致代码,不一定能用,毕竟消毒后呵呵哒。

代码位置大家都懂得。

 #define WM_WLS_LALALA    WM_USER+321
 void CXXXFV::OnNMClickListRecordinfo(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码 if(m_ListCtrl.GetNextItem(-,LVNI_ALL | LVNI_SELECTED) != -)
{
int nItem =m_ListCtrl.GetNextItem(-,LVNI_ALL | LVNI_SELECTED); CString* pstrXX=new CString;
*pstrSampleID=m_ListCtrl.GetItemText(nItem,); int nType=; ::PostMessage(theApp.m_pMainWnd->m_hWnd,WM_WLS_LALALA,(WPARAM)pstrXX,(LPARAM)nType);
} *pResult = ;
}
ON_MESSAGE(WM_DATA_EXCHANGE,&CMainFrame::OnXXX)
 LRESULT CMainFrame::OnXXX( WPARAM wParam, LPARAM lParam)
{
int nType=(int)lParam; if (nType==)
{
CString strXXX=*(CString*)wParam; //blablabla...
} delete (CString*)wParam; return ;
}

要注意的是PostMessage用的是API。用的是PostMessage而不是SendMessage。

毕竟数据准确也是很重要的。