スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- | スポンサー広告  TOP

今日のはまりポイント(AnimateWindow)

ウィンド・リージョンを使っているウィンドにAnimateWindowを使用とするとAnimateWindowがエラーリターンになる事があります。
これは、仕様に書かれている事なんで避けられないんですが、試しに使ってみるとWindows2000以前のOSだとうまく動作しません。たぶん、WindowsMeもダメだと思います。
XPとVistaでは何事も無かった様にウィンド・アニメーションしてくれますね。

こんなコードを書きます(MFCで書いた場合です)。

CRgn m_Rgn; //クリッピング

// 楕円のリージョンを作る
m_Rgn.CreateEllipticRgn(0,0,100,100);

// ウィンドのリージョンを設定する
SetWindowRgn((HRGN)m_Rgn,TRUE);

// ダイアログをアニメートして表示(上からスライド表示する)
AnimateWindow(300, AW_VER_POSITIVE|AW_SLIDE);

今後も、こんな小ネタを書き込む予定。読んでくれる人がいると良いなぁ~。
質問があれば、コメントに書いてくださいね。

2008/05/01 | プログラミングCOMMENT(4)TRACKBACK(0)  TOP

コメント

コンパイルエラーがでます。
VC++ 6.0 です。
error C2065: 'AnimateWindow' : 定義されていない識別子です。

ご教授ください。

No:6 2009/01/25 11:32 | 名も無い旅人さ #- URL [ 編集 ]

Re: タイトルなし

AnimateWindowはCWndクラスを継承したクラス中で使うかWindowsAPI版だとPlatformSdkを導入したうえでwinuser.hをインクルードする必要があります。
VC6.0の環境を現在持っていませんので確認できませんがVC6.0のヘルプでCWndクラスのメンバ関数をまず確認してみてください。

※コメント間違って一度消してしまったので復元したのですが変わったところがあればごめんなさい。

No:7 2009/01/25 11:34 | ソフト屋 巣 #- URL [ 編集 ]

レスありがとうございます。

いろいろ調べて、StdAfx.h の先頭に

#define WINVER 0x0500

を入れたらエラーが消えうまくいきました。

ところが WinXPでは正常に動作しますが
Vistaではアニメーションしないで
数秒後にウインドウが突然消えます。

コンパイルは XPでやっています。

No:8 2009/02/04 10:10 | 名も無い旅人さ #8k87xx1. URL [ 編集 ]

XP以降で動作させれば良いのであれば
WINVER 0x0501
としてみてください。

>数秒後にウインドウが突然消えます。
うーん。少なくともVistaでは失敗したことは無いですね。お役に立てなくてすいません。

No:9 2009/02/04 11:05 | ソフト屋 巣 #- URL [ 編集 ]

コメントの投稿



管理者にだけ表示を許可する

 | BLOG TOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。