ClassViewのプロジェクト名DlgからOnInitDialog()を選ぶ。
ダイアログが生成されると、最初に、initDialogが実行される。ここで、描画領域の設定、および、描画領域の位置情報をRelRectに、取得する。
CWnd* myPICT=GetDlgItem(IDC_PICTURE); |
pDC = new CClientDC(myPICT); |
WINDOWPLACEMENT winplace; |
myPICT-GetWindowPlacement(&winplace ); |
RelRect=winplace.rcNormalPosition; |
drawLine=FALSE; |
myPen=new CPen; |
myPen-CreatePen(PS_SOLID,3,RGB(0,0,0)); |
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-SelectObject(myPen); |
pDC-MoveTo(pvPT); |
if(drawLine){ |
point.x -= RelRect.left; |
point.y -= RelRect.top; |
pDC-LineTo(point); |
} |
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-CreatePen(PS_SOLID,3,RGB(0,0,0)); |
} |
ClassViewのプロジェクト名DlgからOnErase()を選ぶ。
前のペンを削除し、太さ5の白いペンを作成します。
void CPaintDlg::OnErase() |
{ |
delete myPen; |
myPen=new CPen; |
myPen-CreatePen(PS_SOLID,5,RGB(255,255,255)); |
} |