有关HBRUSH的疑问。

sr388 sr388 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
MFC AppWizard为我们生成的应用程序中,视图类的PreCreateWindow()被自动添加了如下代码:

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;

cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), HBRUSH(COLOR_BTNFACE+1), NULL);

return TRUE;
}

其中:

cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, ::LoadCursor(NULL, IDC_ARROW), HBRUSH(COLOR_WINDOW+1), NULL);

为视图窗口注册了窗口类。参数HBRUSH(COLOR_WINDOW+1)为视图窗口客户区指定了背景刷子。但HBRUSH(COLOR_WINDOW+1)表达式是什么意思呢?
如果是CBrush(RGB(255, 255, 255))就很好理解了:在栈中构造一个白色的刷子对象,并把它作为实参传递给AfxRegisterWndClass(),以决定视图窗口客户区的背景颜色。但此例中的HBRUSH(COLOR_WINDOW+1)是什么意思呢?如果说是把COLOR_WINDOW+1的值强制类型转换为HBRUSH的话,那正确的表达式应为:(HBRUSH)(COLOR_WINDOW+1)。

迷糊了,迷糊了,请前辈们指点迷津。(HBRUSH)(COLOR_WINDOW+1) 表达式究竟是什么意思。

...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
sr388
VC/MFC 16,550 成员 421,606 内容