• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AxtiveXについて質問させてください。)

VB6のFormでコントロールモジュールの大きさを変えたら、連動コントロールの大きさを変える方法はあるか教えてください

このQ&Aのポイント
  • VB6のFormでコントロールモジュールの大きさを変えた場合、連動するコントロールの大きさも変更する方法について教えてください。
  • 参考記事によると、ダイアログベースのocxを作成し、VB6のFormにコントロールモジュールを貼り付けたときは問題なく表示されるそうですが、コントロールモジュールの大きさを変更した場合に、ダイアログやダイアログ上のコントロールモジュールの大きさも自動的に変更させる方法がわかりません。どのような方法があるでしょうか?
  • GetWindowRect()やGetClientWindowRect()を試したりしましたが、うまくいきませんでした。VBのForm上でコントロールモジュールの大きさを変えた時に連動するコントロールの大きさも変更させる方法があれば、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sygh
  • ベストアンサー率76% (42/55)
回答No.1

リサイズ イベントが発生する(WM_SIZE メッセージが投げられる)ので、WM_SIZE のメッセージ ハンドラ void OnSize(UINT nType, int cx, int cy) の中で、パラメータ cx, cy に応じてダイアログなどをリサイズしてみてください。 メッセージ ハンドラは VC++ 2008 の場合、プロパティ ウィンドウを使って追加します。 なお、CWnd のメンバー関数、SetWindowPos(NULL, 0, 0, cx, cy, SWP_NOMOVE | SWP_NOZORDER) を使えば、位置とZオーダーを変えずにサイズだけ変更できます。

wantsinc
質問者

補足

お返事遅れて申し訳ありません。 sygh様の回答のOnSizeの件ですが私もそれはやってみたのですが、 OnSize内にブレークポイントを設定したところ、1度だけOnSizeに来ましたが、 その後はサイズを変更してもOnSizeに来ませんでした。 ちなみに、私はVB6のプログラミング画面(用語として正しい?)でコントロールの大きさを変えたら 表示されている文字の大きさを変更するようなことをしたいと思っています。 こういうことはできないのでしょうか?それとも私の考え方がおかしいのでしょうか? デバッグは以下のように行っています。 VC++2008でプログラムミングして作成したocxをVB(Puroject.exe)に置き、 VC++からデバッグ(Puroject.exe)を呼び出しています。

その他の回答 (1)

  • sygh
  • ベストアンサー率76% (42/55)
回答No.2

回答No.1の補足です。 ダイアログ派生クラスのOnSize()ではなく、OLEコントロール派生クラスのOnSize()内にブレークポイントを置いてみてください。

関連するQ&A