掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダイアログ画面の表示位置を動的に変更したい (ID:66755)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ダイアログオブジェクトにマウス座標をメンバ変数m_x,m_yにセットする ようにダイアログクラスのコンストラクタを書き直し、OnInitDialog関数 をオーバーライドしてこの関数内からSetWindowPos関数を呼び出すと、 マウスを右クリックするたびに一応、ダイアログ画面の位置が変更される ようになりました。 ありがとうございました。 最も、tetrapodさんが言うようにこれを使うかどうかは要検討ですが... // myDlg.h内 class CmyDlg : public CDialog { DECLARE_DYNAMIC(CmyDlg) public: CmyDlg(int x, int y, CWnd* pParent = NULL); virtual ~CmyDlg(); ・・・ protected: ・・・ int m_x, m_y; public: ・・・ }; // myDlg.cpp内 CmyDlg::CmyDlg(int x, int y, CWnd* pParent /*=NULL*/) : CDialog(CmyDlg::IDD, pParent), m_x(x), m_y(y) { } BOOL CmyDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ここに初期化を追加してください CmyDlg::SetWindowPos(&wndTop, m_x, m_y, 0, 0, SWP_NOSIZE); return TRUE; } // myView.cpp内の右ボタン押しに対応したメッセージハンドラ void CmyView::OnRButtonDown(UINT nFlags, CPoint point) { ・・・ CmyDlg m_myDlg(point.x, point.y); INT_PTR ret; ret = m_myDlg.DoModal(); if(ret==IDOK) { // 処理1 } ・・・ }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.