OnCtrlColor(CDC *pDC, CWnd * pWnd, UINT nCtlColor)参数pWnd的作用

Luo_Bryant 2012-12-29 09:55:55
HBRUSH CSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

// TODO: Return a different brush if the default is not desired
if(pWnd->GetDlgCtrlID()==IDC_LINE_STYLE)
{
pDC->SetTextColor(RGB(0,255,0));
pDC->SetBkMode(TRANSPARENT);
return m_brush;
}
if(pWnd->GetDlgCtrlID()==IDC_LINE_WIDTH)
{
pDC->SetTextColor(RGB(255,0,0));
// pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(RGB(0,0,255));
return m_brush;
}
if(pWnd->GetDlgCtrlID()==IDC_TEXT)
{
pDC->SelectObject(&m_font);
}

if(pWnd->GetDlgCtrlID()==IDOK)
{
pDC->SetTextColor(RGB(255,0,0));
return m_brush;
}
return hbr;
}

为什么直接GetDlgCtrlID()==IDC_LINE_STYLE就不能给对话框中指定的控件改变颜色了呢??
而要pWnd->GetDlgCtrlID()==IDC_LINE_WIDTH,就搞不懂参数pWnd在这里的作用, GetDlgCtrlID()本身就是 CWnd的函数呀,不是可以直接用的吗,为什么在这里还要加上pWnd-> ???
...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gfm688 2012-12-29
  • 打赏
  • 举报
回复
Since top-level windows do not have an ID value, the return value of this function is invalid if the CWnd is a top-level window.
sumos 2012-12-29
  • 打赏
  • 举报
回复
GetDlgCtrlID,你当前所在的是对话框类,这个函数也只是获取对话框的ID。 pWnd就是子控件的指针。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧