是不是来处理ON_WM_CTLCOLOR()呢?
把处理背景的代码放进去就可以了吗?下面这段代码行吗?
HBRUSH CSystemSet::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == IDC_SYSTEM_SET_CHECK_LOG)
{
static CBrush hbr;
CRect rt;
GetClientRect(&rt);
if(hbr.m_hObject==NULL){
HBITMAP hbit=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"c:\\one.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_COLOR);
CBitmap*bm=CBitmap::FromHandle(hbit);
hbr.CreatePatternBrush(bm);
bm->DeleteObject();
}
pDC->FillRect(&rt,&hbr);
}
return hbr;
}
把处理背景的代码放进去就可以了吗?下面这段代码行吗?
HBRUSH CSystemSet::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == IDC_SYSTEM_SET_CHECK_LOG)
{
static CBrush hbr;
CRect rt;
GetClientRect(&rt);
if(hbr.m_hObject==NULL){
HBITMAP hbit=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"c:\\one.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_COLOR);
CBitmap*bm=CBitmap::FromHandle(hbit);
hbr.CreatePatternBrush(bm);
bm->DeleteObject();
}
pDC->FillRect(&rt,&hbr);
}
return hbr;
}
解决方案 »
- 请教CLISTVIE::ONCREATE返回-1的问题
- 函数返回值的问题
- CToolTipCtrl在listCtrl上的应用
- 如何响应动态生成树的 OnSelchanged 事件(在线等)
- 用VC如何向Excel中写入Header & Footer (类似Word中的页眉页脚)-------保证给高分
- OnCtlColor的错误问题?
- 在VC中使用QT遇到的问题?
- 有关vc Automation 的问题(价值50分!!!!!)
- 急急!!多文档新建时如何指定模版中的一个?在线等,解决就给分
- 请教一个Resource.h的问题
- 急问MFC中如何配置与SQLserver2000数据库的连接,详细点!(急用,在线等!!!)
- 急求一个可以打开wav文件并显示波形的例子!!!(高分)
我的问题是这样的,我的DIALOG的背景是BMP,我现在想把Check和Radio的设置为透明,这样就跟DIALOG的背景一样了!
应该怎么来做呢?
大家给你说了那末多CButtonST的话你就是不信,呵呵。
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
return hbr;
}
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
return hbr;
}
谢谢你给我的回复,这段代码在DIALOG中可以改变背景的,但我的DIALOG是不是从CDialog继承来的,是从CPropertypage中继承来的,我在从CPropertypage中改的时候就改不了是什么原因呢?
谢谢你!
HBRUSH CMyPro::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
} // TODO: Return a different brush if the default is not desired
return hbr;
}BOOL CMyPro::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
HBITMAP hBmp = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
HBITMAP hOldbmp = (HBITMAP)dcMem.SelectObject(hBmp);
pDC->StretchBlt(0,0,300,200,&dcMem,0,0,48,48,SRCCOPY);
dcMem.SelectObject(hOldbmp);
return TRUE;
}