CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

请教vc界面的问题,急!!!

楼主chenxx96()2004-11-02 09:46:16 在 VC/MFC / 界面 提问

一、如何删除界面中已画好的线。创建了一个单文档模式的工程。增加了几个工具条按键(如:画直线、画圆弧),当按下工具条上的“画直线”按键时,则可用鼠标在界面中取点画线(程序中是调用MoveTo()、LineTo()),类似其他的画图工具。当按下工具条上的“撤消”按键时,则取消最后画上去的一段线,怎么才能把最后画到界面中的那段线删除。  
   
  二、如何建立多窗口界面,这个界面就象AuToCAD软件的界面(最好是在单文档模式下),上部分是画图区,下部分是命令输入区。  
  问题点数:0、回复次数:15Top

1 楼lixiaosan(小三)回复于 2004-11-02 10:00:24 得分 0

SetROP2Top

2 楼lhzhang1381()回复于 2004-11-02 10:09:23 得分 0

重画Top

3 楼yushulei(永远)回复于 2004-11-02 10:10:21 得分 0

一、要实现undo操作,就要有一个数据结构来存储你所画的曲线,也就是点。比如你用链表,这样当你undo时就把链表的最后一个元素删除,然后重新刷新界面就可以了。  
  二、你可以用CSplitterWnd,来进行窗体的分割。也可以用第三方控件如OutBar来实现。Top

4 楼chenxx96()回复于 2004-11-02 15:09:25 得分 0

to:yushulei(永远)  
      第一个问题,重新刷新界面没用,是不是我用的不对。我是这样做的:  
                  1。删除链表的最后一节,并送WN_PAINT   消息  
                    void   CDesignView::OnEditUndo()    
                  {  
      deletelink(&tmpdelPoint);//newpoint   是我自己定义的点结构体  
                                                                      //函数deletelink()是删除链表的最后一节  
      SendMessage(WM_PAINT);       //重新刷新  
                    }  
                    2。在函数Ondraw()中加入if(head!=NULL) readLinkToDraw();   函数readLinkToDraw()  
                          按链表重新画图。  
              结果:没有刷新删除的一段。要是用鼠标拉大或宿小界面确可以。SendMessage(WM_PAINT)消息  
                        也有送出,函数Ondraw()也有响应。这是为什么?  
  第二个问题,你能不能说具体点,能不能提供这方面的列子啊。  
     
          非常感谢!  
   
  Top

5 楼ProgramInHeart(珍惜每一天!)回复于 2004-11-02 15:26:27 得分 0

upTop

6 楼flyincloud2000(云中慢步)回复于 2004-11-02 16:09:35 得分 0

可能是你的节点并没有删除掉,在调用OnDraw()时屏幕将会重新画出你记录的所有点。简单的办法是用先用背景色擦除整个画图区,在重画保留的线段。  
          如果数据量很大,有闪烁问题,可以设置dc.SetROP2(R2_NOT),把最后画出的线擦去。  
   
  Top

7 楼flyincloud2000(云中慢步)回复于 2004-11-02 16:15:35 得分 0

第二个问题是一个多视图的文档,具体最好找书上的简单例子看看,大部分MFC的书上都有的。Top

8 楼platinum15(心碎便便)回复于 2004-11-02 17:36:40 得分 0

重画,但不重画最后一条!Top

9 楼Mackz(在相互)回复于 2004-11-02 23:53:04 得分 0

刷新界面用Invalidate(NULL);Top

10 楼nunu8890(陌生人)回复于 2004-11-03 01:29:27 得分 0

同意楼上。怎么也不能用SendMessage(WM_PAINT)这样的方法。Top

11 楼chenxx96()回复于 2004-11-03 08:57:51 得分 0

to:flyincloud2000()  
          可能是我没有说清楚,链表的节点已经删了。因为用鼠标在界面的边缘拉动界面,使整个界面变大或变小时,都重新刷新(undo的那段没了),在界面的大小发生变化时系统会发WM_PAINT的消息给窗口重刷界面。  
   
  to:Mackz(在相互)  
          非常感谢,这个方法可行。  
   
  to:flyincloud2000()  
          不知你是否有用过AutoCAD,我想要的界面就象AutoCAD的界面:上一半是用户绘图区,下一半是用户的   指令输入区。好象和书上所讲的多文档窗口不同,何况现在很多书都是copy来copy去的,看不明白啊!能否给推荐几本好书!谢谢!  
  Top

12 楼flyincloud2000(云中慢步)回复于 2004-11-03 09:43:54 得分 0

可以把视图区切为两个部分,分别继承不同的视图类,如EditView和FormView(仅供参考)。你可以看看多视图和切分窗口方面文章(mfc的书上基本都有的)。Top

13 楼guangsan(丑草)回复于 2004-11-08 15:17:03 得分 0

第二个问题类似的前一段时间我刚刚解决了,就下载  
   
  候捷老师的《深入浅出MFC》  
   
  电子版的看看就行了,其它MFC也可以看,多是抄他的,但是,其它MFC的书上单文档多视的例子可以看看,候老师的例子这方面没太着重。Top

14 楼aoosang(智慧的鱼)回复于 2004-11-08 15:19:43 得分 0

建议你从网上下载一个画图的源码看看,别人说半天还不如你仔细看研究一下源码呢Top

15 楼chenxx96()回复于 2004-11-15 10:40:11 得分 0

to:guangsan(丑草)    
   
  你能提供这方面的原码吗?  
  我的E-mail:chenxx96@163.comTop

相关问题

  • 需要类似VC++界面风格的VC源代码包!!!急!!!
  • VC++6.0做高级用户界面----十万火急
  • 那有VC做的界面源码下载,在线急等!
  • vc编写界面问题
  • 急问一个给VC界面控件添加变量的问题,在线等
  • 利用vc制作专业级界面
  • VC++界面操作问题! (上菜了!)
  • VC图形界面的问题
  • 如何设计VC的界面
  • VC的用户界面问题

关键词

  • 界面
  • 视图
  • 函数
  • 文档
  • 鼠标
  • mfc
  • 消息
  • 删除
  • 刷新
  • 链表

得分解答快速导航

  • 帖主:chenxx96

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo