为什么调用树型控件相应的函数会失败

sexman188 2004-04-10 11:48:40
我的程序的基于对话框的程序,树型控件在主对话框A。CPP中,当我在另一个子对话框B。CPP中调用相应的树的控制函数时就会失败,我在B对话框创建了A的对象通过A对象调用相应的A对话框中树的控制函数的,编译没有问题,我调用的是GetChildItem这个函数
出错信息:
_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetChildItem(HTREEITEM hItem) const
{ ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); }
...全文
52 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sexman188 2004-04-11
  • 打赏
  • 举报
回复
不行啊
error C2039: 'GetChildItem' : is not a member of 'CWnd'
vcforever 2004-04-11
  • 打赏
  • 举报
回复
GetDlgItem(IDC_TREE)->GetChildItem()
sexman188 2004-04-11
  • 打赏
  • 举报
回复
现在编译通过了,可出的错误还是和最开始的一样
A类中的被调用的函数:
void CPictureDlg::insertitem(CString item,CString name)
{
HTREEITEM treeroot,treechild;
treeroot=hParent;
treechild=((CTreeCtrl*)GetDlgItem(IDC_TREE_PICTURE))->GetChildItem(hParent);
if(item.Compare("风景")==0)
{
m_pictree.InsertItem((LPCTSTR)name,treechild,NULL);
}
else
{
treechild=m_pictree.GetNextSiblingItem(treechild);
if(item.Compare("人物")==0)
{
m_pictree.InsertItem((LPCTSTR)name,treechild,NULL);
}
else
{
treechild=m_pictree.GetNextSiblingItem(treechild);
if(item.Compare("卡通")==0)
{
m_pictree.InsertItem((LPCTSTR)name,treechild,NULL);
}
}
}
}
B类的调用函数
void CPICADDLG::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
_RecordsetPtr m_addRect;
CString sql;
sql.Format("select * from picture");
if (m_strptype!=""&&m_strpicname!=""&&m_strpicpath!="")
{
try
{
HRESULT haRect;
haRect=m_addRect.CreateInstance(_T("ADODB.Recordset"));
if (SUCCEEDED(haRect))
{
haRect=m_addRect->Open((LPTSTR)sql.GetBuffer(130),_variant_t((IDispatch*)(((CPictureApp*)AfxGetApp())->m_conn),true),
adOpenDynamic,adLockPessimistic,adCmdText);
if (SUCCEEDED(haRect))
{
m_addRect->AddNew();
m_addRect->PutCollect("picname",_variant_t(m_strpicname));
m_addRect->PutCollect("pictype",_variant_t(m_strptype));
m_addRect->PutCollect("picpath",_variant_t(m_strpicpath));
m_addRect->Update();
CPictureDlg *picturedlg=new CPictureDlg;
picturedlg->insertitem(m_strptype,m_strpicname);
MessageBox("添加图片成功!","添加信息提示",MB_OK|MB_ICONINFORMATION);
m_strpicname.Format("");
m_strptype.Empty();
m_strpicpath.Format("");
UpdateData(FALSE);

}
}
}
catch (_com_error e)
{
MessageBox("添加记录失败!");
}
}
else
{
MessageBox("请填写全部的信息!","添加信息提示",MB_OK|MB_ICONINFORMATION);
}
//CDialog::OnOK();
}
byf2002 2004-04-11
  • 打赏
  • 举报
回复
GetDlgItem(IDC_TREE)得到的指针类型是 CWnd *

需要强制转换成CTreeCtrl *
李马 2004-04-11
  • 打赏
  • 举报
回复
((CTreeCtrl*)GetDlgItem(IDC_TREE))->GetChildItem();
结合的优先级不同,所以要用括号。
sexman188 2004-04-11
  • 打赏
  • 举报
回复
error C2039: 'GetNextSiblingItem' : is not a member of 'CWnd'
同样的错误,我现在是在B对话框的一个按纽消息处理函数中调用A类的a函数,在a函数中写了对树型控件的进行一些操作的函数
vcforever 2004-04-11
  • 打赏
  • 举报
回复
(CTreeCtrl*)GetDlgItem(IDC_TREE)->GetChildItem()

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧