Visual C 窗體設計技巧集

2021-04-12 21:14:26 字數 1512 閱讀 9384

[前言:]有好的介面軟體就成功了一半,本文將向您介紹怎樣設計一些有「稀奇古怪」形狀的窗體,如何設定窗體的顏色、如何設定工作列和狀態列以及選單圖示等等,通過這些技巧能更深入的理解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 引數 ...