首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ Builder 打造透明視窗

     編輯:關於C++

建立透明視窗的兩步驟

要在 C++ Builder 中實作透明視窗,需覆寫 CreateParams 設定擴充樣式,並處理 WM_ERASEBKGND 訊息避免背景重繪。

標頭檔宣告

class TYourForm : public TForm
{
private:
    void __fastcall WMNC(TMessage &Message);
public:
    __fastcall TYourForm(TComponent *Owner);
    BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_ERASEBKGND, TMessage, WMNC);
    END_MESSAGE_MAP(TForm);
protected:
    virtual void __fastcall CreateParams(TCreateParams &Params);
};

實作檔

void __fastcall TYourForm::CreateParams(TCreateParams &Params)
{
    TForm::CreateParams(Params);
    Params.ExStyle |= WS_EX_TRANSPARENT; // 設定透明擴充樣式
}

void __fastcall TYourForm::WMNC(TMessage &Message)
{
    // 設定背景模式為不透明,避免閃爍
    SetBkMode(GetWindowDC(this->Handle), OPAQUE);
    ReleaseDC(this->Handle, GetWindowDC(this->Handle));
    Message.Result = 1; // 表示已處理背景擦除
}

關鍵點

  • WS_EX_TRANSPARENT 讓視窗成為透明視窗,滑鼠事件會穿透給下層視窗。
  • 處理 WM_ERASEBKGND 並回傳 1,告訴系統背景已自行處理,減少閃爍。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved