程序代码:
2.4 上机指导
3.初始化成员变量
CSy2View::CSy2View()
{
x=50; //设置文本的输出初始位置为(50,50)
y=50;
m_string.Empty(); //文本置空
}
4.添加wm_char字符消息处理函数
void CSy2View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
m_string+=nChar; //接收用户输入的字符
Invalidate(); //更新视图窗口,显示字符
CView::OnChar(nChar, nRepCnt, nFlags);
}
5.添加wm_keydown键盘消息处理函数
void CSy2View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch(nChar)
{
case VK_LEFT: //光标左键
x--;
break;
case VK_RIGHT: //光标右键
x++;
break;
case VK_UP: //光标上键
y--;
break;
case VK_DOWN: //光标下键
y++;
}
Invalidate(); //更新视图窗口,重新显示文本
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
6.输出文本
void CSy2View::OnDraw(CDC* pDC)
{
CSy2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->TextOut(x,y,m_string); //从(x,y)位置开始输出文本m_string
}
3.1.6
例3.1
void CLi3_1View::OnDraw(CDC* pDC)
{
CLi3_1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->RoundRect(100,30,250,100,30,30); //绘制圆角矩形
pDC->Ellipse(200,100,400,150); //绘制椭圆
}
例3.2
void CLi3_2View::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
dc.RoundRect(100,30,250,100,30,30); //绘制圆角矩形
dc.Ellipse(200,100,400,150); //绘制椭圆
// Do not call CView::OnPaint() for painting messages
}
例3.3
void CLi3_3View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this); //定义客户区设备环境
CRect r1;
GetClientRect(&;r1); //获得客户区的大小
dc.Ellipse(r1); //绘制椭圆
CView::OnLButtonDown(nFlags, point);
例3.4
void CLi3_4View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CWindowDC dc(this); //定义客户区设备环境
CRect r1;
GetClientRect(&;r1); //获得客户区的大小
dc.Ellipse(r1); //绘制椭圆
CView::OnLButtonDown(nFlags, point);
}
例3.5
void CLi3_5View::OnDraw(CDC* pDC)
{
CLi3_5Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CPen *PenOld,PenNew;
CBrush *BrushOld,BrushNew;
//选用库存黑色画笔
PenOld=(CPen *)pDC->SelectStockObject(BLACK_PEN);
//选用库存浅灰色画刷
BrushOld=(CBrush *)pDC->SelectStockObject(LTGRAY_BRUSH);
pDC->Rectangle(100,100,300,300);
//关联GDI库存对象
PenNew.CreateStockObject(WHITE_PEN);
pDC->SelectObject(&;PenNew);
pDC->MoveTo(100,100);
pDC->LineTo(3
00,300);
pDC->MoveTo(100,300);
pDC->LineTo(300,100);
//恢复
系统默认的GDI对象
pDC->SelectObject(PenOld);
pDC->SelectObject(BrushOld);
}
例3.6
void CLi3_6View::OnDraw(CDC* pDC)
{
CLi3_6Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CPen *PenOld,PenNew;
int PenStyle[]={PS_SOLID,PS_DOT,PS_DASH}; //画笔样式
char *strStyle[]={"实线","点线","虚线"};
char *strWidth[]={"1","2","3"};
char *strColor[]={"红","绿","蓝"};
char *p;
int x,y,t,Width=1;
COLORREF rgbPenClr[]={RGB(255,0,0),RGB(0,255,0),RGB(0,0,255)};
COLORREF PenColor=RGB(0,0,0);
pDC->TextOut(60,10,"用不同样式的画笔绘图");
pDC->TextOut(260,10,"用不