我以前只对对话框的程序有所接触,现在需要用单文档来实现,但是现在有些问题困扰了我好久了,
1.我对窗口进行了切分,左边是TREEWIEE,右边是LISTTREE,基类是CVIEW,进行切分后我的打印等菜单都为不可用了,是什么原因呢?
2.我用和对话框中同样的方法实现在控件中显示ACCESS数据库中数据时总是出错,在对话框中的都是没有问题的。
/* int numline=0;
_variant_t var;
_RecordsetPtr m_pRecordset1;
m_pRecordset1.CreateInstance(__uuidof(Recordset));

m_pRecordset1->Open("SELECT * FROM squ  ",                // 查询DemoTable表中所有字段
theApp.m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);

try {
// CString aname,aid,aaddress,adescription;

if(!m_pRecordset1->BOF)
m_pRecordset1->MoveFirst();
else
{
//  AfxMessageBox("表内数据为空");

}

// 读入库中各字段并加入列表框中
while(!m_pRecordset1->adoEOF)
{
// var = m_pRecordset->GetCollect("id");
// if(var.vt != VT_NULL)
// aid = (LPCSTR)_bstr_t(var);
CString sname;

var = m_pRecordset1->GetCollect("namne");
if(var.vt != VT_NULL)
  sname = (LPCSTR)_bstr_t(var);


            





//  sid.Format("%d",numline+1);   
// m_HeadIcon.Create(16,16,TRUE,2,2);
// m_HeadIcon.Add(AfxGetApp()->LoadIcon(IDI_ICONG));


listCtrl.InsertItem(numline,sname);
listCtrl.SetItemText(numline,1,"3");
listCtrl.SetItemText(numline,2,"8487994");}



numline++;
m_pRecordset1->MoveNext();
}
        


catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
    
 */
这是实现代码,在对话框中是可以的,怎么回事呢,非常感谢!在现等

解决方案 »

  1.   

    我自己写的一个函数
    void CMainView::OnInit1(CString strInfo)

    CListCtrl &listCtrl=(CListCtrl&)GetListCtrl();

    //  CListCtrl &listCtrl=(CListCtrl&)GetListCtrl();
    //  listCtrl.DeleteAllItems ();
    if(strInfo=="DCP1")
    { listCtrl.DeleteAllItems ();
        int i=0;
    CString x,y,z;
    while (i<16)
    {
    x.Format("%d",i+1);
    y="chann"+x;
    listCtrl.InsertItem(i,x);
    listCtrl.SetItemText(i,1,y);
      listCtrl.SetItemText(i,2,"3");
    i++;
    }
    listCtrl.InsertItem(16,"");
    listCtrl.SetItemText(16,1,"apm");
    listCtrl.SetItemText(16,2,"total:48");
    }
    if(strInfo=="DCP2")
    {
    listCtrl.DeleteAllItems ();
    listCtrl.InsertItem(0,"1");
    listCtrl.SetItemText(0,1,"CHANN1");
      listCtrl.SetItemText(0,2,"3");
    }
    /*以下的信息可参考者加*///*/
    this->Invalidate (FALSE);
    我在显示具体的一个的时候没有错误的,读取数据库中数据出错
      

  2.   

    void CLeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    CTreeCtrl& CtlTree=(CTreeCtrl&)GetTreeCtrl ();
        HTREEITEM select_item=CtlTree.GetSelectedItem ();
    CString str=CtlTree.GetItemText (select_item);
    //  xxx=str;

    CSplitterWnd* m_wndSplitter=(CSplitterWnd*)GetParent();
        m_listView=(CMainView*)m_wndSplitter->GetPane (0,1);
    m_listView->OnInit1(str);
    *pResult = 0;
    }
    这个是TREEVIEW中把选中的节点字段通过OnInit1()传过去的
      

  3.   

    我的代码是:
    CListCtrl &listCtrl=(CListCtrl&)GetListCtrl();
    int numline=0;
        _variant_t var;
    _RecordsetPtr m_pRecordset1;
    //  m_pRecordset1.CreateInstance(__uuidof(Recordset));
    m_pRecordset1.CreateInstance("ADODB.Recordset");
    CString sname;
    sname=strInfo;
    MessageBox(sname); m_pRecordset1->Open("SELECT * FROM squ where name = '"+sname+"'",                // 查询DemoTable表中所有字段
      theApp.m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
      adOpenDynamic,
    adLockOptimistic,
      adCmdText);是数据这里出错: m_pRecordset1->Open("SELECT * FROM squ where name = '"+sname+"'",                // 查询DemoTable表中所有字段
      theApp.m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
      adOpenDynamic,
    adLockOptimistic,
      adCmdText);
    错误提示:error C2664: 'Open' : cannot convert parameter 1 from 'class CString' to 'const class _variant_t &'
            Reason: cannot convert from 'class CString' to 'const class _variant_t'
            No constructor could take the source type, or constructor overload resolution was ambiguous
    Error executing cl.exe.我的代码是:
    CListCtrl &listCtrl=(CListCtrl&)GetListCtrl();
    int numline=0;
        _variant_t var;
    _RecordsetPtr m_pRecordset1;
    //  m_pRecordset1.CreateInstance(__uuidof(Recordset));
    m_pRecordset1.CreateInstance("ADODB.Recordset");
    CString sname;
    sname=strInfo;
    MessageBox(sname); m_pRecordset1->Open("SELECT * FROM squ where name = '"+sname+"'",                // 查询DemoTable表中所有字段
      theApp.m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
      adOpenDynamic,
    adLockOptimistic,
      adCmdText);
      

  4.   

    m_pRecordset1->Open("SELECT * FROM squ where name = '"+sname+"'",                // 查询DemoTable表中所有字段 
    theApp.m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针 
    adOpenDynamic, 
    adLockOptimistic, 
    adCmdText);
    改成:CString strSQL;
    strSQL.Format("SELECT * FROM squ where name = '%s'",sname);
    m_pRecordset1->Open(_variant_t(strSQL),                // 查询DemoTable表中所有字段
    theApp.m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
      adOpenDynamic,
    adLockOptimistic,
      adCmdText);