本文從建立乙個工程開始詳細說明如何用
evc實現
wince
應用程式下的透明控制項(這裡實現按鈕和static)。
1.新建乙個
mfc對話方塊工程取名
transbutton 2.在
resourceview
處插入一背景
idb_bitmap1
3.在對話方塊中拉
4個控制項:兩個按鈕,兩個
static
4.增加
transbuttondlg.h
檔案中增加如下
3個類成員
hbrush getbkbrush( hwnd hwnd, uint nid, hbitmap hbmbk );
hbitmap m_hbmbkgnd; //
對話方塊背景
hbrush m_hbrctl[2]; //
控制項背景畫刷5.在
transbuttondlg.cpp
中增加getbkbrush()
的實現hbrush ctransbuttondlg::getbkbrush( hwnd hwnd, uint nid, hbitmap hbmbk )
return hbrushctrl;}6.
在oninitdialog()
中增加下面一段擷取控制項所在部分的:
m_hbmbkgnd=::loadbitmap(afxgetinstancehandle(),makeintresource(idb_bitmap1) );
if( m_hbmbkgnd )
7.增加
wm_paint
的處理函式,並在函式中增加畫背景的部分
(onpaint()函式)
:cdc memdc;
cbitmap bmbkgnd;
bmbkgnd.attach( m_hbmbkgnd );
memdc.createcompatibledc(&dc);
cbitmap *poldbm = memdc.selectobject( &bmbkgnd );
bitmap bm;
bmbkgnd.getobject(sizeof(bm), &bm);
dc.bitblt(0, 0, bm.bmwidth, bm.bmheight, &memdc, 0, 0, srccopy );
memdc.selectobject( poldbm );
bmbkgnd.detach();
8.增加
wm_ctlcolor
的處理函式,並在其中增加畫控制項背景的部分:
if(pwnd->getdlgctrlid() == idc_button_test1 )
else if(pwnd->getdlgctrlid() == idc_static_test1)
9.編譯鏈結
10.
透明控制項的製作
最簡單的方法是對映wm erasebkgnd訊息,在訊息處理函式中直接return true 這種方法通過不擦除背景實現,故經常會有其他問題,比如文字從帶下劃線都無下劃線的變化中,因為下劃線不擦除,故始終有下劃線.以下提供一種貼圖的方式實現,即將控制項所在位置的背景截圖,然後貼在控制項表面上,在按鈕...
WinForm中控制項與背景透明
要實現c winform中的控制項與背景的透明,可以通過設定控制項的backcolor屬性為transparent,同時設定其父控制項。因為在c 中,控制項的透明指對父窗體透明。如果不設定parent屬性,那麼控制項將只對form透明,顯示的時候都會把form的背景色 預設為control 重刷一遍...
C 實現透明背景的垂直Label控制項
本文描述如何在c 中建立乙個透明背景色的垂直label使用者控制項。該使用者控制項允許你從底部或頂部開始繪製文字。本文是vertical label control in vb.net的延續。其實,更準確的說,我是把他的工作翻譯到c 中,並新增了從下向上顯示文字的功能。另外,支援背景透明。使用 本文...