いま、C++/CLIでダイアログに描画したいと考えています。

MFCの場合は、
ダイアログを生成したときにそれに対応するID(たとえばIDC_STATIC_GPとします)を割り当てれば

CDC *pDC = GetDlgItem(IDC_STATIC_GP)->GetDC();
GetDlgItem(IDC_STATIC_GP1)->GetClientRect(&rec);
m_MemDC1.CreateCompatibleDC(pDC);
m_Bitmap1.CreateCompatibleBitmap(pWinDC,rec.right,rec.bottom);
m_MemDC1.SelectObject(&m_Bitmap1);
m_MemDC1.PatBlt(0,0,rec.right,rec.bottom,WHITENESS);
m_yellow_Pen.CreatePen(PS_SOLID,1,RGB(230,245,0)); //黄色のペンを作成
ReleaseDC(pWinDC);
ReleaseDC(pDC);

として描画できますが、C++/CLIの場合はダイアログのIDを取得できません。

"C++/CLIでダイアログに描画する方法を教えてください。"

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/03/21 22:35:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:mj99 No.1

回答回数138ベストアンサー獲得回数38

ポイント60pt

「ダイアログ」はどのように作ったものですか?

1.リソースビューから、リソースの追加でダイアログを作成した

 ->クラスの追加によってCDialogの派生クラスが作られる


2.プロジェクトに新規項目でWindowsフォームを追加してた

 ->System::Windows::Forms::Formの派生クラスが作られる


----

1の場合は、VC++でMFCを使う場合とまったく同じ書き方で出来るはずです。

ダイアログデザインで、スタティックコントロールのプロパティの「ID」を"IDC_STATIC_GP"に設定すれば、質問文にあるコードはそのまま動きます。


2の場合は、.NETのクラスを使うことになります。

例えば、Form_Loadのイベントに、下記コードを追加します。

(フォーム上に"pictureBox1"という名前のPictureBoxが配置してあるものとします)

    //PictureBoxと同じ大きさのImageオブジェクトを作成
    pictureBox1->Image = gcnew Bitmap(pictureBox1->Width, pictureBox1->Height);

    //ImageオブジェクトからGraphicsオブジェクトの作成
    Graphics^ g = Graphics::FromImage(pictureBox1->Image);

    //線の描画
    g->DrawLine(Pens::Red, 0, 0, 100, 100); 

http://imagingsolution.blog107.fc2.com/blog-category-7.html(一番最後のところ)

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません