CWnd的子类OnDraw问题?

guxue365 2014-04-16 11:42:56
我有一个从CWnd的子类。
里面在头文件中声明:virtual void OnDraw(CDC* pDC);
在cpp中实现:
void CXXX::OnDraw(CDC* pDC)
{
pDC->MoveTo(0,0);
pDC->LineTo(200,200);
}

再将此类子类化到工程里的View中,可是运行时并不现实出画线。

但是我重载CXXX的OnPait函数时画线可以成功,不知为什么?
...全文
155 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2014-05-17
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
worldy 2014-04-17
  • 打赏
  • 举报
回复
CWnd里使用OnPaint
gz_qmc 2014-04-17
  • 打赏
  • 举报
回复
CView类也是从CWnd类来 他们实际的消息绘图函数是OnPaint() 由于CView类是这样使用的 void CView::OnPaint() { CPaintDC dc(this); OnDraw(&dc); } virtual void CView::OnDraw(CDC* pDC) { } 只是封装了你看不见而已 所以,你要用CWnd自己弄,同样在OnPaint里调用OnDraw即可
zhouxiaofeng1021 2014-04-17
  • 打赏
  • 举报
回复
void CObjectView::OnPaint() { CPaintDC dc(this); // 用于绘制的设备上下文 CRect rectTree; m_wndObjectView.GetWindowRect(rectTree); ScreenToClient(rectTree); rectTree.InflateRect(1, 1); dc.Draw3dRect(rectTree, afxGlobalData.clrBarHilite, afxGlobalData.clrBarShadow); CDockablePane ::OnPaint(); } 这是我写的
zgl7903 2014-04-17
  • 打赏
  • 举报
回复
添加WM_PAINT响应
schlafenhamster 2014-04-16
  • 打赏
  • 举报
回复
WM_DRAWITEM_REFLECT 反射 消息 叫 控件 自己 画
叶恭介叶恭介 2014-04-16
  • 打赏
  • 举报
回复
应该要继承OnPaint()吧
微型蚂蚁 2014-04-16
  • 打赏
  • 举报
回复
因为CWnd里没有virtual void OnDraw(CDC* pDC);函数,不会调用到OnDraw. Cview里定义了virtual void OnDraw(CDC* pDC);在OnPaint中会调用OnDraw
昨夜无风 2014-04-16
  • 打赏
  • 举报
回复
类子类化到工程里的View中? 你是怎么子类化的?
rxguoblp 2014-04-16
  • 打赏
  • 举报
回复
CWnd里没有virtual void OnDraw(CDC* pDC)函数的声明和实现,无法继承。
rxguoblp 2014-04-16
  • 打赏
  • 举报
回复
试试从CView派生你的子类,不是CWnd

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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