BCB 窗体透明控件

    技术2022-05-11  122

    本文根据 CandyCat    收藏的 《编程实现窗体的半透明效果(作者:罗蔷)》一文修改而成,供BCB+Win2000使用。 将控件安装即可使用   btw:分类里面,没有BCB,只好贴到delphi里面 头文件: //--------------------------------------------------------------------------- #ifndef TransparentFormH #define TransparentFormH //--------------------------------------------------------------------------- #include <SysUtils.hpp> #include <Controls.hpp> #include <Classes.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- class PACKAGE TTransparentForm : public TComponent { private: protected:     int m_nAlphaValue;     HWND m_hParentFormHandle;     void __fastcall SetAlphaValue(int nAlpha);     void __fastcall UpdateDisplay(); public:     __fastcall TTransparentForm(TComponent* Owner); __published:     __property int AlphaValue = {read = m_nAlphaValue, write = SetAlphaValue, default = 0}; }; //--------------------------------------------------------------------------- #endif cpp文件:   //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "TransparentForm.h" #pragma package(smart_init) //--------------------------------------------------------------------------- // ValidCtrCheck is used to assure that the components created do not have // any pure virtual functions. //   static inline void ValidCtrCheck(TTransparentForm *) {     new TTransparentForm(NULL); } //--------------------------------------------------------------------------- __fastcall TTransparentForm::TTransparentForm(TComponent* Owner)     : TComponent(Owner) {     if (ComponentState.Contains(csDesigning))         return;     m_nAlphaValue = 255 ;     m_hParentFormHandle = ((TForm *)(Owner))->Handle ;     SetWindowLong(m_hParentFormHandle, GWL_EXSTYLE, GetWindowLong(m_hParentFormHandle, GWL_EXSTYLE) | WS_EX_LAYERED); } //--------------------------------------------------------------------------- namespace Transparentform {     void __fastcall PACKAGE Register()     {          TComponentClass classes[1] = {__classid(TTransparentForm)};          RegisterComponents("Easysoft", classes, 0);     } } //--------------------------------------------------------------------------- void __fastcall TTransparentForm::SetAlphaValue(int nAlpha) {     if (nAlpha >= 0 && nAlpha < 256)     {         m_nAlphaValue = nAlpha;         UpdateDisplay();     } } void __fastcall TTransparentForm::UpdateDisplay() {     if (ComponentState.Contains(csDesigning))         return;     SetLayeredWindowAttributes(m_hParentFormHandle, 0, m_nAlphaValue, 2); } //wei@shijun.com //http://www.shijun.com //5/19/2001  

    最新回复(0)