重生耽美种田文微盘:如何使STATIC控件的背景透明以及动态改变控件文本内容时闪烁的问题

来源:百度文库 编辑:九乡新闻网 时间:2024/03/29 23:13:00

如何使STATIC控件的背景透明以及动态改变控件文本内容时闪烁的问题

一、用VC编写基于对话框的应用程序,用BMP位图作为对话框背景,对话框上的STATIC静态文本框,可以用以下消息函数使文本框的文字背景透明:  

HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 
 // TODO: Change any attributes of the DC here
 if( nCtlColor == CTLCOLOR_STATIC)    
 {  
  pDC->SetBkMode(TRANSPARENT);   //设置背景透明
  return   HBRUSH(GetStockObject(HOLLOW_BRUSH));  
  
 }  

 // TODO: Return a different brush if the default is not desired
 return hbr;

二、动态改变控件文本内容时闪烁,可以用以下函数解决这个问题:

 void   CXXXDlg::OnBtnStatic()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here 
  //    IDC_STATIC_ST为静态文本控件ID号  
  CStatic*   pSt   =   (CStatic*)GetDlgItem(   IDC_STATIC_ST);  
  pSt->SetWindowText("北京2008");  
  RECT   rect;  
  pSt->GetWindowRect(&rect);  
  ScreenToClient(&rect);  
  InvalidateRect(   &rect,FALSE   );  
  //Invalidate(FALSE);   //  整个客户区无效  
  }