ClassViewのプロジェクト名DlgからOnInitDialog()を選ぶ。
ダイアログが生成されると、最初に、initDialogが実行される。ここで、描画領域の設定、および、描画領域の位置情報をRelRectに、取得する。
| CWnd* myPICT=GetDlgItem(IDC_PICTURE); |
| pDC = new CClientDC(myPICT); |
| WINDOWPLACEMENT winplace; |
| myPICT- |
| RelRect=winplace.rcNormalPosition; |
| drawLine=FALSE; |
| myPen=new CPen; |
| myPen- |
ClassViewのプロジェクト名DlgからOnLButtonDown()を選ぶ。マウスの位置は、RelRectで補正する。マウスの左ボタンが押されたら,描画が可能なようにdrawLine = TRUEにする。また,マウスの位置をpvPTに記録する。
| void CFreeWritingDlg::OnLButtonDown(UINT nFlags, CPoint point) |
| { |
| drawLine = TRUE; |
| pvPT.x =point.x - RelRect.left; |
| pvPT.y = point.y - RelRect.top; |
| CDialog::OnLButtonDown(nFlags, point); |
| } |
ClassViewのプロジェクト名DlgからOnMouseMove()を選ぶ。
マウス移動に伴い、呼び出される。Penを選択し、前の点から現在のマウスの位置まで線を表示する。マウスの位置は、RelRectで補正する。
| void CPaintDlg::OnMouseMove(UINT nFlags, CPoint point) |
| { |
| pDC- |
| pDC- |
| if(drawLine){ |
| point.x -= RelRect.left; |
| point.y -= RelRect.top; |
| pDC- |
| } |
| pvPT = point; |
| CDialog::OnMouseMove(nFlags, point); |
| } |
ClassViewのプロジェクト名DlgからOnLButtonUp()を選ぶ。
これで、線の表示を終了する。
| void CPaintDlg::OnLButtonUp(UINT nFlags, CPoint point) |
| { |
| drawLine=FALSE; |
| CDialog::OnLButtonUp(nFlags, point); |
| } |
ClassViewのプロジェクト名DlgからOnPen()を選ぶ。
描画用の黒いペンと消去用の白いペンを切り替えて使う。
| void CPaintDlg::OnPen() |
| { |
| delete myPen;//前のペンを削除し、太さ3の黒いペンを作成する |
| myPen = new CPen; |
| myPen- |
| } |
ClassViewのプロジェクト名DlgからOnErase()を選ぶ。
前のペンを削除し、太さ5の白いペンを作成します。
| void CPaintDlg::OnErase() |
| { |
| delete myPen; |
| myPen=new CPen; |
| myPen- |
| } |