句柄 MFC

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:50:19
在SDK编程中,如果对一个窗口背景进行更改颜色,通常步骤是
定义一个画刷句柄,
HDC hDC;
HBRUSH hBrush; 【 注意这里:定义了一个画刷句柄】
hBrush = (HBRUSH)GetStockObject(XXXX);
SelectObject(hDC,hBrush);
Rect(hDC,,,,,,);
这代码可以看懂吧????

在MFC程序中,我设置标题栏图标,使用
HICON hIcon; 【注意这里:定义了一个图标句柄】
hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
SetIcon(hIcon,true);

但是在绘制view类背景时候,OnDraw()中
CBRUSH m_Brush(RGB(,,));【注意这里:没有定义画刷句柄,和第一个“注意”比较一下】
CRECT m_Rect(,,,);
pDc->FillRect(m_Rect,&m_Brush);

可以绘制背景了。

我的问题就是:
第一个“注意”定义了句柄,因为是SDK编程;
在第二个“注意”里,是MFC,但是有HICON,
为什么在第三个“注意”里就没有了句柄,而是类对象呢?

第三个不需要句柄了
第三个是定义一个画刷类的对象 直接默认的将句柄传到了对象的内部
你见过什么类定义对象的时候需要句柄呢?
句柄是一个窗口 图标 或者需要识别的进程的识别标识
类的定义直接有对象名 还有很多可以标识的指针和其他东西
所以不必将句柄提前定义

注意 你的第三个注意调用函数的方式
因为CDC里面有一个句柄的对象,当用pDc调用调用函数FillRect()的时候,已经把句柄传递进入啦,所以就不需要句柄了
祝你编程顺利!!