怎样改变按钮的颜色?有这方面的详细介绍吗? \比如怎么改变一个按钮的颜色啊?怎么在按钮上贴图?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如何改变控件内的字体颜色?(VCKBASE发表于2001-8-13 10:01:23) [问题提出] 有时对突出问题,或要重点描述的时候,改变控件的字体颜色是很重要的事. [解决方法] 在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型: afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor); 参数nCtlColor用于指定控件的类型,可以是: .CTLCOLOR_BTN 按钮控件 .CTLCOLOR_DLG 对话框 .CTLCOLOR_EDIT 编辑框 .CTLCOLOR_LISTBOX 列表控件 .CTLCOLOR_MSGBOX 消息控件 .CTLCOLOR_SCROLLBAR 滚动条控件 .CTLCOLOR_STATIC 静态控件 [程序实现] 假设你已有了名为My的对话框工程.你有了一个Edit的控件. HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if(nCtlColor==CTLCOLOR_EDIT) pDC->SetTextColor(RGB(255,0,0)); // TODO: Return a different brush if the default is not desired return hbr; } 看看这里http://www.vckbase.com/bbs/prime/index.asp if(nCtlColor==CTLCOLOR_EDIT) pDC->SetTextColor(RGB(255,0,0));是正确的,但是如果CTLCOLOR_EDIT换成CTLCOLOR_BTN 就不行了,编译通过就是不起作用,为什么啊? 按钮要自绘DrawItem()pDC->FillRect(rect(按钮的矩形),COLORREF(颜色)); 按钮要自绘DrawItem()pDC->FillRect(rect(按钮的矩形),COLORREF(颜色));rect(按钮的矩形),这个怎么得到啊?谢谢帮助! 用classwizard重载DrawItem函数。编写代码如下所示:void CXXXXButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct){ CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC); ASSERT_VALID(pDC); CRect rectClient=lpDrawItemStruct->rcItem; pDC->FillRect(rectClient,COLORREF(颜色));} 如何获取一个窗口下多个并行的相同项目的句柄?用spy查看出来的。。 有无类似PLSQL的COMMAND窗口的例子,或者如何编写? 串口线程编程,求助! 如何获取编译信息? Win32控制台程序怎么截获关闭命令 我发现一个很不错的编程,网络安全论坛!~~~~~ 请教在程序中如何运行其它可执行程序.比如txt文件. 急,急,急,有关RichEditView中改变选中内容的颜色问题! 哪位大侠能够讲一下MFC程序的产生、执行、结束全过程(越详细越好) MFC的teechart怎么画三角形,并且填充其中某种颜色? 托普出事了!!!!! 请问MS DATAGRID 6.0如何使用?
(VCKBASE发表于2001-8-13 10:01:23) [问题提出]
有时对突出问题,或要重点描述的时候,改变控件的字体颜色是很重要的事.
[解决方法]
在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:
afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor);
参数nCtlColor用于指定控件的类型,可以是:
.CTLCOLOR_BTN 按钮控件
.CTLCOLOR_DLG 对话框
.CTLCOLOR_EDIT 编辑框
.CTLCOLOR_LISTBOX 列表控件
.CTLCOLOR_MSGBOX 消息控件
.CTLCOLOR_SCROLLBAR 滚动条控件
.CTLCOLOR_STATIC 静态控件
[程序实现]
假设你已有了名为My的对话框工程.你有了一个Edit的控件.
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_EDIT)
pDC->SetTextColor(RGB(255,0,0));
// TODO: Return a different brush if the default is not desired
return hbr;
}
http://www.vckbase.com/bbs/prime/index.asp
if(nCtlColor==CTLCOLOR_EDIT)
pDC->SetTextColor(RGB(255,0,0));
是正确的,但是如果CTLCOLOR_EDIT换成CTLCOLOR_BTN 就不行了,编译通过就是不起作用,为什么啊?
pDC->FillRect(rect(按钮的矩形),COLORREF(颜色));
pDC->FillRect(rect(按钮的矩形),COLORREF(颜色));
rect(按钮的矩形),这个怎么得到啊?
谢谢帮助!
{
CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
ASSERT_VALID(pDC);
CRect rectClient=lpDrawItemStruct->rcItem;
pDC->FillRect(rectClient,COLORREF(颜色));
}