如何在onButton()事件里调用函数OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

every 2001-08-09 02:46:51
...全文
354 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
every 2001-08-09
  • 打赏
  • 举报
回复
谢谢了!!!!!!!!!!
prog_st 2001-08-09
  • 打赏
  • 举报
回复
m_bButtonClicked为CXXXDlg的成员变量初始设为FALSE;
void CXXXDlg::OnButton1()
{
// TODO: Add your control notification handler code here
m_bButtonClicked=TRUE;
Invalidate();
}
HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor==CTLCOLOR_STATIC&&m_bButtonClicked)
{
pDC->SetBkColor(RGB(0,255,255));
CBrush Brush(RGB(0,255,255));
hbr=(HBRUSH)(Brush.GetSafeHandle());
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
every 2001-08-09
  • 打赏
  • 举报
回复
那请问具体的语句该这样写?
小生刚学VC不久?
先谢谢了?
prog_st 2001-08-09
  • 打赏
  • 举报
回复
那你可以在OnCtlColor中设个开关,在OnButton中重新设置开关值,不用直接调用!
every 2001-08-09
  • 打赏
  • 举报
回复
我不是改变Button的颜色我是想改变STATIC的颜色 在Button里只是作为一事件.在重新调有
OnCtrlColor (...)函数 来重新改变STATIC的颜色
HBRUSH CBackstaticDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if (pWnd->GetDlgCtrlID() == IDC_STATIC1)
{
// Set the text color to red
pDC->SetTextColor(RGB(255, 0, 0));

// Set the background mode for text to transparent
// so background will show thru.
pDC->SetBkMode(TRANSPARENT);

// Return handle to our CBrush object
hbr = m_brush;
}
BOOL CBackstaticDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_brush.CreateSolidBrush(RGB(0,255,255));

return TRUE; // return TRUE unless you set the focus to a control
}
只要我在onButton()里重新给m_brush.CreateSolidBrush(RGB(0,255,0));
在重载 OnCtrlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 不是ok吗?
prog_st 2001-08-09
  • 打赏
  • 举报
回复
如果只想改变Button的颜色,建议使用CBitmapButton
WM_CTLCOLOR在Button的窗口中处理,但对button不管用!
every 2001-08-09
  • 打赏
  • 举报
回复
在onButton()函数里我想重载 OnCtrlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 函数.
在一般就可以直接写 该函数名等,可想OnCtrlColor函数后面还有CDC,CWnd,nCtlColor
三个值不知这样写? 有位朋友教我用WM_CTLCOLOR消息但我不知具体代码这写?
prog_st 2001-08-09
  • 打赏
  • 举报
回复
不可能!

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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