重载OnCtlColor试试
case CTLCOLOR_BTN:
// let static controls shine through
pDC->SetBkMode(TRANSPARENT);
return HBRUSH(m_HollowBrush);
case CTLCOLOR_BTN:
// let static controls shine through
pDC->SetBkMode(TRANSPARENT);
return HBRUSH(m_HollowBrush);
解决方案 »
- 菜单命令调用对话框按钮功能实现(迷惑中)
- 如何终止一个进程(附源码)!!!!!!!!!!1
- 分别用vc6和vc2003编译同一段代码的问题。struct sockaddr_storage,急哈。
- 软件升级,顺便散点分~~
- 写过代理服务器的高手救救我
- com在.net中处于哪种地位,现在学com值得不?".net组件"到底指的是什么? up有分..
- 进程和线程到底是什么
- ====不知所措的我 兄弟们帮我一下,看我该如何??兄弟我先谢了!!====
- 送分:怎么反"66"变成"B"?
- 怎样丛别的进程中读到我想要的数据?十万火急,拜托各位大师了
- 我有Exceptional C++ 、C++ Primer 3/e 、Generic Programming and the STL的消息
- 编译器老说:error C2065: 'CoCreateInstanceEx' : undeclared identifier
BCB中可设置其Transparent为True
就是对话框没有背景画图它照样不能显示出来,既然OWNER DRAW,你就需要做一些DRAW的工作...
Button1->LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2,NULL,NULL);
在ONPAINT中设置画背景图,但是CBitmapButton就是出不来!是否还要在程序中自己画BUTTON上的图片?如要,在什么时候画?
Button1->LoadBitmaps(IDB_BITMAP1);//给BUTTON加载图片
}CMyProgram::OnPaint(){
DrawBackImage();//绘制背景
}如果这样做,BUTTON显示不出来,但是,按下面的做法就能出现了CMYProgram::OnShowWindow()
{
RECT rc;
GetClientRect(&rc);
MoveWindow(&rc); //移动并调整窗口大小
DrawBackImage();//绘制背景 Button1->LoadBitmaps(IDB_BITMAP1);
}CMYProgram::OnPaint()
{
RECT rc;
GetClientRect(&rc);
MoveWindow(&rc); DrawBackImage();
}注意一个地方,在得到移动窗口坐标时不能使用GetWindowRect(),只能用GetClientRect()。大家可以自己试一下,真的好奇怪!
加入return false;去掉原来代码即可,
请你看看这个可能对你有帮助:
void CBackGroundDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
//CDialog::OnPaint();
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP);
BITMAP bitMap;
bmpBackground.GetBitmap(&bitMap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
}
}
这样做很好的。 我试过了。