BCB 窗体透明控件

原创 2001年05月18日 22:42:00
本文根据 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
 

BCB中的TBitBtn和TSpeedButton(常用来做透明按钮)

我们学过BCB中的TButton, 但是, 它毕竟有局限性, 所以呢, 有时候需要用更高级的按钮, 现在我们来学习TBitBtn和TSpeedButton吧: 1. TBitBtn可以改变其背景颜色,...
  • stpeace
  • stpeace
  • 2015年07月26日 13:24
  • 4501

利用图版背景颜色将PANEL透明化

//-------------------- panel 透明 //* HRGN hRgn = NULL; Graphics::TBitmap* MemoryBitmap ...
  • cmlxiaogeaaa
  • cmlxiaogeaaa
  • 2015年10月08日 14:14
  • 395

BCB实现的全屏半透明窗口

  • 2012年02月20日 15:46
  • 1.25MB
  • 下载

BCB中使TPanel透明

/*从一个论坛发现的代码, 用代码是TPanel透明, 而不是重新写一个组件.*/// Unit1.h//-----------------------------------------------...
  • cczlp
  • cczlp
  • 2008年06月13日 11:19
  • 3936

BCB中如何实现控件半透明

    下面以Button为例来实现     窗体半透明实现简单直接设置属性或者用api来设置层属性来实现,但一般控件设置层属性,却得不到半透明效果。实际上做一下小改动就可以了。响应窗体的OnActi...
  • Y___Y
  • Y___Y
  • 2007年02月01日 14:06
  • 9629

BCB 窗体透明控件

本文根据 CandyCat    收藏的 《编程实现窗体的半透明效果(作者:罗蔷)》一文修改而成,供BCB+Win2000使用。将控件安装即可使用 btw:分类里面,没有BCB,只好贴到delphi里...
  • easypaper
  • easypaper
  • 2001年05月18日 22:42
  • 888

bcb 画透明 C++ JSON解析

  • 2017年08月26日 17:54
  • 547KB
  • 下载

【VB】窗体透明三:窗体、控件变透明

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVa...
  • kajweb
  • kajweb
  • 2017年03月17日 16:41
  • 1387

C#绘制半透明窗体,只让窗体背景半透明,而窗体里面的控件不透明

        Form f = new Form(); //创建一个新窗体        Label lab = new Label(); //要显示的文本        private void ...
  • zwk_9
  • zwk_9
  • 2011年05月20日 10:15
  • 4782

C++Builder/Delphi中透明Panel及透明窗口的实现方法

可能大多数程序员会问:透明窗口,特别是透明Panel有什么应用价值呢?可别小看它们哦,下面我就来讲讲他们的巨大作用。    (1)透明窗口可以用于软件界面特效。大家可以看到很多软件的窗口出现或退出的时...
  • marklr
  • marklr
  • 2008年01月21日 16:16
  • 751
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BCB 窗体透明控件
举报原因:
原因补充:

(最多只允许输入30个字)