需要把树的叶子画在一条水平线上

hztj2005 2012-11-20 12:32:37
演示语句的语法结构,

一般的树控件类似Windows的目录树,叶子是垂直的,一个语句这样演示看起来很别扭。

需要把树的叶子(一个语句的词语)画在一条水平线上,便于演示。

请教如何处理,如能给出一个代码就最好了。

...全文
236 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztj2005 2012-11-24
  • 打赏
  • 举报
回复
开始直接往对话框上画,刷新的时候就只有最后一条线了。 后来想起应该使用OnPaint,就对了。 谢谢各位!
hztj2005 2012-11-23
  • 打赏
  • 举报
回复
11楼的问题解决了,坐标不能局部变量,声明一个结构数组保存就可以了。 不过,我不理解,局部变量值丢弃了,屏幕上的线如果覆盖后消失,可以理解。 没有覆盖为何也跟着消失? VS2010还有一个折腾了我一天的怪事: 调用函数与被调用函数定义设备描述符时,不能同名。 我疏忽,用同名CDC *pDC 定义,被调用函数即使释放了pDC ,调用函数仍然不能画线。
hztj2005 2012-11-23
  • 打赏
  • 举报
回复
请教各位朋友,我试着自己写代码画6楼的语法树,自然每个方框是先一个编辑框,然后再画连线。 有点奇怪的是: 画的编辑框及数据能正确显示,但连线只显示最后一次画的,此前画的就不见了。 CDC *pDC=GetDC() for(int i=0;i<wordnum;i++;) { //计算坐标省略 pDC->Moveto(x1,y1); pDC->Lineto(x2,y2); ..... } 无论wordnum限制为从1-8,都而已观察到最后画的正确的连线,但看不到此前的线。 谢谢!
hztj2005 2012-11-23
  • 打赏
  • 举报
回复
以下代码VS2008执行正常,但Windows server 2008,VS2010下不能显示任何线段: void CdrawlineDlg::OnBnClickedDrawline() { CDC *pdc=GetDC(); pdc->MoveTo(2,5); pdc->LineTo (50,60); ReleaseDC(pdc); Drawline2(); } void CdrawlineDlg::Drawline2() { CDC *pdc=GetDC();//此函数与调用函数重名,导致不显示任何线段,改名为pdc2则正常 pdc->MoveTo(2,5); pdc->LineTo (80,60); ReleaseDC(pdc); }
schlafenhamster 2012-11-23
  • 打赏
  • 举报
回复
“没有覆盖为何也跟着消失” 应该是 多次 PAINT 了 “调用函数与被调用函数定义设备描述符时,不能同名” 什么情况 ?
wyx100 2012-11-23
  • 打赏
  • 举报
回复
回复于: 2012-11-20 09:50:23 不明白,你手画一个 演示一下。
孤客天涯 2012-11-22
  • 打赏
  • 举报
回复
基本自绘吧,参考流程图软件
gz_qmc 2012-11-22
  • 打赏
  • 举报
回复
从来书画本相通, 首在精神次在功. 悟得梅兰花下趣, 指上自然有清风.
hurryboylqs 2012-11-21
  • 打赏
  • 举报
回复
这个建议自绘一个控件,树来实现不好使的
schlafenhamster 2012-11-20
  • 打赏
  • 举报
回复
树本身还是 垂直 显示的
hztj2005 2012-11-20
  • 打赏
  • 举报
回复

大体就是这样子:


我看能否自己写代码画。

2楼的水平树代码我也看看,看能否改得更适合我用。
schlafenhamster 2012-11-20
  • 打赏
  • 举报
回复
不明白,你手画一个 演示一下。
淡定的飘着 2012-11-20
  • 打赏
  • 举报
回复
呵呵,水平树,不错
lgstudyvc 2012-11-20
  • 打赏
  • 举报
回复
没有理解, 水平树好像不是lz要的啊
傻X 2012-11-20
  • 打赏
  • 举报
回复
楼主要的就是这个吧? 水平树
快乐鹦鹉 2012-11-20
  • 打赏
  • 举报
回复
你就自己画吧。树的叶子哪有横着长的啊

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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