请教vc界面的问题,急!!!
一、如何删除界面中已画好的线。创建了一个单文档模式的工程。增加了几个工具条按键(如:画直线、画圆弧),当按下工具条上的“画直线”按键时,则可用鼠标在界面中取点画线(程序中是调用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




