怎么向树控件中添加节点

怎么向树控件中添加节点,第1张

首先打开树控件的属性对话框,添加单击事件如下图 *** 作,

,以上 *** 作会自动向工程中添加单击处理函数如下:

void CXXXXXX::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)

{

// TODO: 在此添加控件通知处理程序代码

CPoint Pos

::GetCursorPos(&Pos)  //获取鼠标点击的位置坐标

CPoint pt(Pos)

m_Treectrol.ScreenToClient(&pt)  //有屏幕坐标转成  控件坐标(树控件的客户区坐标)

HTREEITEM hSelItem = m_Treectrol.HitTest(pt)  //通过HitTest获取单击的子项

CRect rec

m_treeTaskRule.GetItemRect(hSelItem, &rec, TRUE)

if (hSelItem != 0 )//&& rec.PtInRect(pt)         //判断是否单击到子项(注释掉的代码为是否点击到子项区域一般是其文字显示区域)

{

m_Treectrol.SelectItem(hSelItem) //选中点击项

// add your  code

}

*pResult = 0

}

/*对于用户输入的任意一棵二叉树,仅使用一个指向二叉树T的根的指针,计算

(a)

T的节点数量

(b)

T的叶子数量

(c)

T的具有2个孩子的节点的数量

并分别计算其运行时间*/

#include<iostream>

#include<stdio.h>

#include<malloc.h>

int

TWOCHILD

//有两个孩子的结点

int

LEAF

//叶子数

int

NODE

//结点数

using

namespace

std

typedef

struct

binode{

int

data

struct

binode

*lchild,*rchild

}binode,*bitree

typedef

struct{

bitree

elem[100]

int

top

}stack

bitree

creat_bt(){

//按扩展前序建二叉树

bitree

tint

x

scanf("%d",&x)

if

(x==0)

t=NULL//以0作为结束

else

{

t=(bitree)malloc(sizeof(binode))

t->data=x

printf("请输入%d结点的左孩子结点(若没有,请输入

0)",t->data)

t->lchild=creat_bt()

printf("请输入%d结点的右孩子结点(若没有,请输入

0)",t->data)

t->rchild=creat_bt()

}

return

t

}

int

Twochild(bitree

t)

//先序递归统计有两孩子结点数

{

if(t)

{

if(t->lchild&&t->rchild)

TWOCHILD++

Twochild(t->lchild)

Twochild(t->rchild)

}

return

TWOCHILD

}

int

Leaf(bitree

t)

//先序递归统计叶子结点数

{

if(t)

{

if(!(t->lchild)&&!(t->rchild))

LEAF++

Leaf(t->lchild)

Leaf(t->rchild)

}

return

LEAF

}

int

Node(bitree

t)

//先序递归统计总结点数

{

if(t)

{

NODE++

Node(t->lchild)

Node(t->rchild)

}

return

NODE

}

__inline

unsigned

__int64

GetCycleCount()

//获取时间,纳秒级

{

__asm

_emit

0x0F

__asm

_emit

0x31

}

void

main()

{

TWOCHILD=LEAF=NODE=0

__int64

ls1,le1,ls2,le2,ls3,le3

printf("请输入您要新建的二叉树根结点:")

bitree

root=creat_bt()

ls1=GetCycleCount()

printf("\n该树中具有2个孩子的结点有%d个",Twochild(root))

le1=GetCycleCount()

printf("\n运行时间:%I64d

ns",(le1-ls1))

ls2=GetCycleCount()

printf("\n该树中叶子结点有%d个",Leaf(root))

le2=GetCycleCount()

printf("\n运行时间:%I64d

ns",(le2-ls2))

ls3=GetCycleCount()

printf("\n该树中结点有%d个",Node(root))

le3=GetCycleCount()

printf("\n运行时间:%I64d

ns\n",(le3-ls3))

system("pause")

}运行结果:

路径不对埃你设置一下eclipse里的python解释器。另外检查一下你的wxpython的安装目录。是否在sys.path里。你可以在程序开始测试一下importsysprintsys.path如果wxpython没有在这个目录里,或者是没有在site-packages里就不可以用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7896664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存