vc實現如何平滑地關閉視窗

2021-04-13 00:42:12 字數 1061 閱讀 7632

關鍵字 圖層,視窗

譯者:阿鬼 [[email protected]]

環境:vc6, win2000, winxp

技術準備:

很簡單,就是使用 windows api函式

setlayeredwindowattributes(hwnd, colorref, byte,dword)

setlayeredwindowattributes函式在user32.dll中,你需要裝載該dll並使用它。

第一步:

你必須改變視窗的樣式,將視窗變成具有圖層樣式,使用windows api函式setwindowlong。

在對話方塊窗體oninitdialog()函式或者在文件/視型別的窗體oncreate()函式如下使用:

setwindowlong(m_hwnd,

gwl_extyle,

::getwindowlong(m_hwnd, gwl_exstyle) | ws_ex_layered);

然後呼叫函式:

settransparent( m_hwnd, 0, 255 , lwa_alpha );

讓balpha的值為255,該函式如下:

// this function sets the transparency layered window

// by calling setlayeredwindowattributes api function.

bool settransparent(hwnd hwnd, colorref crkey,

byte balpha, dword dwflags)

// if( m_huserdll )

return bret;

} // end of settransparent function

第二步:

在窗體onclose()中呼叫close**oothly()函式,該函式如下:

void close**oothly()

VC透明窗體以及平滑關閉視窗

vc透明窗體以及平滑關閉視窗 vc實現透明窗體 setwindowlong this getsafehwnd gwl exstyle,getwindowlong this getsafehwnd gwl exstyle 0x80000 hinstance hinst loadlibrary user...

VC如何實現透明視窗

vc如何實現透明視窗 選擇自 leisureful 的 blog 在對話方塊初始化函式中加入 define lwa colorkey 0x00000001 define ws ex layered 0x00080000 typedef bool winapi lpfnsetlayeredwindow...

c 如何實現子視窗關閉父視窗也關閉

其實是視窗間通訊的問題,在form1上開啟form2 form2 關閉時關閉form1 實現方法 在子視窗form2中宣告事件 public delegate void childclose public event childclose closefather 然後在它的關閉事件中觸發本事件 pr...