GetStockObject(HOLLOW_BRUSH) 屏蔽了 pStatic->SetBitmap() ?
我在一个对话框程序中用了控件 picture ,当触发某消息时显示一张位图,否则不显示任何位图
if(!chackflag)
{
hBitmap = (HBITMAP)LoadImage(NULL, //不是资源文件
mPicture, //图片路径
IMAGE_BITMAP, 0, //源位图宽
0, //
LR_LOADFROMFILE|LR_DEFAULTSIZE);
pStatic-> ModifyStyle(0xF, SS_BITMAP|SS_CENTERIMAGE);
pStatic-> SetBitmap(hBitmap);
}
else
{
//pStatic-> ModifyStyle(0xF, SS_BITMAP|SS_CENTERIMAGE);
pStatic-> SetBitmap(NULL);
}
UpdateData(FALSE);
程序运行正常,后来为了实现静态文本背景透明我增加了WM_CTLCOLOR消息,并在相应处理函数中添加代码:
HBRUSH CGOPOSDlg::OnCtlColor(CDC* pDC,.....)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_STATIC)
{
pDC-> SetBkMode(TRANSPARENT); //设置背景透明
pDC-> SetTextColor(RGB(255,255,255)); //字体颜色
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
return hbr;
}
结果原来控制位图显示的 pStatic-> SetBitmap(NULL); 失去了作用,上一次显示的位图不能被取消(不能改变已经输出了的位图)
如果屏蔽了return HBRUSH(GetStockObject(HOLLOW_BRUSH)); 就可以恢复正常
难道是GetStockObject(HOLLOW_BRUSH)和 SetBitmap()有冲突吗?
我该怎么做呢?谢谢回答^_^
[解决办法]
哈哈~~~~~~~恭喜