首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

GetStockObject(HOLLOW_BRUSH) 屏蔽了 pStatic->SetBitmap() ?该如何处理

2012-01-26 
GetStockObject(HOLLOW_BRUSH) 屏蔽了 pStatic-SetBitmap() ?我在一个对话框程序中用了控件picture,当触

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()有冲突吗?

我该怎么做呢?谢谢回答^_^


[解决办法]
哈哈~~~~~~~恭喜

热点排行