を使用してウィンドウを表示していますUpdateLayeredWindow
が、トランジションアニメーションを追加したいと思います。AnimateWindow
スライド効果またはロール効果を使用すると機能します(ちらつきはありますが)。ただし、AW_BLEND
フェード効果を生成するために使用しようとすると、アニメーション後(ピクセルごとおよび画像全体)の半透明性が失われるだけでなく、デフォルトのウィンドウ境界線も表示されます。境界線が表示されないようにする方法はありますか?
2 に答える
を使用しているのでUpdateLayeredWindow
動作しSetLayeredWindowAttributes
ません。ここの図は非常に役に立ちました。代わりに、構造体のメンバーUpdateLayeredWindow
を減らしながらループを呼び出す必要があります。実際、構造体へのポインター、レイヤードウィンドウへのハンドル、およびフラグは、アルファが変更されているすべてである場合に渡す必要がある唯一のものです。SourceConstantAlpha
BLENDFUNCTION
BLENDFUNCTION
UpdateLayeredWindow
(あなたが説明している複雑さなしに)ウィンドウをうまくフェードアップ/フェードダウンするために私が見つけた唯一の方法は、最初にWS_EX_LAYERED
拡張スタイルでウィンドウを作成することです。次に、次のような呼び出しによってウィンドウを徐々にフェードさせるタイマー(30ms)を開始します。
SetLayeredWindowAttributes(0,
(BYTE)(m_nAnimationCount * WINDOW_ALPHA),
LWA_ALPHA);
ここで、WINDOW_ALPHA
は23(最もよく見えるように見えます)であり、m_nAnimationCount
0から10(またはフェードダウンの場合は10から0)までのカウントです。
あなたがこれを行うためのより良い方法を発見した場合、私はそれを見つけることに興味があります。