MFC应用程序实例
- 新建FirstMFC对话框应用程序
此程序是开发一个'口令'对话框程序,包含了模式对话框与非模式方式调用对话框。
- 小时钟程序
共享链接:http://u.163.com/0Nkr提取码:hdlov0uq
共享链接:http://u.163.com/JOssJQN提取码:7ahmgfk9
共享链接:http://u.163.com/JwZlq提取码:233y2w3q
如:CPen(画笔类),CBrush(画刷类),CFont(字体类)
例:pDC->SelectObject(LTGRAY_BRUSH);
pDC->TextOut(100,80,"Hello,VC++编程");
void CMyHelloView::OnLbuttonDown(UINT nFlags,CPoint point)
CRect rect(0,0,100,100) //定义一个矩形
第2种:调用GetDC()函数获得显示设备环境的指针pDC进行绘图,但绘图完毕后,
void CMyHelloView::OnLbuttonDown(UINT nFlags,CPoint point)
应用于对话框程序,它可以处理来自Windows的WM_PAINT消息,所以通常是在OnPaint消息响应函数中使用。
dc.MoveTo(10,10); //调用MoveTo()函数,定位到点(10,10)
dc.LineTo(100,100); //调用LineTo()函数,画线到点(100,100)
dc.Ellipse(120,120,160,160); //调用画椭圆函数Ellipse()
CClientDC类对象主要用来自动处理对描述窗口的客户程序区域的设备环境进行调用和释放。在CClientDC类对象
创建时自动调用GetDC(),在撤销时将自动调用ReleaseDC()。
void CMyHelloView::OnLbuttonDown(UINT nFlags,CPoint point)
dc.MoveTo(rect.left,rect.Top); //定位到客户程序区域的左上角
dc.LineTo(rect.right,rect.bottom); //画线到客户程序区域的右下角
Cview::OnLbuttonDown(nFlags,point);
CPen newPen(PS_SOLID,2,RGB(2,255,0));
2.构造和初始化分两步完成,构造由不带参数的构造函数完成,而初始化由初始函数完成。
newPen.CreatePen(PS_SOLID,2,RGB(0,255,0));
CBrush newBrush(RGB(0,0,255));
2.构造和初始化分两步完成,构造由不带参数的构造函数完成,而初始化由初始函数完成。
newBrush.CreateSolidBrush(RGB(0,255,0));
2.调用CFont类的创建字体函数,将构造的CFont类对象与Windows的某种字体相关联
BYTE nOutPrecison, //字体输出结果和要求的匹配程度
BYTE nClipPrecison, //如何裁剪落于裁剪区之外的字符
BYTE nPitchAnFamily,//字体间距和字体簇
CPoint类是对Windows结构POINT的封装,POINT结构:
COLORREF SetPixel(POINT point,COLORREF crColor);
dc.SetPixel(point,RGB(255,0,0));
直线:绘制线条函数由CDC::MoveTo()和CDC::LineTo()完成
LineTo()函数用于画一条从当前点到指定点的直线,然后将指定咪设为当前点。
在屏幕上从点p1(100,200)到p2(150,300)画一个线段
CPoint p1(100,200),p2(150,300);
}RECT,*PRECT,NEAR* NPRECT,FAR* LPRECT;
画矩形的常用函数是CDC::Rectangle()和CDC::FillRect(),
BOOL Rectangle(int x1,int y1,int x2,int y2);
BOOL Rectangle(LPCRECT lpRect);
CDC::FillRect()函数原型为: 该函数使用给定的画刷给矩形填充颜色
void FillRect(LPCRECT lpRect,CBrush* pBrush);
dc.Rectangle(120,120,160,160);
BOOL Ellipse(int x1,int y1,int x2,int y2);
CBitmap(位图类):CBitmap类封装了Windows的GDI位图操作所需的大部分函数。
LoadBitmap是位图的初始化函数,从应用程序中调用一个位图资源,其函数原型为:
BOOL LoadBitmap(LPCTSTR lpszResourceName);
BOOL LoadBitmap(UINT nIDResource);
若要直接创建一个位图对象,可使用CBitmap类中的CreateBitmap(),CreateBitmapIndirect()以及
CreateCompatibleBitmap()函数,其函数原型为:
BOOL CreateBitmap(int nWidth,int nHeight,UINT nPlanes,UINT nBitcount,const void* lpBits);
BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);
BOOL CreateCompatibleBitmap(CDC* pDC,int nWidth,,int nHeight);
1.调用CBitmap类的CreateBitmap(),CreateCompatibleBitmap()以及CreateBitmapIndirect()函数创建
2.调用CDC::CreateCompatibleDC()函数创建一个内存设备环境,以便位图在内存中保存下来,并与指定的
3.调用CDC::SelectObject()函数将位图对象选入设备环境中。
4.调用CDC::BitBlt()或CDC::StretchBlt()函数将位图复制到实际设备环境中。
见本工程中 void CMyDraw::OnShowbitmap()函数
1.定义一个HBITMAP类型变量bitmap,通过它的LoadImage()函数将指定的位图文件读取进来。
2.创建兼容的内存设备描述表,并通过SelectObject()将位图选入内存设备描述表中。
见本工程中 void CMyDrawView::OnDbmp()函数
CPalette(调色板类),CRgn(绘图区域类)。。。暂留。。
共享链接:http://u.163.com/33DA提取码:xqj1ft5x
共享链接:http://u.163.com/qBhuJKFq提取码:1qpodlx9
共享链接:http://u.163.com/0IhA提取码:fbcdiicr
共享链接:http://u.163.com/AaI3j提取码:mxcr7nkc