zoukankan      html  css  js  c++  java
  • BCB 窗体透明控件

    http://www.wangchao.net.cn/bbsdetail_19296.html

    本文根据 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(王朝网络 wangchao.net.cn)

     
    标签: BCB  控件  窗体  透明 
  • 相关阅读:
    Sum Root to Leaf Numbers
    Sum Root to Leaf Numbers
    Sort Colors
    Partition List
    Binary Tree Inorder Traversal
    Binary Tree Postorder Traversal
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Search a 2D Matrix
    leetcode221
  • 原文地址:https://www.cnblogs.com/chulia20002001/p/1829095.html
Copyright © 2011-2022 走看看