VC++(MFC):关于CButton的Create函数的一个疑问

比如,我有以下代码:CButtoncbt;cbt.Create(TEXT("MFCTest"),WS_CHILD|BS_PUSHBUTTON,CRect(0,0,10,1... 比如,我有以下代码:
CButton cbt ;
cbt.Create( TEXT( "MFCTest" ), WS_CHILD | BS_PUSHBUTTON, CRect( 0, 0, 10, 10), this, 1 ) ;
-------------------------------------------------------------------------------------
关于第三个参数,我有点不明白,MSDN上说,第三个参数是const RECT& rect,可以用RECT的派生类CRect来进行代替,但是CRect不是一个类的名字吗?它不是一个函数啊?如果是调用构造函数的话,不是应该在定义一个对象的时候使用吗?比如CRect crectObj (0, 0, 10, 10),这样使用才对啊,为什么能直接用类的名称后面加参数呢?
--------------------------------------------------------------------------------------
小弟才疏学浅,问的东西如果太简单了,请多多包涵,希望各位高手解答一下!
展开
 我来答
十八号卡车
2011-03-27 · 超过10用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:20.2万
展开全部
const RECT& rect 这个不是该参数是一个函数,而是一个RECT类型的实例的引用。
CRect(0,0,10,10)是说用括号里的参数作为初始值创建一个CRect类的实例,跟函数没有关系。
binlq2003
2011-03-27
知道答主
回答量:11
采纳率:0%
帮助的人:7万
展开全部
CButton cbt ;
cbt.Create( TEXT( "MFCTest" ), WS_CHILD | BS_PUSHBUTTON, CRect( 0, 0, 10, 10), this, 1 ) ;
等同
CButton cbt ;
CRect cr = CRect( 0, 0, 10, 10);
cbt.Create( TEXT( "MFCTest" ), WS_CHILD | BS_PUSHBUTTON, cr, this, 1 ) ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Frank7258
2011-03-27 · TA获得超过1503个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:551万
展开全部
CRect(...)调用了CRect的构造函数,构造了一个CRect对象,但是这个CRect对象是未命名的,是个临时的对象。这整个过程和你先CRect rc(....); 然后把rc递给Create是一样的。这个用法在C++中是比较常见的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jq4mvno8d
2011-03-28 · TA获得超过214个赞
知道答主
回答量:299
采纳率:0%
帮助的人:0
展开全部
ct(x1,y1,x2,y2)
x1和y1表示按钮左上角坐标
x2和y2表示按钮右下角坐标

所以x2必须大于x1,y2必须大于y1;
你的x都设成了100,按钮的宽度为0了,当然不显示了。
明白了不。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-27
展开全部
这是CRect的构造函数,他会在内存堆栈中生成一个临时CRect对象。而Create函数的参数是引用类型的CRect,所以可以直接那样使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-28
展开全部
const RECT& 是引用
const RECT *是指针
传引用和传指针在效率方面是一样的,但是传引用相对于传指针有一个好处就是,不用判断这个指针是否为空。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式