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 子视图发送的请求传递到主框架执行,毕竟数据在那里。
=======================================================================
大致代码,不一定能用,毕竟消毒后呵呵哒。
代码位置大家都懂得。
1 #define WM_WLS_LALALA WM_USER+321
1 void CXXXFV::OnNMClickListRecordinfo(NMHDR *pNMHDR, LRESULT *pResult) 2 { 3 LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); 4 // TODO: 在此添加控件通知处理程序代码 5 6 if(m_ListCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED) != -1) 7 { 8 int nItem =m_ListCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED); 9 10 CString* pstrXX=new CString; 11 *pstrSampleID=m_ListCtrl.GetItemText(nItem,1); 12 13 int nType=1; 14 15 ::PostMessage(theApp.m_pMainWnd->m_hWnd,WM_WLS_LALALA,(WPARAM)pstrXX,(LPARAM)nType); 16 } 17 18 *pResult = 0; 19 }
ON_MESSAGE(WM_DATA_EXCHANGE,&CMainFrame::OnXXX)
1 LRESULT CMainFrame::OnXXX( WPARAM wParam, LPARAM lParam) 2 { 3 int nType=(int)lParam; 4 5 if (nType==1) 6 { 7 CString strXXX=*(CString*)wParam; 8 9 //blablabla... 10 } 11 12 delete (CString*)wParam; 13 14 return 0; 15 }
要注意的是PostMessage用的是API。用的是PostMessage而不是SendMessage。
毕竟数据准确也是很重要的。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。