在OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)中改变控件背景色.字体色时,其他都可以但按钮的改变不了请高手指点
解决方案 »
- VS2005的 com工程,为什么不能给接口添加属性了?
- 年底啦 - 准备回家了,写下来做程序员 4 年多的总结
- 打开SDK的command line debug build environment是什么意思?如何操作?多谢了!
- 窗体的Caption
- CSDN中从未有人问过的东东:关于数据结构的!
- 一个关于对话框奇怪的问题,在线给分!!!
- 关于字体问题 100分送 等ing
- Windows 编程中关于窗口(window)和视口(viewport)的概念如何理解?
- 我用100分来搜集图形处理编程的网站及经典介绍。
- 自己写的内存分配,如何调用构造函数呢?
- 在用ATL写的ASP服务器组件里不能创建线程吗?
- 100分求操作系统“内存管理”和“文件管理”实验
或者到网络上找一个别人写好的控件自己在去修改吧。
{
HBITMAP hBitmap;
hBitmap = (HBITMAP)::LoadImage(AfxGetApp()->m_hInstance ,"c://bag.gif",0,0,0,0); // = CreateBitmap(8, 8, 1, 1, (LPSTR)wWeave);
hbr = CreatePatternBrush(hBitmap);
pDC->SetTextColor(RGB(0,0,255)); //改变字体的颜色
hbr=(HBRUSH) m_bluebrush;
}
不过我使用的是CButtonST类,蛮好用的
如果觉得不满意,自己还可以添加一些需要的函数
要想改变按钮的背景色只有自己画按钮了!
网上有很多例子,搜索一下,一大堆的!呵呵……
推荐使用 CButtonST 类,不用自己再写代码了
http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=301&page=2
打开ClassWizard,选择最后一个属性页ClassInfo,在本页面下半部,有一个Message Filter下拉列表框,一般默认是Dialog,你把它改成Window,然后回到第一个页面Message Maps,就能看到WM_CTLCOLOR消息了。再给你一个示范代码:
void CChangeColorDlg::OnButtonChangecolor()
{
CDC dc;
SendMessage(WM_CTLCOLOREDIT, (WPARAM) dc.GetSafeHdc(), 0);
GetDlgItem(IDC_EDIT_TEST)->SetFocus();
}HBRUSH CChangeColorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
//Generate pseudorandom number
int R = rand()%255;
int G = rand()%255;
int B = rand()%255;
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
SetTextColor(pDC->m_hDC, RGB(R,G,B));
return hbr;
}
这里讲的也非常好
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_SCROLLBAR)
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_EDIT)
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(160,180,220));
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
return b;
}
else if(nCtlColor==CTLCOLOR_DLG)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(160,180,220));
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
return b;
}
else if(nCtlColor == CTLCOLOR_BTN)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
是因为没有把按钮的owner drawer勾中
你再试一下