1. 程式人生 > >static控制元件動態透明顯示的完美解決方案

static控制元件動態透明顯示的完美解決方案

  在有背景圖片的對話方塊中,static控制元件的透明顯示是一個非常普通的問題。

  常用的解決辦法可以通過過載OnCtlColor函式設定背景透明,再返回一個空畫刷來解決。

  [cpp] view plaincopy

  01.if(nCtlColor == CTLCOLOR_STATIC )

  02.{

  03. pDC->SetBkMode(TRANSPARENT);//設定背景透明

  04. pDC->SetTextColor(RGB(255,255,0));//設定字型為黃色

  05. return (HBRUSH)::GetStockObject(NULL_BRUSH);

  06.}

  但這種方法有一個弊端:不能動態更新static控制元件內容,否則輸出的文字會重疊。

  對於動態更新問題的解決辦法就是將控制元件背後的對話方塊圖片貼到控制元件上來,這樣就可以實現static控制元件的動態更新了。

  下面將詳敘通過CTransparentStatic類來實現static控制元件動態的透明顯示的解決方案,其中在CTransparentStatic類的OnPaint函式中實現了動態更新控制元件背景圖片(即將將控制元件背後的對話方塊圖片貼到控制元件上來)。lfbjz.codeplex.com

  1、在標頭檔案中為static控制元件增加一個變數(ID為IDC_STATIC_ELAPSETIME ),並使此變數型別為CTransparentStatic,而不是預設的CStatic

  [cpp] view plaincopy

  01.CTransparentStatic m_staEelapseTime;

  2、在對話方塊的OnInitDialog函式中設定此控制元件的字型大小和顏色

  [cpp] view plaincopy

  01.m_staEelapseTime.SetFont(&m_font1);

  02.m_staEelapseTime.SetTextColor(RGB(255,255,0)); //黃色

  3、在OnCtlColor函式中設定此控制元件透明和顏色,並返回一個空畫刷。

  [cpp] view plaincopy

  01.if( pWnd ->GetDlgCtrlID() == IDC_STATIC_ELAPSETIME )

  02. {

  03. pDC->SetBkMode(TRANSPARENT);//設定背景透明

  04. pDC->SetTextColor(RGB(255,255,0));//設定字型為黃色

  05. return (HBRUSH)::GetStockObject(NULL_BRUSH);

  06.

  07. }

  注意,第三步必須有,否則動態顯示staEelapseTime控制元件內容時,會先繪製windows預設的static控制元件,造成控制元件閃爍,自己試一下就知道了。

相關推薦

static控制元件動態透明顯示完美解決方案

  在有背景圖片的對話方塊中,static控制元件的透明顯示是一個非常普通的問題。   常用的解決辦法可以通過過載OnCtlColor函式設定背景透明,再返回一個空畫刷來解決。   [cpp] view plaincopy   01.if(nCtlColor == CTLC

Winform重寫CreateParams實現控制元件透明顯示(Panel為例)

前陣子做GIS,要實現圖層的顯示效果,嘗試將2個PictureBox(該PictureBox實際是自定義的元件繼承自panel,原本想直接重寫PictureBox,但是前景和背景支援透明,疊在還是會有問題)疊在一起,將上面的一張圖片的BackColor和ForeColor設

asp.net 呼叫echarts顯示圖表控制元件隨瀏覽器自適應解決方案

1、問題來源        我們在asp.net開發中常使用到frameset的框架結構,比如上左中右方式,在中間部分是一個可以控制左側部分顯示隱藏的功能,這時右邊內容區域如果有使用echarts進行圖表顯示時,就會出現不能隨瀏覽器自適應,我們該如何做呢?2、解決方法   

C# DataGridView控制元件清空資料完美解決方法

C# DataGridView控制元件繫結資料後清空資料 在清除DataGridview的資料時: 1.DataSource為NULL(DataGridView.DataSource= null;)這樣會將DataGridView的列也刪掉。   2.用DataGridvi

Flutter: PageView/TabBarView 等控制元件儲存狀態的問題解決方案

前言: 我們通常會在用到 PageView + BottomNavigationBar 或者 TabBarView + TabBar 的情況. 但是大家發現當我們切換到另一頁面的時候, 前一個頁面就會被銷燬, 當再返回前一頁時, 頁面會被重建. 隨之資料要重新載入,

android 6.0, 7.0之動態申請許可權完美解決方案

android 7.0 動態申請許可權工具類 對於實際開發的程式原來說,對許可權申請肯定不會陌生.由於android 6.0 之後有些許可權不僅需要在 mainfest中註冊,

DELPHI控制元件FastReport中文Memo顯示問題的完美解決方案

問題描述,正如rainee所說:程式設計時Memo中的中文顯示正常,預覽也正常。程式執行時Memo中的中文只能顯示前幾個漢字,有時甚至不能顯示。再次開啟程式原始碼,會發現Memo中的中文沒儲存下來或儲存不完全。如果用Memo顯示欄位或變數的值,其中的中文顯示正常。除了文章提

DevExpress控制元件cxGrid實現多列模糊匹配輸入的完美解決方案

本方案不需要修改控制元件原始碼,是完美解決cxgrid或TcxDBExtLookupComboBox支援多列模糊匹配快速輸入的最佳方案!! 小哥摸索多日,終於搞定cxgrid和TcxDBExtLookupComboBox可以支援多列模糊查詢輸入了! 縱觀網上的方案,不是

CStatic控制元件背景透明且改變其文字時,文字重疊解決方法

問題 提出: 最近在專案中將CStatic控制元件設定為背景透明且在一個定時器函式改變其文字,結果CStatic的文字重疊了。解決該問題的方案是:從CStatic類派生自己的靜態文字控制元件。 其實設定背景透明,也就是在CStatic重畫時,返回一個空刷子而已,所以改

WebView控制元件載入網頁顯示速度慢的究極解決方案

可以看到在載入完最後一個JS指令碼之後,對DOM元素的渲染和處理就花了8秒,然後執行了AJAX方法載入外部頁面又花了2、3秒,最後才會觸發onPageFinished顯示頁面。再往後由於程式中設定了setBlockNetworkImage(false),所以開始載入外部圖片。(如果不控制這個引數,圖片載入會在

Android的WebView控制元件載入網頁顯示速度慢的究極解決方案

       Android客戶端中混搭HTML頁面,會出現雖然HTML內容載入完成,標題也正常顯示,但是整個網頁需要等到近5秒(甚至更多)時間才會顯示出來。研究了很久,搜遍了國外很多網站,也看過PhoneGap的程式碼,一直無解。        一般人堆WebView的加速,都是建議先用webVi

ActiveX控制元件在IE中不能顯示解決方案

Q: VC6生成MFC ActiveX,使用htm呼叫, CLASSID="CLSID:12342234-3234-4234-5234-623472348234" CODEBASE="testocx.cab#version=1,0,0,1" 在WinXPSp1上,ht

java中設定JFrame或者JPanel的佈局為空的時候,出現控制元件不能顯示問題的解決

最近在寫一個壓縮演算法,用到了java.swing。也遇到了控制元件不能顯示的問題,現總結如下:1. JFrame和JPanel都是容器,必須在在裡面新增子容器和控制元件之前設定佈局為null,不然控制元件是新增不進去的。2.如果是很小的矩形框,可能是JFrame未指定大小。

DropDownList控制元件應用之TextBox或另一個DropDownList控制元件動態顯示該選中項指定內容

在設計檢視中新增一個文字框,實現:當我們在下拉列表框中選擇某個索引項時,立刻在文字框TextBox控制元件中顯示的功能。(如圖所示)          要實現這樣的功能得先設定伺服器回發為真(即autopostback為true),可以在屬性中找到該屬性並設定然後雙擊下拉列表控制元件,啟用Selected

解決ASP.NET的TREEVIEW控制元件不能顯示樹型結構

    當我們使用ASP.NET的TREEVIEW控制元件時候,我們發現ASP.NET的TREEVIEW控制元件不能顯示樹型而是顯示為順序排列的文字。我們該怎麼解決呢?     (1)安裝IEWebControls.(下載地址:http://asp.net/IEWebCont

vc2010中mfc/com選單、控制元件等漢字顯示為問號或亂碼的解決方法

在vc2008中建立基於mfc的project。在嚮導的Application type頁面中如果在resource language選項中選擇“英語(美國)”(圖一),那麼在project中的設定選單或者控制元件(如button)上的漢字會最終顯示為“?”。有幾個漢字就

WPF 自定義控制元件的坑(蠢的:自定義控制元件內容不顯示

原文: WPF 自定義控制元件的坑(蠢的:自定義控制元件內容不顯示) 自定義控制元件不顯示內容 由於工作需要在寫WPF,其中想要實現一些自己的控制元件所以直接自定義了控制元件博主是繼承了ContenControl的控制元件開始寫的但是發現不管設定Content屬性為任何都是不顯示

easyui datebox時間控制元件如何只顯示年月

easyui datebox控制元件,只顯示年月,不顯示年月日 需要的效果圖如下: 具體的js程式碼: <script> $(function(){ intiMonthBox('costTime'); }); var

MFC入門(三)-- MFC圖片/文字控制元件(迴圈顯示文字和圖片的小程式)

慣例附上前幾個部落格的連結: MFC入門(一)簡單配置:http://blog.csdn.net/zmdsjtu/article/details/52311107 MFC入門(二)讀取輸入字元:http://blog.csdn.net/zmdsjtu/article/details/52315088 &

BootStrap讓兩個控制元件在一行顯示(label和input同行)

1 、新增class=“form-inline” <div class="row"> <div> <label class="form-inline" />參加單位: