Win2000、VC++6.0(MFC)の環境で作っているのですが、コンボボックスを配列にして複
数作成し処理しようと考え、メンバ変数でCComboBoxの配列(CComboBox m_ctlCombo
[COUNT];※COUNTは作成数)を作成し、OnInit時にfor文で回しながらCreate(CComboBox
[i].Create(……);)という手順をとりました。
が、リソースエディタでコンボボックスを配置したい位置に仮に作成し、リソースファ
イルの位置情報の値を取得し、その値をもとにCreate関数の引数にしたところ、全く想
定しない位置に表示されてしまいました。
試しに様々なコントロールをリソースエディタで配置し、実行時にサイズを取得し、リ
ソースファイルに書かれてあるサイズ値と比較してみたのですが、関連性がよくわかり
ませんでした。
リソースファイルとCreate関数のサイズの値の相互変換の計算式等々ありましたら教え
てください。
※もしリソースエディタ上でコントロールの配列化を実現する方法がありましたら、教
えてください(VBだったら楽に作れますが……)
リソースエディタでの単位はダイアログ単位というものです。
ピクセル数への変換は、CDialog::MapDialogRect()でできます。
リソースエディタに貼り付けたコントロールを配列に
マップするのであれば、普通クラスウィザードが書いてくれるDDXのコードを
自分で手入力すればよいでしょう。
DDX_Control(pDX, IDC_COMBO1, m_combo[0]);
DDX_Control(pDX, IDC_COMBO2, m_combo[1]);
...
dailygoods様、ありがとうございました!
あの後色々試して、X軸方向を1.75倍、Y軸方向を1.5倍ほどすると、イメージ通りの位
置になったのですが、果たしてその値に正当性があるかどうか全く判断できませんでし
たので、使うことができませんでした。
ちゃんと関数があったのですね。調査不足でした。
また、リソースエディタに貼り付けたコントロールの配列化も教えていただき、ありが
とうございました。うーむ、こういうことも思いつかないとは……どうやら頭が固くな
っている証拠ですかね。
本当にありがとうございました。
今後ともよろしくお願いいたします。