在CSysStatusView(CFormView继承来的)中,添加CListCtrlEx(继承自CListCtrl)对象(m_list:公有),初始化后一直正常,跟踪发现地址有变化?具体描述:
CListCtrlEx中有OnClick成员,调用CSysStatusView中的静态(回调)函数,在静态函数中用)
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CSysStatusView *pView=(CSysStatusView *)pMain->GetActiveView();CSysStatusView类有成员ProcessMsg(),可以通过上面取到的视窗对象访问,但是却不能访问成员m_list;只要通过m_list去操作列表,就出错,为什么???

解决方案 »

  1.   

    在静态成员函数中访问CSysStatusView的变量是有问题。
    你最好用一变量保存AfxGetApp()->m_pMainWnd->GetSafeHwnd();到时用::PostMessage,再定义一消息(CSysStatusView响应)进行处理。主要问题就是MFC的CWnd::FromHandle它是从一个Map中去找,涉及到一个THREAD_STATE,这种情况不行。
      

  2.   

    MFC的CWnd::FromHandle返回的结果不对。
      

  3.   

    现在我的程序是单文件,支持多个视切换的,这也会有影响吗?
    现在是有一个主框架,分成左右两部分的窗口,在右边,又分一个框架负责管理随时切换的视!CSysStatusView只是其中的一个视,我现在在静态成员函数中,怎么样能保证成功发送消息到CSysStatusView中呢?