我现在把radio button 设成不响应外部选择(取消其属性菜单里Styles tab 下的自动选项),
我现在利用该radio button group作为显示程序中一个变量的状态的显示面板。这时候程序是正确的。点击radio button 不会出错。
我同时需要动态改变一个static button 的背景颜色。我重载函数
HBRUSH CS1_Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_STATIC
&& m_pwdBttn[3]->GetDlgCtrlID() == IDC_STATIC_RECEIVE
&& m_bModify == TRUE)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(m_clrText);
m_bModify = FALSE;
m_brshMYBRUSH.CreateSolidBrush(m_clrBackGround); return (HBRUSH)m_brshMYBRUSH;
}
return hbr;
}
可是我发现这时候若是点击radio button的话,程序立即出现错误提示,并且整个程序被强制终了。
在debug 的时候我发现GetDlgCtrlID()出现了没有句柄的错误提示。
请问应该如何清除该错误?
我现在利用该radio button group作为显示程序中一个变量的状态的显示面板。这时候程序是正确的。点击radio button 不会出错。
我同时需要动态改变一个static button 的背景颜色。我重载函数
HBRUSH CS1_Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_STATIC
&& m_pwdBttn[3]->GetDlgCtrlID() == IDC_STATIC_RECEIVE
&& m_bModify == TRUE)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(m_clrText);
m_bModify = FALSE;
m_brshMYBRUSH.CreateSolidBrush(m_clrBackGround); return (HBRUSH)m_brshMYBRUSH;
}
return hbr;
}
可是我发现这时候若是点击radio button的话,程序立即出现错误提示,并且整个程序被强制终了。
在debug 的时候我发现GetDlgCtrlID()出现了没有句柄的错误提示。
请问应该如何清除该错误?
解决方案 »
- 小问题
- MFC中如何判断一个窗口(CWnd)对象是否存在?
- 实现鼠标拖拽滚动视图??
- 如何进行远程调试???请教高手.
- 主线程如何向子线程发消息啊?
- CString::Format( _T( "%.100f" ), double )好象有BUG还有什么函数可以把double刑转换成String 么?
- 哪里有winzip加密算法的源码?
- CFormView中使用MSCOMM,请不要说与CDialog添加一样,最好能给个代码,谢谢。
- 关于表格输出,请指点!
- 请问:已知一个函数的地址,在VC中如何通过地址调用它?
- (在线等,马上给分)请问,如何实现当焦点在一个Edit中时,按下回车键,响应一个消息函数
- VC里面怎么判断一个字符串是不是符合日期格式,或者判断是不是数字?
m_pwdBttn[3]是我想要改变其颜色的一个static button的指针。
m_pwdBttn[3]->GetDlgCtrlID()改为pWnd->GetDlgCtrlID()有什么不同?
m_pwdBttn[3]->m_hWnd == ::GetDltItem(m_hWnd, IDC_STATIC_RECEIVE)
通不过编译!
显示:GetDltItem' :非 '`global namespace'的成员
'==' : 从'int' 到 'struct HWND__ *' 无法变换
改为pWnd->GetDlgCtrlID()的话
在我的dialog上面有众多的控件,如何区分我要改变哪个的颜色?