问题贴在programfan上面,附有图~希望好心人能帮忙看一下!!!
http://www.programfan.com/club/showbbs.asp?id=197739
http://www.programfan.com/club/showbbs.asp?id=197739
解决方案 »
- 我自己定义了一个结构,并以这个结构为类型创建了一个链表,那么这样用迭代器遍历输出结构中的内容
- 怎么在CEdit前加一人民币(¥)符号>?
- 请解释个数据库函数的使用方法!
- 怎么在点对点的聊天程序中让服务端获取客户断的IP地址?
- ●●极菜问题∶怎样得到当前对话框的句柄?还有对话框上控件的句柄?●●
- 怎样恢复ClassView中的类信息?
- invokehelper 能不能实现对组件或控件的queryinterface方法的调用,如果能queryinterface方法的参数应该是什么类型的?
- 调用wave系列函数写声音程序,为什么只有一个耳机播放声音呢
- 求大神帮忙做一个有银行卡和取款机构成的系统
- 怎样用ISAPI从客户端(IE)得到一个文件 (解决方按)
- 招聘---急
- 如何读出RichEdit控件里的内容?
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here HBRUSH hbrush;
switch(pWnd->GetDlgCtrlID())
{
case CTLCOLOR_STATIC:
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkMode(TRANSPARENT);
hbrush = CreateSolidBrush(CommonColor);//CommonColor在构造时设置为白色
hbr = hbrush;
break;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
当需要重绘控件的时候就会调用OnCtlColor,只要在函数中修改了hbr的值,函数返回的hbr就不再是默认颜色,在重绘其他控件的时候也就会用修改过的hbr去做。
现在的问题是,怎样在使用完OnCtlColor后,把hbr还原为原先的默认值。
Contains one of the following values, specifying the type of control:
CTLCOLOR_BTN Button control
CTLCOLOR_DLG Dialog box
CTLCOLOR_EDIT Edit control
CTLCOLOR_LISTBOX List-box control
CTLCOLOR_MSGBOX Message box
CTLCOLOR_SCROLLBAR Scroll-bar control
CTLCOLOR_STATIC Static control nCtlColor 并不是控件的ID,不能用它来判断,如果用它来判断的话,同类的控件都会重绘,所以导致你上面的问题------------------------------------------------------------------------------------
当需要重绘控件的时候就会调用OnCtlColor,只要在函数中修改了hbr的值,函数返回的hbr就不再是默认颜色,在重绘其他控件的时候也就会用修改过的hbr去做。
针对控件ID修改HBR的值,并不会影响到其他的控件颜色,每个控件重绘的时候都会调用OnCtlColor,但是只有符合条件的控件才重绘,所以并不会用该HBR去绘其他的控件,也不需要把HBR还原-------------------------------------------------------------------------------------你的问题是 nCtlColor这个参数是控件的类型,并不是控件的ID,而你把它当作ID使用
ID应该用 pWnd->GetDlgCtrlID() 来获取
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here HBRUSH hbrush;
switch(pWnd->GetDlgCtrlID())
{
case IDC_STATIC1:
case IDC_STATIC2:
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkMode(TRANSPARENT);
hbrush = CreateSolidBrush(CommonColor);//CommonColor在构造时设置为白色
hbr = hbrush;
break;
default:
break;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}