制做透明窗口
在C++ Builder中,制做透明窗体分为两步:
一是重载CreateParams函数,设置透明风格 WS_EX_TRANSPARENT
二是重载WM_ERASEBKGND消息更新背景
.h文件代码
protected:
void __fastcall WMNC(TMessage &Message);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_ERASEBKGND,TMessage,WMNC);
END_MESSAGE_MAP(TForm);
public: // User declarations
virtual void __fastcall CreateParams(TCreateParams &Params);
.cpp文件代码
void __fastcall WMNC(TMessage &Message)
{
SetBkMode(GetWindowDC(this->Handle),OPAQUE);
ReleaseDC(this->Handle,GetWindowDC(this->Handle));
Message.Result = 1;
}
void __fastcall CreateParams(TCreateParams &Params)
{
TForm::CreateParams(Params);
Params.ExStyle |= WS_EX_TRANSPARENT;
}
参考资料:
《C++ Builder 精彩编程实例集锦》 004 如何制作透明程序窗口