怎样使用MFC单文档程序编写一个鼠标画线程序?

怎样使用MFC单文档程序编写一个鼠标画线程序?,第1张

在visual

C++6.0里面

文件->新建->工程里面的塌举MFC

Appwizard

[EXE]

除了第二步选单文档,返衫源基本上都是默认的。

建一个文漏态件进行一下 *** 作

我建的文件名为ZuoBiao

在CZuoBiaoView.h里面添加变量:

int

m

CPoint

p1,p2

在构造函数里面初使化m。

CZuoBiaoView::CZuoBiaoView()

{

//

TODO:

add

construction

code

here

m=0

}

在资源文件Menu中的IDR_MAINFRAME中添加消息句柄OnLButtonDown,OnLButtonUp,OnMouseMove.

再回到ZuoBiaoView.cpp中编译一下程序

void

CZuoBiaoView::OnLButtonDown(UINT

nFlags,

CPoint

point)

{

//

TODO:

Add

your

message

handler

code

here

and/or

call

default

CClientDC

dc(this)

m=1

p1=point

CView::OnLButtonDown(nFlags,

point)

}

void

CZuoBiaoView::OnLButtonUp(UINT

nFlags,

CPoint

point)

{

//

TODO:

Add

your

message

handler

code

here

and/or

call

default

p2=point

CClientDC

dc(this)

OnPrepareDC(&dc)

dc.MoveTo(p1)

dc.LineTo(p2)

m=0

CView::OnLButtonUp(nFlags,

point)

}

void

CZuoBiaoView::OnMouseMove(UINT

nFlags,

CPoint

point)

{

//

TODO:

Add

your

message

handler

code

here

and/or

call

default

static

int

n=0

switch(++n)

{

case

1:

p2=point

break

case

2:

p1=p2

p2=point

n=0

break

}

CClientDC

dc(this)

OnPrepareDC(&dc)

if(m==1)

{

dc.MoveTo(p1)

dc.LineTo(p2)

}

CView::OnMouseMove(nFlags,

point)

}

题目: 编写MFC下的单文档程序,绘制矩形,矩形坐上角、右下角坐标由对话框输入。

思路:使用CDC的Draw3dRect函数可以直接在视图上绘制矩形,只是这个函数需要的是左上角坐标与矩形的长宽,所以我们需要通过左上角坐标与右下角坐标转换计算出矩形长宽李高。

实现过程:

1. 创建名为drawrect的单文档视图程序

2. 为CDrawrectView类添加成员变量来存放左上角坐标与右下角坐标

3. 在CDrawrectView类的OnDraw函数中根据左上角坐标与右下角坐标绘制矩形

4. 添加对话框资源用来输入左上角坐标与右下角坐标并为这个对话框添信纯加相应的类与成员变量

5. 让CDrawrectView响应OnFileNew函数,在这个函数中d出对话框要求用户输入左上角坐标与右下角坐标,把用户输入保存到CDrawrectView的相应成员变量中并强迫视图重绘。

关键代码:

void CDrawrectView::OnDraw(CDC* pDC)

{

 CDrawrectDoc* pDoc = GetDocument()

 ASSERT_VALID(pDoc)

 

 pDC->Draw3dRect(m_nX1, m_nY1, m_nX2 - m_nX1, m_nY2 - m_nY1, RGB(0, 0, 0), RGB(0, 0, 0))

}

void CDrawrectView::OnFileNew()

{

 CDlgPosition dlgPosition

 if (dlgPosition.DoModal() == IDOK)

 {

  m_nX1 = dlgPosition.m_nX1

  m_nY1 = dlgPosition.m_nY1

  m_nX2 = dlgPosition.m_nX2

  m_nY2 = dlgPosition.m_nY2

 }

Invalidate()         //Force view redraw

}

运行哪坦尺结果:

完整代码见附件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12344219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存