- ベストアンサー
ダイアログの表示位置の保存
MFCのダイアログベースでプロジェクトを作成し、 実行すると雛形のダイアログが画面中央に出現しますが、 このダイアログを任意の位置に動かし、ダイアログを閉じた後、 再実行した際に、前回終了時の位置に表示させるにはどのように実装すれば良いのでしょうか? なお、座標のデータなどは終了時にiniファイルに書き出しておき、 再起動時にそれを読み出す方法を考えています。 iniファイルへの読書きの方法については理解済みです。 お手数ですがご回答よろしくお願いします。 開発環境:VC++2005
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DLGpos.html と言う事で、 BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); // "バージョン情報..." メニュー項目をシステム メニューへ追加します。 // IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン // ウィンドウがダイアログでない時は自動的に設定しません。 SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定 SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定 // TODO: 特別な初期化を行う時はこの場所に追加してください。 //此処で読んだ座標を指定 CRect rect(0, 0, 256, 256); GetWindowRect(&rect); SetWindowPos(&this->wndTop, 0, 0, rect.right - rect.left, rect.bottom - rect.top, SWP_SHOWWINDOW); return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。 } void CTestDlg::::OnDestroy() { //サイズを取る RECT rc; this->GetWindowRect(&rc); //此処でiniファイルへrcを記録 CDialog::OnDestroy(); // TODO: この位置にメッセージ ハンドラ用のコードを追加してください } では無いでしょうか。
お礼
ご回答ありがとうございます。 上記方法で期待動作をさせることが出来ました。 参考URLまで乗せていただき、ありがとうございました。