标题:文档结构为SDI,我把它分割成上面是CFormView,下面是CTreeView.接收数据没有 ...
只看楼主
fuhuaxiao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-3-29
 问题点数:0 回复次数:1 
文档结构为SDI,我把它分割成上面是CFormView,下面是CTreeView.接收数据没有问题.可

文档结构为SDI,我把它分割成上面是CFormView,下面是CTreeView.接收数据没有问题.
void CMainSocket::OnReceive(int nErrorCode)
{
CMainFrame * pFrame = static_cast <CMainFrame *>(AfxGetMainWnd());
CWnd * pTreeView = (CWnd*)pFrame->GetTreeView();
CWnd *pFormView=(CWnd*)pFrame->GetFormView();//我已定义了一个以CFormView为基类的视图.
Message msContent,*msContent2;
char buff[1024];
struct line * line1;
int iLen=Receive(&buff,sizeof(buff));
line1=(struct line*)buff;
if(line1->sendYesNo==1)
{
endX=line1->endX;
endY=line1->endY;
startX=line1->startX;
startY=line1->startY;
CString s;
//下面显出的坐标跟服务端一样的.所以说明数据没有问题.
s.Format("startX:%d startY:%d endX:%d endY:%d",startX,startY,endX,endY);
pFormView->GetDC()->TextOut(0,0,s);
pFormView->GetDC()->MoveTo(startX,startY);
pFormView->GetDC()->LineTo(endX,endY);
pFormView->GetDC()->TextOut(100,100,s);
}
请问您,为什么TextOut(100,100,s)能够把字符串输出到正确的位置,而画线的时候,始终从(0,0)开始?就算把MoveTo(startX,startY)改成常数.也是从(0,0)开始的.请问为什么呀,又没有办法解决这个问题? 不胜感激!

搜索更多相关主题的帖子: SDI 文档 CFormView CTreeView 结构 
2006-04-14 16:26
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
得分:0 
这两行本身没问题,估计是你前面定义画笔试遗留下来的。每次画图应该记住,存下老的pen,用完在放回来。
这种画图方法很容易出错,最好的办法是严格用document/view architecture。让view class自己去画图。让你的CMainSocket把信息存到document class 里,然后document class UpdateAllViews().
在FormView 的OnUpdate里面call划线函数,同时在OnDraw()还是OnPaint()里面也这么call。这样图形会一直保留。

http://myajax95./
2006-04-15 03:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-57484-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.181431 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved