none
変形ウィンドウの表示について RRS feed

  • 質問

  • お世話になります。

    VC++2010 Windows7

    UpdateLayeredWindow-APIと、透過PNGを利用して変形ウィンドウを表示しているのですが、
    ウィンドウの表示方法を、フェイドイン、フェイドアウトを行いと思っています。

    AnimateWindow(1000, AW_BLEND);

    を入れているのですが、フェイドインしてくれません。

    何か方法があるのでしょうか。

    2014年7月4日 7:46

回答

  • AnimateWindow()の説明に次のような記述があります。

    関数が失敗すると、0 が返ります。関数が失敗するのは、次のような場合です。
    ・ウィンドウがウィンドウリージョンを使っている。
    ・すでに可視になっているウィンドウを表示しようとした。
    ・すでに隠れているウィンドウを隠そうとした。

    「ウインドウリージョン」を使用しているに、該当しませんか。

    • 回答としてマーク Brillia 2014年7月7日 4:34
    2014年7月4日 8:02
  • 具体的に言うなら、各ピクセルのアルファをいじってUpdateLayeredWindow、をタイマとかでやっていけば良いと思います。

    <追記>BlendFunction::SourceConstantAlphaを使えばピクセル単位でいじらなくても大丈夫っぽいかな。</追記>

    • 編集済み Hongliang 2014年7月7日 2:47
    • 回答としてマーク Brillia 2014年7月7日 4:34
    2014年7月7日 2:19

すべての返信

  • AnimateWindow()の説明に次のような記述があります。

    関数が失敗すると、0 が返ります。関数が失敗するのは、次のような場合です。
    ・ウィンドウがウィンドウリージョンを使っている。
    ・すでに可視になっているウィンドウを表示しようとした。
    ・すでに隠れているウィンドウを隠そうとした。

    「ウインドウリージョン」を使用しているに、該当しませんか。

    • 回答としてマーク Brillia 2014年7月7日 4:34
    2014年7月4日 8:02
  • ご返事ありがとうございます。

    タスクトレイから表示されるようなバルーンウィンドウを表示し、フェイドイン、フェイドアウトを行いたいのですが

    どのような方法がありますでしょうか。

    • 回答としてマーク Brillia 2014年7月7日 4:34
    • 回答としてマークされていない Brillia 2014年7月7日 4:34
    2014年7月7日 0:48
  • 自前でコードするという決断のみが必要だと考えられます。
    2014年7月7日 1:18
  • 具体的に言うなら、各ピクセルのアルファをいじってUpdateLayeredWindow、をタイマとかでやっていけば良いと思います。

    <追記>BlendFunction::SourceConstantAlphaを使えばピクセル単位でいじらなくても大丈夫っぽいかな。</追記>

    • 編集済み Hongliang 2014年7月7日 2:47
    • 回答としてマーク Brillia 2014年7月7日 4:34
    2014年7月7日 2:19
  • ご返事ありがとうございました。

    BlendFunction::SourceConstantAlphaを使用することで対応できました。

    かなり簡単にできて助かりました。

    2014年7月7日 4:34