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

打造透明視窗:WS_EX_TRANSPARENT 與 WM_ERASEBKGND 完整實作

     編輯:VC 教學

實作步驟

  1. 覆寫 CreateParams,加入 WS_EX_TRANSPARENT 延伸樣式。
  2. 覆寫 WM_ERASEBKGND 訊息處理,設定背景模式為不透明並回傳 1 表示已處理。

完整程式碼範例

標頭檔 (TYourForm.h)

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);
};

實作檔 (TYourForm.cpp)

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;  // 表示已處理背景擦除
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved