リソースとCreate関数でのサイズの互換性について

[戻る]
ヘンダソン 2002/09/18(水) 22:06:33
Win2000、VC++6.0(MFC)の環境で作っているのですが、コンボボックスを配列にして複
数作成し処理しようと考え、メンバ変数でCComboBoxの配列(CComboBox m_ctlCombo
[COUNT];※COUNTは作成数)を作成し、OnInit時にfor文で回しながらCreate(CComboBox
[i].Create(……);)という手順をとりました。

が、リソースエディタでコンボボックスを配置したい位置に仮に作成し、リソースファ
イルの位置情報の値を取得し、その値をもとにCreate関数の引数にしたところ、全く想
定しない位置に表示されてしまいました。

試しに様々なコントロールをリソースエディタで配置し、実行時にサイズを取得し、リ
ソースファイルに書かれてあるサイズ値と比較してみたのですが、関連性がよくわかり
ませんでした。

リソースファイルとCreate関数のサイズの値の相互変換の計算式等々ありましたら教え
てください。

※もしリソースエディタ上でコントロールの配列化を実現する方法がありましたら、教
えてください(VBだったら楽に作れますが……)

dairygoods 2002/09/19(木) 10:16:40
リソースエディタでの単位はダイアログ単位というものです。
ピクセル数への変換は、CDialog::MapDialogRect()でできます。

リソースエディタに貼り付けたコントロールを配列に
マップするのであれば、普通クラスウィザードが書いてくれるDDXのコードを
自分で手入力すればよいでしょう。

DDX_Control(pDX, IDC_COMBO1, m_combo[0]);
DDX_Control(pDX, IDC_COMBO2, m_combo[1]);
...

ヘンダソン 2002/09/21(土) 10:45:53
[[解決]]
dailygoods様、ありがとうございました!

あの後色々試して、X軸方向を1.75倍、Y軸方向を1.5倍ほどすると、イメージ通りの位
置になったのですが、果たしてその値に正当性があるかどうか全く判断できませんでし
たので、使うことができませんでした。
ちゃんと関数があったのですね。調査不足でした。

また、リソースエディタに貼り付けたコントロールの配列化も教えていただき、ありが
とうございました。うーむ、こういうことも思いつかないとは……どうやら頭が固くな
っている証拠ですかね。
本当にありがとうございました。
今後ともよろしくお願いいたします。

古いスレッドには追加発言できません。