こんにちは。いつも参考にさせて頂いています。
WindowsXPで利用できるGetLayeredWindowAttributes
とゆーAPIがありますが(下記URL参照)
このAPIをWindows2000で使う方法は無いでしょうか。
SetLayeredWindowAttributes
のAPIはWin2kでも使えるんですが^^;
Minimum operating systems Windows XP
なんだからないでしょ…
ヘルプにはそうありますし、
User32.dllに当該APIが無いので
これそのものをコールするのは無理ですかね。やはり。
しかし、SetLayer...APIはWin2kでも利用できるので
何か方法があるのかもしれません。
SetLayer...した時の情報をアプリ側で記憶しておくことで
今抱えている問題は回避できるのですが
ウィンドウハンドルを指定して
そのウィンドウの現在の透明度などを取得できないものでしょうか。
SetLayer...した際の透明度とウィンドウハンドルを対で記憶することで
Windows2000対応としました。
ただ、既に透明化されているウィンドウの
透明度を知る方法は解りませんでした。
既に透明化されているウィンドウの判定方法
LONG lOrgStyle = GetWindowLong(m_hWndT, GWL_EXSTYLE);
if ((lOrgStyle & WS_EX_LAYERED) == WS_EX_LAYERED)
{//既に透明化されている
...
}
else
{//透明化
SetWindowLong(m_hWndT, GWL_EXSTYLE, lOrgStyle | WS_EX_LAYERED);
}
ツイート | ![]() |