程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> IE中關於半透明和透明控件的一些說明

IE中關於半透明和透明控件的一些說明

編輯:關於VC++

一、大家在有些時候希望自己做的控件是半透明或透明的,就像半透明的窗體一樣,我經過一段時間的查詢,發現這個是可以實現,我們來看看它的實現以及帶來的一些問題吧。首先:制作控件的時候需要無窗口支持,也就是說控件不需要窗口。如果控件有窗口,那麼我們需要處理關於窗口繪制的很多麻煩事情。窗口上,我們如果沒有進行繪制的部分,微軟的人為我們想到了,他們處理了,不過處理的非常不理想,大家可以試驗一下,簡直是非常的.......。而且我們的窗口一定是矩形,不可能成為其他的形狀。

其次:我們需要對放到ie中的控件進行一定的設置,我們需要在object標簽的風格上加上FILTER: alpha(opacity=80);的一些東西,他的意思是告訴ie我們的控件透明的程度。具體請看test.html。而且這個需要較高版本的ie的支持。

二、相關代碼,從在這個函數,也可以在創建的時候選擇無窗口支持,想到會添加一下代碼:

DWORD CTestCtrl::GetControlFlags()
{
  DWORD dwFlags = COleControl::GetControlFlags();
  // The control can activate without creating a window.
  // TODO: when writing the control''s message handlers, avoid using
  //    the m_hWnd member variable without first checking that its
  //    value is non-NULL.
  dwFlags |= windowlessActivate;
  return dwFlags;
}

三、以下是想到圖片和程序運行圖片,僅供參考:

圖一 向導圖片

圖二 程序運行結果

四、程序編譯以後,會注冊控件,打開test.html就可以看到結果了。 需要說明的是控件是無窗口的,這樣對處理窗口的事情有些麻煩,比如點控件希望出現菜單,這個實現由問題,而且對消息的捕獲不是很靈。我采用了迂回的方法解決的這個問題,如果那位高手可以直接解決這個問題,請告訴我,在這裡先謝謝了。這個技術實現還要感謝曾經在vckbase上幫助過我的朋友們。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved