CListCtrl透明完美實現

2021-07-14 18:29:00 字數 1141 閱讀 1725

實現步驟如下:

1、把clistctrl子類化

2、在ide中把clistctrl的transparent核取方塊勾上。

3、實現wm_parentnotify,**如下:

void cmylistctrl::onparentnotify(uint message, lparam lparam)

szfilename=ff.getfilename();

if (szfilename.isempty())

if (!ff.isdirectory())

} while (bfind);

setredraw(true);

getparent()->invalidaterect(&m_rc);

delete lp;

} else if (message==wm_user+1&&lparam==0)

else

}

4、實現lvn_itemchanged,**如下:

void cmylistctrl::onlvnitemchanged(nmhdr *pnmhdr, lresult *presult)

*presult = 0;

}

5、分別實現lvn_deleteallitems、lvn_deleteitem、wm_hscroll、wm_vscroll、wm_mousewheel,在每個呼叫clistctrl預設處理之後追加一行**:

getparent()->invalidaterect(&m_rc);

*presult = 0;

6、用類嚮導新建乙個繼承cheaderctrl類的新類,實現wm_paint,**如下:

void cmyheaderctrl::onpaint()

else

}

7、過載presubclasswindow,**如下:

void cmylistctrl::presubclasswindow()

C 完美實現透明窗體的繪製效果

為了實現透明窗體的繪製,最開始是採用了雙層窗體的模式。思路 將form1的屬性transparencykey設定為背景色,將form2的opicaty設定的很低,比如0.05,保證滑鼠不會穿透!讓後將 使用form1建立的繪製物件 form1.creategraphics 去繪製即可!後面方面使用單...

純GDI完美實現半透明不規則視窗

以前在研究半透明不規則視窗的時候,用的是gdi的textout drawtext繪製字型,但繪製出的字型是透明的,現在我完全放棄了gdi的textout bitblt 的方式,而用setdibitstodevice 代替,就是直接貼畫素到dc裡。今天嘗試用setdibitstodevice upda...

物件整體透明實現

在網上沒找到參考 自己想了兩個辦法 1。將物件渲染到紋理上,再把紋理混合到主表面上。zbuffer不用切換,依然使用主表面的zbuffer,這樣層次不會亂。這種做法只需要渲染一次,稍微複雜點。2。將整個物件做兩次渲染,第一次關閉顏色快取的渲染,開啟zbuffer,作一次渲染。第二個pass開啟顏色快...