[前言:]有好的介面軟體就成功了一半,本文將向您介紹怎樣設計一些有「稀奇古怪」形狀的窗體,如何設定窗體的顏色、如何設定工作列和狀態列以及選單圖示等等,通過這些技巧能更深入的理解vc的文件-檢視結構。
如何製作透明窗體
setlayeredwindowattributes的函式原型如下:
bool setlayeredwindowattributes(
hwnd hwnd, // handle to the layered window
colorref crkey, // specifies the color key
byte balpha, // value for the blend function
dword dwflags // action
); windows nt/2000/xp: included in windows 2000 and later.
windows 95/98/me: unsupported.(注意了,在win9x裡沒法使用的)
header: declared in winuser.h; include windows.h.
library: use user32.lib.
一些常量:
ws_ex_layered = 0x80000;
lwa_alpha = 0x2;
lwa_colorkey=0x1;
其中dwflags有lwa_alpha和lwa_colorkey
lwa_alpha被設定的話,通過balpha決定透明度.
lwa_colorkey被設定的話,則指定被透明掉的顏色為crkey,其他顏色則正常顯示.
要使使窗體擁有透明效果,首先要有ws_ex_layered擴充套件屬性(舊的sdk沒有定義這個屬性,所以可以直接指定為0x80000).
例子**:
在oninitdialog()加入:
//加入ws_ex_layered擴充套件屬性
setwindowlong(this->getsafehwnd(),gwl_exstyle,
getwindowlong(this->getsafehwnd(),gwl_exstyle)^0x80000);
hinstance hinst = loadlibrary("user32.dll");
if(hinst)
稍加修改還可以作出淡出淡入的效果. 注意第三個引數(128)不要取得太小了,為0的話就完全透明,看不到了。
如何使框架視窗的圖示為動畫顯示
可以用timer,但是timer不能有效的定時。因為timer傳送的是視窗訊息,當視窗忙於處理鍵盤、滑鼠等訊息時就不能及時處理timer,會使間隔時間變得很長 。
可以考慮用乙個單獨得timer執行緒,用sleep()定時來解決此問題。
uint timer(lpvoid param)
} sleep(ms)後傳送自定義訊息。訊息處理函式就選擇某乙個icon或bitmap來顯示。如 :
mybotton.setbitmap((hbitmap)bitmap
Visual C 建立窗體控制項)
windows窗體控制項都有是直接或間接地繼承自system.windows.forms.control類。在.net中可以利用3種方法建立窗體控制項,分別是使用者控制項,自定義控制項,從現有控制項類派生新的控制項。1.建立使用者控制項 一般是把已存有的windows控制項組合構成乙個新使用者控制項...
Visual C 6 0 API函式操作技巧集
我們在編制應用軟體的過程中,常常需要對游標和滑鼠操作,本人在文中介紹了windows系統中有關實現對滑鼠和游標進行操作的api函式,並給出了在visual c6.0 中利用所介紹的api函式實現對滑鼠和游標的操作的 一 隱藏和顯示游標 函式 int showcursor bool bshow 引數 ...
Visual C 6 0 API函式操作技巧集
我們在編制應用軟體的過程中,常常需要對游標和滑鼠操作,本人在文中介紹了windows系統中有關實現對滑鼠和游標進行操作的api函式,並給出了在visual c6.0 中利用所介紹的api函式實現對滑鼠和游標的操作的 一 隱藏和顯示游標 函式 int showcursor bool bshow 引數 ...