• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 我的OnDraw里面什么都没有为什么不能实现重绘

我的OnDraw里面什么都没有为什么不能实现重绘

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了ondraw,ondraw什么时候调用,ondraw函数,android ondraw,mfc ondraw等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 我的OnDraw里面什么都没有为什么不能实现重绘
描述:

主要是画点,直线,矩形还有椭圆几个简单的功能

void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_ptOrigin = point;
CView::OnLButtonDown(nFlags, point);
}
void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
    CClientDC dc(this);
CPen pen(m_nLineStyle, m_nLineWidth, m_clr);
dc.SelectObject(&pen);
CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(pBrush);
switch (m_nDrawType)
{
case 1:
dc.SetPixel(point, m_clr);
break;
case 2:
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
break;
case 3:
dc.Rectangle(CRect(m_ptOrigin, point));
break;
case 4:
dc.Ellipse(CRect(m_ptOrigin, point));
break;
default:
break;
}
CView::OnLButtonUp(nFlags, point);
}

这是我的OnDraw函数,我测试过了,OnDraw函数能执行
void CGraphicView::OnDraw(CDC* /*pDC*/)
{
CGraphicDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
MessageBox(_T("reDraw"));
//CFont* pOldFont = pDC->SelectObject(&m_font);
//pDC->TextOutW(0, 0, m_strFontName);
//pDC->SelectObject(pOldFont);
// TODO: 在此处为本机数据添加绘制代码
}

 我的OnDraw里面什么都没有为什么不能实现重绘
并且OnDraw函数里面没有什么啊,为什么不能重绘了


解决方案1:

重绘不是当窗口大小改变的时候自动执行的吗?这个的前提是创建窗口设置重绘方式时候有设置对应的属性才行,你可以在OnDraw中加个断点,然后改变窗口大小时看看能进去不

解决方案2:

OnLButtonDown的时候,执行InvalidateRect就行了
因为你都没有调用刷新界面,所以以前绘制的东西还在

解决方案3:

在什么地方执行重绘的动作了?比如调用InvalidateRect这样的重绘动作在哪里呢


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何在ATL的OnDraw事件中画位图?
  • 为什么我在ATL的OnDraw中画不了线???????
  • ATL:OnDraw跨线程无法工作
  • 请教activex控件的ondraw与create问题
  • 请问一将ActiveX控件插入测试容器,就能显示出图形像OnDraw的椭圆,而不是运行容器之后才显示出来?
  • 调用CoGetClassObject的时候返回0x80080005,意思是服务器运行失败
  • 如何不使用ACtiveX的ondraw
  • 有哪位高人知道,怎样判断控件OnDraw是输出到屏幕还是到打印机?
  • 为什么ActiveX的事件只有在OnDraw中去触发,页面才能接收到
  • 很久没写activex了,今天需要写一个程序,但是OnDraw不起作用了

相关文章

  • 2017-06-05 有关MSCOMM在多线程通讯程序中的疑问!!!
  • 2017-06-05 线程里面SendMessage,接收信息的消息HANDLER是不是和线程同在一个线程内?
  • 2017-06-05 急急急急急,如何知道一个进程已经结束?
  • 2017-06-05 WebBrowser如何实现多进程共用一个会话ID保持同样的cookies
  • 2017-06-05 IShockwaveFlashRICHEDITOLE
  • 2017-06-04 在MFC中,怎么打开Excel的文件哦?
  • 2017-06-05 简单问题(dll),高手进
  • 2017-06-05 高分求助,杀死进程的问题
  • 2017-06-05 一个在DEBUG下可以编译通过DLL,但,在RELEASE下不能编译通过,求救,谢谢!
  • 2017-06-04 OCX无法收到WM_DISPLAYCHANGE消息

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于activex不显示的问题
    • VC做的OCX控件,IE下断点调试问题
    • SendMessage什么时候执行?
    • 数组与Persist
    • 如何利用异步可插入协议对网络资源分类,url地址过滤?
    • 用c++库函数beginthreadex建立线程,无法suspend的问题
    • COM技术内幕示例,求助!
    • 多线程多线程~~~~~~
    • 在ATL中com接口实现问题
    • 请问:两个线程共用一个套接字句柄可以吗?能同时收到同一笔数据吗?在线等。。。

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有