橡塑海绵可以铺床吗:如何使STATIC控件的背景透明以及动态改变控件文本内容时闪烁的问题

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 03:33:34
  一、用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);   //  整个客户区无效  
        }