[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/11/17(Fri) 15:35
投稿者名:田んぼのカエル
Eメール:
URL :
タイトル:
フォームのResizeイベント
こんにちは。
初めて質問させて頂きます。

マウス・ドラッグでフォームをリサイズする際、
同じWindowsXPの環境でも
リアルタイムでファームが再描画(Resizeイベントが発生)され滑らかに伸縮する場合と、
サイズが確定してから(ボタンを放してから)再描画が行われる場合があります。

常にサイズが確定してから再描画されるようにしたいのですが、どのようにすればよいのでしょうか?

開発環境はVB6.0 SP6です。

投稿時間:2006/11/17(Fri) 15:48
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: フォームのResizeイベント
> リアルタイムでファームが再描画(Resizeイベントが発生)され滑らかに伸縮する場合と、
> サイズが確定してから(ボタンを放してから)再描画が行われる場合があります。

上記は、どのような場合になりますか? その違いを解決すればいいのでは。
Resizeイベント でなにか処理をしているのでしょうか?

投稿時間:2006/11/17(Fri) 16:10
投稿者名:田んぼのカエル
Eメール:
URL :
タイトル:
Re^2: フォームのResizeイベント
> 上記は、どのような場合になりますか? その違いを解決すればいいのでは。

Windowsの[パフォーマンス オプション]ダイアログの[視覚効果]「ドラッグ中にウインドウの内容を表示する」が影響しているようです。

Windows全体ではなく、自アプリのみでこの設定を無効にすることは可能でしょうか?
(配布先の環境はいじりたくありません)

> Resizeイベント でなにか処理をしているのでしょうか?

ファイルから読み込んだ数値データをグラフ表示(bitmapとして描画)するアプリで、
フォームのサイズに合わせてグラフを再描画しています。
数値データが膨大なため再描画もかなり重くなっています。

投稿時間:2006/11/17(Fri) 15:56
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: フォームのResizeイベント
リモートデスクトップ接続で動作させている場合には、オプション設定の
 [エクスペリエンス]-[パフォーマンス]-[ドラッグ中にウィンドウの内容を表示]
の設定を確認してみてください。

ローカル PC 上での実行であれば、デスクトップを右クリックして画面のプロパティを表示させ、
 Win2000 なら、[効果]-[視覚効果]-[ドラッグ中にウィンドウの内容を表示する]
 WinXP/WinServer2003 なら、[デザイン]-[効果]=>[ドラッグ中にウィンドウの内容を表示する]
の設定を確認してみてください。

投稿時間:2006/11/17(Fri) 16:17
投稿者名:田んぼのカエル
Eメール:
URL :
タイトル:
Re^2: フォームのResizeイベント
> ローカル PC 上での実行であれば、デスクトップを右クリックして画面のプロパティを表示させ、
>  Win2000 なら、[効果]-[視覚効果]-[ドラッグ中にウィンドウの内容を表示する]
>  WinXP/WinServer2003 なら、[デザイン]-[効果]=>[ドラッグ中にウィンドウの内容を表示する]
> の設定を確認してみてください。

ご指摘のとおり、[ドラッグ中にウィンドウの内容を表示する]の設定が違っているようです。
配布先(客先)の環境を勝手に変更するわけにはいかないので、自アプリ内だけで対応したいのですが方法はありますか?

投稿時間:2006/11/17(Fri) 17:19
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: フォームのResizeイベント
> 配布先(客先)の環境を勝手に変更するわけにはいかないので、自アプリ内だけで対応したいのですが方法はありますか?

諦めた方が無難だと思います。
(そもそも何故、そこまでしてリサイズ処理に手を加えたいのでしょうか?)


どうしても、というのであれば、標準のリサイズ機能は用いず、
サイズ変更不可のウィンドウにしておき、マウス操作などに応じて
自分でリサイズするようなコードを書くとか、WM_SIZING / WM_SIZE などを
横取りして、Windows のタスクバーのように段階的にカクカクとリサイズするよう
実装すれば、擬似的にそれっぽい動作を作り出すことはできるかも知れません。

投稿時間:2006/11/17(Fri) 17:45
投稿者名:田んぼのカエル
Eメール:
URL :
タイトル:
Re^4: フォームのResizeイベント
> 諦めた方が無難だと思います。

簡単には行かないようですね。。。
今回は諦めます。


> WM_SIZING / WM_SIZE などを横取りして、

リサイズ終了時のWM_EXITSIZEMOVEというメッセージをフックすればなんとかなりそうです。
時間が出来たら挑戦してみます。

ありがとうございました。