アプリ版:「スタンプのみでお礼する」機能のリリースについて

AxtiveXについて質問させてください。

開発言語はVC++2008です。

http://social.msdn.microsoft.com/Forums/ja-JP/vc …
を参考にしてダイアログベースのocxを作成し、VB6のFormにコントロールモジュールを貼り付けたところうまく表示はできました。
ただし、コントロールモジュールの大きさを変更した時にダイアログやダイアログ上のコントロールモジュールも大きさも自動で変更させようと思い下記のようにコーディングしました。

void ***Ctrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
if (!pdc)
return;
DoSuperclassPaint(pdc, rcBounds);

m_HogeDlg.MoveWindow(rcBounds, TRUE);

if (!IsOptimizedDraw())
{
// コンテナは最適化された描画をサポートしていません。
// TODO: *pdc デバイス コンテキスト内で GDI オブジェクトを選択した場合は
//この位置で以前に選択されたオブジェクトを復元してください。
}
}

なにかVBのForm上でコントロールモジュールの大きさを変えたら、連動コントロールの大きさを変える方法がありましたら
教えてください。
GetWindowRect()、GetClientWindowRect()等もやってみましたがうまくいきませんでした。

上記のやり方がなにかトンチンカンならゴメンナサイ。

A 回答 (2件)

リサイズ イベントが発生する(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オーダーを変えずにサイズだけ変更できます。

この回答への補足

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

デバッグは以下のように行っています。
VC++2008でプログラムミングして作成したocxをVB(Puroject.exe)に置き、
VC++からデバッグ(Puroject.exe)を呼び出しています。

補足日時:2010/06/30 10:07
    • good
    • 0

回答No.1の補足です。


ダイアログ派生クラスのOnSize()ではなく、OLEコントロール派生クラスのOnSize()内にブレークポイントを置いてみてください。
    • good
    • 0

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