关于深入浅出MFC里的问题不解,请火速帮忙?

pcwl 2002-04-02 05:20:57
第十一章:view功能的加强.......
在: 11.2 可滚动的窗口:CScroolView
void CScribbleView::OnUpdate(CView* /* pSender */, LPARAM /* lHint */,
CObject* pHint)
{

if (pHint != NULL)
{
if (pHint->IsKindOf(RUNTIME_CLASS(CStroke)))
{
// The hint is that a stroke as been added
//(or changed).
// So, invalidate its rectangle.
CStroke* pStroke = (CStroke*)pHint;
CClientDC dc(this);
OnPrepareDC(&dc);
CRect rectInvalid = pStroke->GetBoundingRect();
dc.LPtoDP(&rectInvalid);
InvalidateRect(&rectInvalid);//1.(这里是给窗口
//设无较区,以便重绘。
return;
}
}
// We can't interpret the hint, so assume that anything might
// have been updated.
Invalidate(TRUE);
return;
}
void CScribbleView::OnDraw(CDC* pDC)
{
CScribbleDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

// Get the invalidated rectangle of the view, or in the case
// of printing, the clipping region of the printer dc.
CRect rectClip;
CRect rectStroke;
pDC->GetClipBox(&rectClip);//2.(但这里得到的却是(0,0,0,0))
//这里得到本应该是“1”的无较区域是吗?
// Note: CScrollView::OnPaint() will have already adjusted the
// viewport origin before calling OnDraw(), to reflect the
// currently scrolled position.

// The view delegates the drawing of individual strokes to
// CStroke::DrawStroke().
CTypedPtrList<CObList,CStroke*>& strokeList = pDoc->m_strokeList;
POSITION pos = strokeList.GetHeadPosition();
while (pos != NULL)
{
CStroke* pStroke = strokeList.GetNext(pos);
rectStroke = pStroke->GetBoundingRect();//这里得到的应
//该是逻辑坐标是吧。
if (!rectStroke.IntersectRect(&rectStroke, &rectClip))
//3。那这里怎么是屏幕坐标跟逻辑坐标比较
continue;
pStroke->DrawStroke(pDC);
}
}
...全文
42 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcwl 2002-04-03
  • 打赏
  • 举报
回复
问题已解决
pcwl 2002-04-03
  • 打赏
  • 举报
回复
怎么没人回答,急急!
pcwl 2002-04-02
  • 打赏
  • 举报
回复
问题就是pDC->GetClipBox(&rectClip);为什么得不到前面的无较区域(屏幕坐标)。还有后面的我觉得他是屏幕坐标跟逻辑坐标拿去比较:rectStroke.IntersectRect(&rectStroke, &rectClip) 是吗?
白驼山宋兵甲 2002-04-02
  • 打赏
  • 举报
回复
问题不是很明确
pcwl 2002-04-02
  • 打赏
  • 举报
回复
不明白是在有汉字注释处,谢谢!!!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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