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

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

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

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

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

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

本文链接: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。

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