天天看点

制做透明窗口 - Xproer-松鼠

制做透明窗口

在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)

制做透明窗口 - Xproer-松鼠
制做透明窗口 - Xproer-松鼠
制做透明窗口 - Xproer-松鼠

{

    SetBkMode(GetWindowDC(this->Handle),OPAQUE);

    ReleaseDC(this->Handle,GetWindowDC(this->Handle));

    Message.Result = 1;

}

void __fastcall CreateParams(TCreateParams &Params)

制做透明窗口 - Xproer-松鼠
制做透明窗口 - Xproer-松鼠
制做透明窗口 - Xproer-松鼠

{

    TForm::CreateParams(Params);

    Params.ExStyle |= WS_EX_TRANSPARENT;

}

参考资料:

《C++ Builder 精彩编程实例集锦》 004 如何制作透明程序窗口