ダイアログの中にピクチャボックスがあります。256×256です。
その1番左上の座標を(0.0)にしたいです
どうすればいいでしょうか?
今、1応、(0.0)なんですが、ダイアログの中のピクチャボックスの配置を変更するとまた設定しなければならないので、つねに左上の座標が(0.0)にいくようにしたいです
MFCを使っているのなら、OnInitialDialog()の中で、ピクチャボックスの座標を(0, 0)に設定すればいいのではないでしょうか。
SDIを使ってます・・・
SDI(=Single Document Interface)を使っている,と言われても……。
MFCを使おうが使うまいが,SDIであるプログラムは作れますよ。
ごめんなさい書き間違えていました。OnInitDialog()でした。
ちなみにこの雰囲気からするとユウさんはMFCを使っていると思われます。
試してみてください。
どういった形にすればよろしいのでしょうか?
OnInitDialog()というものがないのですが・・
メッセージハンドラの追加方法はわかりますか?
クラスビューのダイアログクラス上で右クリックすると出るメニューに
ありますが、そこでWM_INITDIALOGを選択してハンドラを追加してくださ
い。そうしたら OnInitDialog()が出てきます。
その中でピクチャボックスのオブジェクトに対してMoveWindow(0, 0, 256,
256)とでもすれば問題ないかと思います。
WM_INITDIALOGというんがないんですけど。すいません
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
MoveWindow(IDC_FIGURE, 0, 0, 256, 256);
TODO: return TRUE;
}
ここまでできたんですが、まだ座標がさだまりません
どうしたらいいのでしょうか?
引数がめちゃくちゃです。
とりあえずMSDNでMoveWindowを調べてください・・・
>MoveWindow(IDC_FIGURE, 0, 0, 256, 256);
MSDNを見ると、MoveWindowの関数の引数は、
MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint);
となっていると思います。これに当てはめて考えてみてください。
(IDC_FIGURE, 0)の座標を左上として、サイズ(0, 256)の大きさのウインドウに変更することになります。また、単にMoveWindowとしただけでは、変化するのは自分自身(この場合はCAboutDlg)になります。SDKの方のMoveWindowを見られたのかもしれませんが、引数の数が一致していません。
VCをほとんど理解されていないような気がしますので、一度入門書等を読まれた方がよろしいかと思います。なお、以下のようにすると動作しますが、手順を記憶するのではなく、MSDN等を参照しながらきちんと意味を理解するようにしてくださいね。
コントロールへの一時的なポインタを取得するために GetDlgItem()を
使用します。
CWnd* pWnd = GetDlgItem(IDC_FIGURE);
移動するのはコントロールですから、コントロールのポインタに対して
MoveWindowを実行します。
pWnd->MoveWindow(0, 0, 256, 256);
ツイート | ![]() |