MFC1.docx
- 文档编号:27175599
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:20
- 大小:57.75KB
MFC1.docx
《MFC1.docx》由会员分享,可在线阅读,更多相关《MFC1.docx(20页珍藏版)》请在冰豆网上搜索。
MFC1
4-2绘制多线条
OnDraw():
voidCMFCexp4_2View:
:
OnDraw(CDC*pDC)
{
CMFCexp4_2Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
intred=0,green=0,blue=0;
intwidth=2;
introw=20;
for(ints=0;s<8;s++)
{
intcolor=RGB(red,green,blue);
CPennewPen(PS_SOLID,width,color);
CPen*oldPen=pDC->SelectObject(&newPen);
pDC->MoveTo(20,row);
pDC->LineTo(300,row);
pDC->SelectObject(oldPen);
red+=32;green+=16;blue+=8;
width+=2;row+=30;
}
}
4—3演示画笔样式
OnDraw()
voidCMFCexp4_3View:
:
OnDraw(CDC*pDC)
{
CMFCexp4_3Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
intstyle[]={PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT};
introw=20;
for(ints=0;s<5;s++)
{CPennewPen(style[s],1,RGB(0,0,0));
CPen*oldPen=pDC->SelectObject(&newPen);
pDC->MoveTo(20,row);
pDC->LineTo(300,row);
pDC->SelectObject(oldPen);
row+=30;
}
}
4-4画刷的应用
OnDraw()
voidCMFCexp4_4View:
:
OnDraw(CDC*pDC)
{
CMFCexp4_4Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
intred=0,green=0,blue=0;
introw=20;
for(ints=0;s<6;s++)
{
intclr=RGB(red,green,blue);
CBrushnewBrush(clr);
CBrush*oldBrush=pDC->SelectObject(&newBrush);
pDC->Rectangle(20,row,200,row+20);
pDC->SelectObject(oldBrush);
red+=34;green+=16;blue+=4;
row+=30;
}
intstyles[]={HS_BDIAGONAL,HS_CROSS,HS_DIAGCROSS,HS_FDIAGONAL,HS_HORIZONTAL,HS_VERTICAL};
row=20;
for(s=0;s<6;s++)
{CBrushnewBrush(styles[s],RGB(0,0,0));
CBrush*oldBrush=pDC->SelectObject(&newBrush);
pDC->Rectangle(220,row,400,row+20);
pDC->SelectObject(oldBrush);
row+=30;}
}
4-6文本颜色的设置
OnDraw():
voidCMFCexp4_6View:
:
OnDraw(CDC*pDC)
{
CMFCexp4_6Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
pDC->TextOut(30,30,"文本的颜色");
pDC->SetTextColor(RGB(255,0,0));
pDC->TextOut(130,30,"文本的颜色");
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkColor(RGB(0,0,255));
pDC->TextOut(230,30,"文本的颜色");
}
4-7文本字符间距的设置
OnDraw()
voidCMFCexp4_7View:
:
OnDraw(CDC*pDC)
{
CMFCexp4_7Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
for(ints=0;s<5;s++)
{
pDC->SetTextCharacterExtra(s*4);
pDC->TextOut(20,20+s*20,"文本字符的间距");}
}
4-8文本的水平对齐
OnDraw()
voidCMFCexp4_8View:
:
OnDraw(CDC*pDC)
{
CMFCexp4_8Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
pDC->SetTextAlign(TA_LEFT);
pDC->TextOut(220,20,"AAAAAA");
pDC->TextOut(220,40,"HHHHH");
pDC->TextOut(220,60,"SSSSSSSS");
pDC->SetTextAlign(TA_CENTER);
pDC->TextOut(220,80,"AAAAAA");
pDC->TextOut(220,100,"HHHHH");
pDC->TextOut(220,120,"SSSSSSSS");
pDC->SetTextAlign(TA_RIGHT);
pDC->TextOut(220,140,"AAAAAA");
pDC->TextOut(220,160,"HHHHH");
pDC->TextOut(220,180,"SSSSSSSS");
}
4-9菱形
OnLButtonDown()
voidCMFCexp4_9View:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CClientDCdc(this);
CRectrc;
GetClientRect(&rc);
dc.MoveTo(0,(rc.bottom+rc.top)/2);
dc.LineTo((rc.right+rc.left)/2,0);
dc.LineTo(rc.right,(rc.bottom+rc.top)/2);
dc.LineTo((rc.right+rc.left)/2,rc.bottom);
dc.LineTo(0,(rc.bottom+rc.top)/2);
CView:
:
OnLButtonDown(nFlags,point);
}
5-3
在应用程序头文件StdAfx.h中加入包含命令:
#include
在文档类声明中定义数组类对象m_Rectag
classCMFCexp5_3Doc:
publicCDocument
{
。
。
。
public:
CArray
}
在文档类的构造函数中定义数组的大小
CMFCexp5_3Doc:
:
CMFCexp5_3Doc()
{
m_Rectag.SetSize(256,256);
}
在视图类的OnLButtonDown函数中设置指向文档的指针并通过该指针获取文档的成员
voidCMFCexp5_3View:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CMFCexp5_3Doc*pDoc=GetDocument();
intr=rand()%50+5;
CRectRet(point.x-r,point.y-r,point.x+r,point.y+r);
pDoc->m_Rectag.Add(Ret);
InvalidateRect(Ret,FALSE);
CView:
:
OnLButtonDown(nFlags,point);
}
在OnDraw函数中:
voidCMFCexp5_3View:
:
OnDraw(CDC*pDC)
{
CMFCexp5_3Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
for(inti=0;i
pDC->Rectangle(pDoc->m_Rectag[i]);
}
6-2同步更新所有窗口的应用程序
OnLButtonDown代码
voidCMFCexp6_2View:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CMFCexp6_2Doc*pDoc=GetDocument();
intr=rand()%50+5;
CRectRet(point.x-r,point.y-r,point.x+r,point.y+r);
pDoc->m_Rectag.Add(Ret);
pDoc->UpdateAllViews(NULL);
CView:
:
OnLButtonDown(nFlags,point);
}
7-1
在文档类的声明中添加一个数据成员tagRec来存储矩形
classCMFCexp7_1Doc:
publicCDocument
{
//Attributes
public:
CRectm_tagRec;
//Operations
在文档类的构造函数中,初始化数据成员
CMFCexp7_1Doc:
:
CMFCexp7_1Doc()
{
//TODO:
addone-timeconstructioncodehere
m_tagRec.left=30;m_tagRec.top=30;
m_tagRec.right=350;m_tagRec.bottom=300;
}
添加LBottomDown
voidCMFCexp7_1View:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CMFCexp7_1Doc*pDoc=GetDocument();
if(nFlags&MK_SHIFT)
{
pDoc->m_tagRec.left=30;
pDoc->m_tagRec.top=30;
pDoc->m_tagRec.right=350;
pDoc->m_tagRec.bottom=300;
}
else
{
pDoc->m_tagRec.left=point.x;
pDoc->m_tagRec.top=point.y;
pDoc->m_tagRec.right=point.x+320;
pDoc->m_tagRec.bottom=point.y+270;
}
InValidateRect(NULL,TRUE);
CView:
:
OnLButtonDown(nFlags,point);
}
编写OnDraw代码
voidCMFCexp7_1View:
:
OnDraw(CDC*pDC)
{
CMFCexp7_1Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDC->Rectangle(pDoc->m_tagRec);
}
7-2一个测试鼠标移动消息的程序
在文档类声明中添加一个点类的数据成员m_point
classCMFCexp7_2Doc:
publicCDocument
{
。
。
。
public:
CPointm_Point;
}
在视图类中添加鼠标移动消息响应函数,并输出代码
voidCMFCexp7_2View:
:
OnMouseMove(UINTnFlags,CPointpoint)
{CMFCexp7_2Doc*pDoc=GetDocument();
pDoc->m_Point=Point;
InValidateRect(NULL,FALSE);
CView:
:
OnMouseMove(nFlags,point);
}
在OnDraw代码:
voidCMFCexp7_2View:
:
OnDraw(CDC*pDC)
{
CMFCexp7_2Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
CPointPoint(30,30);
pDC->MoveTo(point);
pDC->LineTo(pDoc->m_Point);
}
7-4
voidCMFCexp7_4View:
:
OnMouseMove(UINTnFlags,CPointpoint)
{
Charstr[50];
CClientDCdc(this);
dc.TextOut(20,20,”WM_MOUSEMOVE”);
wsprintf(str,”X:
%dY:
%d“,point.x,point.y);
dc.TextOut(200,20,str);
CView:
:
OnMouseMove(nFlags,point);
}
voidCMFCexp7_4View:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
setCapture();
CView:
:
OnLButtonDown(nFlags,point);
}
voidCMFCexp7_4View:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{ReleaseCapture();
CView:
:
OnLButtonDown(nFlags,point);
}
7-5
在文档类声明
//Attributes
public:
CRectm_crlRect;
//Operations
在文档类构造函数中初始化m_crlRect
CMFCexp7_5Doc:
:
CMFCexp7_5Doc()
{m_crlRect.left=30;
m_crlRect.top=30;
m_crlRect.right=80;
m_crlRect.bottom=80;
}
在CMFCexp7_5View中添加WM_KEYDOWN
voidCCMFCexp7_5View:
:
OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)
{CMFCexp7_5Doc*pDoc=GetDocument();
CRectclientRec;
GetClientRect(&clientRec);
Switch(nChar)
{caseVK_LEET:
If(pDoc->m_crlRect.left>0)
{pDoc->m_crlRect.left-=5;
pDoc->m_crlRect.right-=5;
}
break;
caseVK_RIGHT:
If(pDoc->m_crlRect.right<=(clientRec.right-clientRec.left))
{pDoc->m_crlRect.left+=5;
pDoc->m_crlRect.right+=5;
}
break;
}
InValidateRect(NULL,TRUE);
CView:
:
OnKeyDown(nChar,nRepCnt,nFlags);
}
OnDraw代码:
voidCMFCexp7_5View:
:
OnDraw(CDC*pDC)
{
CMFCexp7_5Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDC->Ellipse(pDoc->m_crlRect);
}
7-6给7-5增加功能
voidCCMFCexp7_6View:
:
OnChar(UINTnChar,UINTnRepCnt,UINTnFlags)
{CMFCexp7_6Doc*pDoc=GetDocument();
CRectclientRec;
GetClientRect(&clientRec);
Switch(nChar)
{case‘L’:
If(pDoc->m_crlRect.left>0)
{pDoc->m_crlRect.left-=50;
pDoc->m_crlRect.right-=50;
}
break;
case‘R’:
If(pDoc->m_crlRect.right<=(clientRec.right-clientRec.left))
{pDoc->m_crlRect.left+=50;
pDoc->m_crlRect.right+=50;
}
break;
}
InValidateRect(NULL,TRUE);
CView:
:
OnKeyDown(nChar,nRepCnt,nFlags);
}
7-7
Public:
Char*m_pStr;
voidCMFexp7_7View:
:
OnSetFocuse(CWnd*pOldWnd)
{
CView:
:
OnSetFocuse(pOldWnd);
CMFCexp7_7Doc*pDoc=GetDocument();
pDoc->m_pStr="获得焦点";
InValidateRect(NULL,TRUE);
}
voidCMFexp7_7View:
:
OnKillFocuse(CWnd*pOldWnd)
{
CView:
:
OnSetFocuse(pNewWnd);
CMFCexp7_7Doc*pDoc=GetDocument();
pDoc->m_pStr="失去焦点";
InValidateRect(NULL,TRUE);
}
voidCMFexp7_7View:
:
OnDraw(CDC*pDC)
{
CMFCexp7_7Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(20,20,pDoc->m_pStr);
}
voidCCMFCexp7_7View:
:
OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)
{
MessageBeep
(1);
CView:
:
OnKeyDown(nChar,nRepCnt,nFlags);
8-1
#defineID_FILE_PRT130
Public:
char*m_str
打开视图类的源文件,在成员函数的实现中添加代码
VoidCMFCexp78_1View:
:
OnPrt()
{CMFCexp8_1Doc*pDoc=GetDocument();
pDoc->m_str=”添加了一个选项”;
InValidateRect(NULL,TRUE);
}
voidCMFCexp8_1View:
:
OnDraw(CDC*pDC)
{
CMFCexp8_1Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(30,30,pDoc->m_str);
}
4-6方圆变换
private:
BOOLm_bkey;
CRectm_rectRec;
在视图类的构造函数中
CRec_CrlView:
:
CRec_CrlView()
:
m_rectRec(100,100,400,400)
{//TODO:
addconstructioncodehere
m_bkey=FALSE;
}
voidCRec_CrlView:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
if(m_bkey)
m_bkey=FALSE;
else
m_bkey=TRUE;
InvalidateRect(m_rectRec);
CView:
:
OnLButtonDown(nFlags,point);
}
voidCRec_CrlView:
:
OnDraw(CDC*pDC)
{
CRec_CrlDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(m_bkey)
pDC->Ellipse(m_rectRec);
else
pDC->Rectangle(m_rectRec);
}
4-7圆的颜色变换
在视图类定义
classC4_7View:
publicCView
{
intm_crl1,m_crl2,m_crl3;
在视图类
voidC4_7View:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
m_crl1-=10;
InvalidateRect(NULL);
CVi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC1