BCB 窗体透明控件

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

本文根据 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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航