在界面上画方框中的一个问题.

Tassadar1979 2009-08-09 07:11:13
CBrush cBrush(RGB(0,255,0));
CClientDC cClientDC(this);
cClientDC.FillRect(CRect(m_StrartPoint,point) ,&cBrush);



其中FillRect
的定义是void FillRect(LPCRECT lpRect, CBrush* pBrush);

typedef const RECT FAR* LPCRECT;

LPCRECT应该是个指针类型吧.

为什么
cClientDC.FillRect(CRect(m_StrartPoint,point) ,&cBrush);
可以运行,
cClientDC.FillRect(&CRect(m_StrartPoint,point) ,&cBrush);
也可以运行.

我看的例子都用的第一种方法.
这里似乎不区分指针和实例.

...全文
44 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tassadar1979 2009-08-09
哎 谢谢了.
回复
healer_kx 2009-08-09
注意一下 CRect 源码,里面还有这样两个操作符重载。

operator LPRECT() throw();
operator LPCRECT() const throw();
现在明白了?
回复
lexdene 2009-08-09
你可以去看一下MSDN里面CRect类。
CRect类有一个函数可以隐式将CRect型变量转换成LPCRECT型变量。
不需要你显示去调用取地址运算就可以完成传入地址的功能。
同样的还有CPoint类和CSize类。
回复
healer_kx 2009-08-09
MFC里面表示指针的类型,往往以 LP为“前缀”
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告