設定richedit背景透明,效果還可以,但是設定memo和edit等時效果不是很理想。****與csdn社群。
提供兩種方法,其實兩種方法大同小異。
第一種方法
richedit1.brush.style := bsclear;
setwindowlong(richedit1.handle,gwl_exstyle,getwindowlong(richedit1.handle, gwl_exstyle) or ws_ex_transparent);
第二種方法
type
ttransparentgroupbox = class(tcustomgroupbox)
private
procedure wmerasebkgnd(var msg: twmerasebkgnd); message wm_erasebkgnd;
protected
procedure createparams(var params: tcreateparams); override;
published
//....
end;
implementation
procedure ttransparentgroupbox.createparams(var params: tcreateparams);
begin
inherited createparams(params);
params.exstyle := params.exstyle or ws_ex_transparent;
end;
procedure ttransparentgroupbox.wmerasebkgnd(var msg: twmerasebkgnd);
begin
setbkmode(msg.dc, transparent);
msg.result := 1;
end;
api函式解釋如下:
getwindowlong :從指定視窗的結構中取得資訊
setwindowlong:
在視窗結構中為指定的視窗設定資訊
透明面板控制項設計系列(五) 透明控制項
現在我們有了透明視窗,那麼所有控制項也應該是透明的。控制項透明,原理其實很簡單,就是把父控制項的影象複製到自己上面即可。例如,常用的方法是給父控制項傳送背景重畫的訊息,同時把自己的dc傳遞過去 sendmessage parent.handle,wm erasebkgnd,dc,0 tctrl pa...
winform 控制項透明
要實現c winform中的控制項與背景的透明,可以通過設定控制項的backcolor屬性為transparent,同時設定其父控制項。因為在c 中,控制項的透明指對父窗體透明。如果不設定parent屬性,那麼控制項將只對form透明,顯示的時候都會把form的背景色 預設為control 重刷一遍...
透明控制項的製作
最簡單的方法是對映wm erasebkgnd訊息,在訊息處理函式中直接return true 這種方法通過不擦除背景實現,故經常會有其他問題,比如文字從帶下劃線都無下劃線的變化中,因為下劃線不擦除,故始終有下劃線.以下提供一種貼圖的方式實現,即將控制項所在位置的背景截圖,然後貼在控制項表面上,在按鈕...