ウィンドウスタイルの変更について


origi  2005-06-14 04:11:59  No: 57858

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;
としてよいのでしょうか?
あと、ウィンドウにこのスタイルを追加して処理が少し重くなるのですが、
パソコン自体にはあまり影響はないでしょうか?
このへんを教えてください。お願いします。


RAPT  2005-06-14 05:42:29  No: 57859

> 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;
です。

> ウィンドウにこのスタイルを追加して処理が少し重くなるのですが、
> パソコン自体にはあまり影響はないでしょうか?
「影響」とは?  重くなるのは多分透過処理を行なうためでしょう。
余分な処理が増加した分、当然ながら負荷は高くなる事でしょう。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加