重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

現在、MDIフレーム上に、複数のチャイルドスタイルのダイアログが存在するプログラムを改造中です。
その中にMapDKIVの地図を描画しているダイアログがあり、その地図上に縮尺スケールのビットマップを描画しようとしています。(MapDKIVには、その機能がまだ無い為)

縮尺スケールのビットマップを描画する為のダイアログを同様にチャイルドスタイルにし、SetWindowPos()を使って最前面に表示しようとしましたが、地図を描画しているダイアログをクリックすると、後ろへ行ってしまいます。

MSDNのSetWindowPos()の説明には、
「子ウィンドウ、ポップアップウィンドウ、またはトップレベルウィンドウのサイズ、位置、および Z オーダーを変更します。」
と記述されています。
が、あるサイトでは、
「MDI子Formは、子Windowであって、TopLevelWindowではないのですから、SetWindowPosは最前面や最背面設定を受け入れません。」
と記述されています。

縮尺スケールのビットマップを描画する為のダイアログを通常のスタイルにし、「フォアグランド表示する」とすると、メインフレームのサイズを小さくしたり、移動した時に、その場所へ取り残されてしまいます。

何か、方法はないものでしょうか?

開発環境
VisualC++ 6.0 SP6

どなたかお助け下さい!よろしくお願いします。

A 回答 (1件)

> 縮尺スケールのビットマップを描画する為のダイアログを通常のスタイルにし、「フォアグランド表示する」とすると、メインフレームのサイズを小さくしたり、移動した時に、その場所へ取り残されてしまいます。



ここにヒントがある
ハンドラを使え。
サイズ変更および移動のメッセージが飛んできたところで、そのダイアログを取り残されないようにするんだ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!