社区
C++ 语言
帖子详情
OnDraw(CDC* PDC)问题
cofemate
2009-12-04 09:44:49
问下高手OnDraw(CDC* PDC)在被调时很多书上都说(CDC* PDC)这个参数已经传进来了,小弟我没明白这个参数是怎么传进来的? 看MFC中还有很多这样的函数,他们后面跟的参数都是直接可以拿到函数体中使用的(特别是一些类的对象的指针这样的参数)。 为什么OnDraw(CDC* PDC)这个函数 不先定义一个CDC类的对象 dc ,然后OnDraw(&dc)??
...全文
432
10
打赏
收藏
OnDraw(CDC* PDC)问题
问下高手OnDraw(CDC* PDC)在被调时很多书上都说(CDC* PDC)这个参数已经传进来了,小弟我没明白这个参数是怎么传进来的? 看MFC中还有很多这样的函数,他们后面跟的参数都是直接可以拿到函数体中使用的(特别是一些类的对象的指针这样的参数)。 为什么OnDraw(CDC* PDC)这个函数 不先定义一个CDC类的对象 dc ,然后OnDraw(&dc)??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cofemate
2009-12-04
打赏
举报
回复
结贴了 :)
cofemate
2009-12-04
打赏
举报
回复
找到了 谢谢楼上的朋友
xylicon
2009-12-04
打赏
举报
回复
[Quote=引用 7 楼 cofemate 的回复:]
void CView::OnPaint()
{
// standard paint routine
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}
在哪里可以找到啊?小弟愚笨,望指点
[/Quote]
\Microsoft Visual Studio\VC98\MFC\SRC\ViewCore.cpp
cofemate
2009-12-04
打赏
举报
回复
void CView::OnPaint()
{
// standard paint routine
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}
在哪里可以找到啊?小弟愚笨,望指点
xylicon
2009-12-04
打赏
举报
回复
OnDraw 是由OnPaint调用的。
void CView::OnPaint()
{
// standard paint routine
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}
OnDraw是虚函数,所以就能够在你的派生类中执行OnDraw了。
bamboo1999
2009-12-04
打赏
举报
回复
是mfc构造(或者说取到的)的。
调用者负责传入合法的参数。
cattycat
2009-12-04
打赏
举报
回复
up loaden,我也不知道回调函数在哪,这个可能得看mfc的消息机制吧, DECLARE_MASSAGE_MAP下面声明的函数On_Draw()原型,顺着这个往上找吧。
cofemate
2009-12-04
打赏
举报
回复
回调函数里已经构造了一个CDC对象。老邓能说具体点么?回调函数代码在什么地方我去看下
「已注销」
2009-12-04
打赏
举报
回复
为什么OnDraw(CDC* PDC)这个函数 不先定义一个CDC类的对象 dc ,然后OnDraw(&dc)??
==============
在消息派发的时候,回调函数里已经构造了一个CDC对象。
因为消息要发送到不同的类,而且是多次,所以传递进去一个指针。
这样就不用重复构造对象,提高效率(而且你也构造不成,因为只能在回调函数里构造,里面有构造CDC的信息)。
「已注销」
2009-12-04
打赏
举报
回复
因为传递进去的是一个指针。
为什么是
OnDraw
(
CDC
* /*
pDC
*/) 而不是
OnDraw
(
CDC
*
pDC
)
使用Vs2005 向导,生成SDI程序,为什么View 的
OnDraw
是
OnDraw
(
CDC
* /*
pDC
*/) 而不是
OnDraw
(
CDC
*
pDC
)? 答:主要是为了避免 使用警告等级为4级进行编译时,出现“C4100: “
pDC
”: 未引用的形参”的警告,如果该参数在代码中要用到,可以把 /* */去掉。 参考: http://social.msdn.microsoft.com...
【MFC学习笔记-作业6-sin图像】【
OnDraw
(
CDC
*
pDC
)】
根据这段源代码 一步一步剖析
CDC
的使用 void CDrawSinXView::
OnDraw
(
CDC
*
pDC
) { CDrawSinXDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here //建立画笔 CPen pen_Zuobixi,pen_sinx; p
OnDraw
(
CDC
*
pDC
)详解
OnDraw
(
CDC
*
pDC
) 函数对应用程序窗口的客户区进行绘图的所有代码都必须写在这个函数中 TextOut(int x,int y,CString& str)函数 参数x为文本显示在应用程序窗口用户区的水平位置,以像素为单位 参数y为文本显示在应用程序窗口用户区的垂直位置,以像素为单位 str为要显示的字符串,他是一个CString类的对象;
pDC
->TextOut(5
MFC
OnDraw
()函数 画图
MFC
OnDraw
()函数 画图。 以及DrawText()函数的nFormat参数。
OnDraw
(
CDC
*
pDC
)
OnDraw
(
CDC
*
pDC
)函数对应用程序窗口的客户区进行绘图的所有代码都必须写在这个函数中TextOut(int x,int y,CString& str)函数参数x为文本显示在应用程序窗口用户区的水平位置参数y为文本显示在应用程序窗口用户区的垂直位置str为要显示的字符串,他是一个CString类的对象;
pDC
->TextOut(50,50,"asdadsda");设置文本颜色virtual COLORREF SetTextColor(COLORREF crColor);参数crColor是要使用
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章