在CRect中定义了两个转换运算符,即
operator LPCRECT( ) const throw( );
operator LPRECT( ) const throw( );
由于有了这两个转换运算符,所以在需要一个RECT指针的地方,我们可以传递一个CRect的对象。例如:大家知道函数
BOOL GetWindowRect( HWND hWnd,
LPRECT lpRect
);CRect rect;
GetWindowRect(rect);//在这里传递一个CRect的对象rect,由于转换运算符的存在,ok????????????????????????????????????????????????
我的问题是:
现有函数
virtual BOOL Create(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle = WS_OVERLAPPEDWINDOW,
const RECT& rect = rectDefault,
CWnd* pParentWnd = NULL,
LPCTSTR lpszMenuName = NULL,
DWORD dwExStyle = 0,
CCreateContext* pContext = NULL
);
该函数的第四个参数需要传递一个RECT的引用,也就是要传递一个RECT对象,但是为什么在此传递一个CRect对象也能够编译通过呢?
即
CRect rc(100,100,450,450);
Create(NULL,_T("hello"),WS_OVERLAPPEDWINDOW,rc);
请各位大虾帮忙分析一下。
operator LPCRECT( ) const throw( );
operator LPRECT( ) const throw( );
由于有了这两个转换运算符,所以在需要一个RECT指针的地方,我们可以传递一个CRect的对象。例如:大家知道函数
BOOL GetWindowRect( HWND hWnd,
LPRECT lpRect
);CRect rect;
GetWindowRect(rect);//在这里传递一个CRect的对象rect,由于转换运算符的存在,ok????????????????????????????????????????????????
我的问题是:
现有函数
virtual BOOL Create(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle = WS_OVERLAPPEDWINDOW,
const RECT& rect = rectDefault,
CWnd* pParentWnd = NULL,
LPCTSTR lpszMenuName = NULL,
DWORD dwExStyle = 0,
CCreateContext* pContext = NULL
);
该函数的第四个参数需要传递一个RECT的引用,也就是要传递一个RECT对象,但是为什么在此传递一个CRect对象也能够编译通过呢?
即
CRect rc(100,100,450,450);
Create(NULL,_T("hello"),WS_OVERLAPPEDWINDOW,rc);
请各位大虾帮忙分析一下。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货