ok,给我发一个,我来看一下。[email protected]

解决方案 »

  1.   

    xiner老兄给我发过来一个
    [email protected]
      

  2.   

    to xiaoyuer and Wingsun:
    ok,ok
      

  3.   

    创建的ListCtrl的句柄为空, 证明根本就没有创建正确。 自然再做什么都会出错了。
      

  4.   

    有些眉目了,真恨自己没先进邮箱看看.枉敲了这么一大串.laodu 同志已有他的答案了,我想
    很多菜鸟也想知道一个why.所以我将老杜的信粘添到这里.与大伙同享.老杜同志.不会有意见吧?我现在决定给你50大元.不够再跟我说.最后发现,自己派生的CDialogBar的子类中的DoDataExchange好像就是没有作用――准确地说是它从来没有被调用过,不能怪它――我试过在OnCreate和OnRButtonUp中显式地调用UpdateData(FALSE)以间接地调用它,结果出错,原因是根本找不着与IDC_MY_LIST相对应的窗口对象。其实在该类的任何地方调用GetDlgItem(IDC_MY_LIST)得到的都是空指针。 
      
    没办法,指好把初始化工作放到CMainFrame中来完成,结果就好了(见CMainFrame::OnCreate())。先调用UpdateData(FALSE),使ListCtrl对象真正与资源联系起来,加入标题头。 
      
    我暂时得出的结论是:最好在CMainFrame完成一切工作,要不干脆不要生成自己的CDialogBar子类。 
      
      

  5.   

    其实, 您如果看过CDialog 的源代码, 就不会出现这个问题了.对于一个模式对话框, 他的建立过程你应该首先清楚. 
    CDialog::DoModal() -> CDialog::CreateDlgIndirect()
    CWnd::CreateDlgIndirect()
    ::CreateDlgIndirect()
          CDialog::OnInitDialog()
          CDialog::UpdateData()
          CMyDlg:: DoDataExchange()
           CDialog::DoDataExchange()
           CWnd::SubclassWindow()无模式的对话框通过 Create() 建立.到此, 你定义的:  m_MyList 才和 HWND 联系上.你只是定义了CDialogBar, 但是并没有建立 m_MyList 对象和 HWND 得联系.
    所以会出错误.BTW, 对于CDialogBar, 我使用的时候, 一般都市直接利用 GetDlgItem() 对象指针, 然后使用.
    一般不需要建立派生类.
    MFC 中有一个 CHtmlView  的例子, 使用了 CDialogBar, 你可以参考使用.
      

  6.   

       我也想研究以下,给我发一份过来吧?[email protected]