有关自定义消息     
在ListCtrlView.h中:
#define WM_MY_BROAD_EDIT WM_USER+110
class 1 : public CFormView
{
enum { IDD = IDD_LISTVIEW };
    afx_msg LRESULT OnEnableBroadEdit(WPARAM, LPARAM);}在ListCtrlView.cpp中
BEGIN_MESSAGE_MAP(CListCtrlView, CFormView)
//{{AFX_MSG_MAP(CListCtrlView)
ON_MESSAGE(WM_MY_BROAD_EDIT, OnEnableBroadEdit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()LRESULT CListCtrlView::OnEnableBroadEdit(WPARAM a, LPARAM)
{ _RecordsetPtr mRecordset=(_RecordsetPtr)a; while(mRecordset->adoEOF)
{
_variant_t  vname,vage,vsex,vzhiye;
int nItem;
vname = mRecordset->GetCollect("name");
vage = mRecordset->GetCollect("age");
vsex = mRecordset->GetCollect("sex");
vzhiye = mRecordset->GetCollect("zhiye");
nItem=m_listctrl.InsertItem(0xffff,(_bstr_t)vname);
m_listctrl.SetItem(nItem,1,1,(_bstr_t)vname,NULL,0,0,0);
m_listctrl.SetItem(nItem,2,1,(_bstr_t)vage,NULL,0,0,0);
m_listctrl.SetItem(nItem,3,1,(_bstr_t)vsex,NULL,0,0,0);
m_listctrl.SetItem(nItem,4,1,(_bstr_t)vzhiye,NULL,0,0,0); m_pRecordset->MoveNext();
} AfxMessageBox("..55565");
 
  return 0;
}
...........................................................在LeftPaneView.h中
class CLeftPaneView : public CFormView
{
enum { IDD = IDD_SEARCHBAR };
}
在LeftPaneView.cpp中
void CLeftPaneView::OnBsearch() 
{
 .................获得m_pRecordset数据集       
  HWND pWnd= ::FindWindow ("CListCtrlView", "listctrl");
   ::SendMessage(m_hWnd, WM_MY_BROAD_EDIT,m_pRecordset,0);}我想使用自定义消息把m_pRecordset数据集从CLeftPaneView类传到CListCtrlView中,这样可以实现吗??
不能实现的话 还可以用什么方法?
哪位大哥大姐会的话,快快帮帮小弟吧!!!急急...在线等呢

解决方案 »

  1.   

    HWND pWnd= ::FindWindow ("CListCtrlView", "listctrl"); 
      ::SendMessage(m_hWnd/*这个是不是应该用pWnd*/, WM_MY_BROAD_EDIT,m_pRecordset,0); 
      

  2.   

    可以实现,但是要注意变量的生存周期
    ::SendMessage(m_hWnd, WM_MY_BROAD_EDIT,m_pRecordset,0); 
      

  3.   

    这个地方打错了,   LRESULT CListCtrlView::OnEnableBroadEdit(WPARAM a, LPARAM) 这个函数设置断点不执行   为什么????
      

  4.   

    用类似这样的方法:(其实根本不需要自定义消息,在CListCtrlView中定义一个public函数就可以了)
    CSplitterWnd* splitter = (CSplitterWnd*)GetParent();
    CListCtrlView* view = (CListCtrlView)splitter->GetPane(1, 0); // 这里根据实际情况修改。
    view->SendMessage(WM_MY_BROAD_EDIT, (WPARAM)m_pRecordset, NULL);
      

  5.   


    运行后  'type cast' : cannot convert from 'class CWnd *' to 'class CListCtrlView'
      

  6.   

    CListCtrlView* view = (CListCtrlView*)splitter->GetPane(1, 0);
    我漏掉了一个*号。
      

  7.   

    LRESULT CListCtrlView::OnEnableBroadEdit(WPARAM a, LPARAM) 
    { _RecordsetPtr mRecordset=(_RecordsetPtr*)a; while(mRecordset->adoEOF) 

    _variant_t  vname,vage,vsex,vzhiye; 
    int nItem; 
    vname = mRecordset->GetCollect("name"); 
    vage = mRecordset->GetCollect("age"); 
    vsex = mRecordset->GetCollect("sex"); 
    vzhiye = mRecordset->GetCollect("zhiye"); 
    nItem=m_listctrl.InsertItem(0xffff,(_bstr_t)vname); 
    m_listctrl.SetItem(nItem,1,1,(_bstr_t)vname,NULL,0,0,0); 
    m_listctrl.SetItem(nItem,2,1,(_bstr_t)vage,NULL,0,0,0); 
    m_listctrl.SetItem(nItem,3,1,(_bstr_t)vsex,NULL,0,0,0); 
    m_listctrl.SetItem(nItem,4,1,(_bstr_t)vzhiye,NULL,0,0,0); m_pRecordset->MoveNext(); 
    } AfxMessageBox("..55565");   return 0; 

    这个为什么还不执行??/