为什么没有经过我的OnDraw?

liken218 2003-12-01 10:30:41
我用VC Wizard生成一个基于CEditView的SDI程序,改写了OnDraw,为什么重绘时程序没有经过OnDraw呢?
...全文
138 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangweixing2000 2003-12-01
  • 打赏
  • 举报
回复
topwork(日光)说的有道理
topwork 2003-12-01
  • 打赏
  • 举报
回复
OnDraw不能这么调用的,只能由MFC框架调用。
liken218 2003-12-01
  • 打赏
  • 举报
回复
在OnPaint中加入OnDraw(&dc);就调用了CHDSystemView::OnDraw(CDC* pDC)但是原先打开的文件内容并没有一起重绘,那原先是如何重绘文件内容的呢?哪位大哥教教小弟我啊?


注:我打开的是普通的文本文件.
topwork 2003-12-01
  • 打赏
  • 举报
回复
在文档试图类中,OnDraw是由MFC框架在进行屏幕显示,打印或者打印预览的时候调用的,与框架内部的Document相关联,实际上View就是Document的一个可视化的图形,因此你用CEditView就不会调用到OnDraw了,因为显示Document的功能调用被转移到了CEditView里面的CEditCtrl::SetWindowText上面了,如果是CView就会调用OnDraw。
另外如果你想自画View请重载OnPaint不要在OnDraw里面做,OnDraw事件只是被定义为显示,打印或者打印预览Document对象的。

另外to bluebohe(薄荷)
CEditView当然可以画线了,任何窗口都可以画线,只不过没什么意义吧了。
xiaodongliu 2003-12-01
  • 打赏
  • 举报
回复
你把lineto,moveto调换一下
greensofter 2003-12-01
  • 打赏
  • 举报
回复
可能是因为只读的关系吧,不肯定!
liken218 2003-12-01
  • 打赏
  • 举报
回复
画线只是测试看是否经过OnDraw,可是没经过OnDraw,能不能画线只是其次的问题了。
VCSQLVB 2003-12-01
  • 打赏
  • 举报
回复
苦恼呀,我也遇到这个问题。
bluebohe 2003-12-01
  • 打赏
  • 举报
回复
CEditView不能进行画线
liken218 2003-12-01
  • 打赏
  • 举报
回复
// HDSystemView.cpp : implementation of the CHDSystemView class
//

#include "stdafx.h"
#include "HDSystem.h"

#include "HDSystemDoc.h"
#include "HDSystemView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHDSystemView

IMPLEMENT_DYNCREATE(CHDSystemView, CEditView)

BEGIN_MESSAGE_MAP(CHDSystemView, CEditView)
//{{AFX_MSG_MAP(CHDSystemView)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHDSystemView construction/destruction

CHDSystemView::CHDSystemView()
{
// TODO: add construction code here

}

CHDSystemView::~CHDSystemView()
{
}

BOOL CHDSystemView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs

BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping
cs.style |= ES_READONLY ;
return bPreCreated;
}

/////////////////////////////////////////////////////////////////////////////
// CHDSystemView drawing

void CHDSystemView::OnDraw(CDC* pDC)
{
CHDSystemDoc* pDoc = GetDocument();
//test///////////////////////////////
TRACE("---Get IT -----\n");
pDC->MoveTo(CPoint(10,10));
pDC->LineTo(CPoint(1200,1200));
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CHDSystemView printing

BOOL CHDSystemView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default CEditView preparation
return CEditView::OnPreparePrinting(pInfo);
}

void CHDSystemView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView begin printing.
CEditView::OnBeginPrinting(pDC, pInfo);
}

void CHDSystemView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView end printing
CEditView::OnEndPrinting(pDC, pInfo);
}

/////////////////////////////////////////////////////////////////////////////
// CHDSystemView diagnostics

#ifdef _DEBUG
void CHDSystemView::AssertValid() const
{
CEditView::AssertValid();
}

void CHDSystemView::Dump(CDumpContext& dc) const
{
CEditView::Dump(dc);
}

CHDSystemDoc* CHDSystemView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHDSystemDoc)));
return (CHDSystemDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CHDSystemView message handlers

void CHDSystemView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
Invalidate();

}
fayifu 2003-12-01
  • 打赏
  • 举报
回复
代码贴出来看看。
kongyunzhongque 2003-12-01
  • 打赏
  • 举报
回复
CEditView里就有CEditCtrl。把控件内容取出来,然后在写回去。是不是已经先给擦掉了,这我就不知道了。

16,551

社区成员

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

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

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