WindowsXP VC++.NET です。
今、他ウィンドウのハンドルを取得し、
LONG lStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
lStyle |= WS_EX_LAYERED;
SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_LAYERED);
SetLayeredWindowAttributes(hwnd, 0, (alpha*255/100), LWA_ALPHA);
としてウィンドウを透明化させているのですが、元に戻すには
lStyle &= WS_EX_LAYERED;
としてよいのでしょうか?
あと、ウィンドウにこのスタイルを追加して処理が少し重くなるのですが、
パソコン自体にはあまり影響はないでしょうか?
このへんを教えてください。お願いします。
> LONG lStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
> lStyle |= WS_EX_LAYERED;
> SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_LAYERED);
折角用意した lStyle を使っていませんが?
SetWindowLong(hwnd, GWL_EXSTYLE, lStyle);
としたかったのでは?
> 元に戻すには
> lStyle &= WS_EX_LAYERED;
> としてよいのでしょうか?
違います。
lStyle &= ~WS_EX_LAYERED;
です。
> ウィンドウにこのスタイルを追加して処理が少し重くなるのですが、
> パソコン自体にはあまり影響はないでしょうか?
「影響」とは? 重くなるのは多分透過処理を行なうためでしょう。
余分な処理が増加した分、当然ながら負荷は高くなる事でしょう。
ツイート | ![]() |