文档详情

第1讲Windows程序设计基础详解.ppt

发布:2017-04-05约字共105页下载文档
文本预览下载声明
* 6.输出图形 GDI中常用的函数 MoveTo(hDC, x, y); //将画笔从当前位置移到(x,y)坐标 BOOL LineToEx(HDC hdc,int x,int y); //从当前点画直线到(x,y)坐标处 BOOL Rectangle(HDC hdc,int x1,int y1,int x2,int y2); //以(x1,y1)为左上角坐标,(x2,y2)为右下角坐标画矩形 BOOL RoundRect(HDC hdc,int x1,int y1,int x2,int y2,int h,int w); //以(x1,y1)为左上角坐标,(x2,y2)为右下角坐标画圆角矩形 BOOL Ellipse(HDC hdc,int x1,int y1,int x2,int y2); //以(x1,y1)为左上角坐标,(x2,y2)为右下角坐标画椭圆 * 7.输出文本 Windows程序的文本按图形方式输出。 输出文本时必须以像素为单位精确定位每一行的输出位置。常用文本输出函数有TextOut和DrawTex BOOL TextOut(HDC hdc,int x,int y,LPCTSTR lpString,int n); int DrawText(HDC hdc,LPCTSTR lpString,int n,LPRECT lpRect,UINT uFormat); * 7.输出文本 输出文本的字体设置问题 Windows提供了丰富的字体,不同字体的高度和宽度也不尽相同,函数GetTextMetrics能够获取当前字体的详细信息,如字符的完度、高度、字间距、行间距等信息。其原型如下: BOOL GetTextMetrics(HDC hdc,TEXTMETRICS tm); TEXTMETRICS是保存字体信息的数据结构,主要域如下: typedef struct tagTEXTMETRIC { LONG tmHeight; //字符高度 LONG tmExternalLeading; //行间距 LONG tmAveCharWidth; //字符的平均宽度 LONG tmMaxCharWidth; //最大字符宽度 LONG tmWeight; //字符的粗细度 BYTE tmCharSet; //字符集 …… } TEXTMETRIC; * 10.4.1 Windows程序的数据输出 【例10-2】 在例10-1的基础上,修改窗口函数中的WM_PAINT消息,让程序用默认画笔和画刷绘制一个矩形,然后创建蓝色画笔和红色网格画刷编绘制一个矩形和椭圆。并通过函数TextOut?分别用系统默认色彩和红色输出两行文本。 修改后的窗口函数WndProc?如下: * WndProc?函数的程序代码 LRESULT CALLBACK WndProc(…) { …… //同例10-1 HPEN hPen,hPenOld; //定义画笔 HBRUSH hBrush,HbruOld; //定义画刷 TEXTMETRIC tm; //定义tm用于获取字体信息 int x=10,y=150; switch(message) { //消息处理 case WM_CREATE: return 0 ; * case WM_PAINT: hPen=(HPEN)CreatePen(PS_SOLID,3,RGB(0,0,255)); //创建蓝色实线画笔,宽3像素点 hBrush=(HBRUSH)CreateHatchBrush(HS_CROSS,RGB(255,0,0)); //创建红色网格线的画刷 hdc = BeginPaint(hwnd,ps) ; GetClientRect(hwnd,rect) ; DrawText(hdc,TEXT(Hello,APIProgramming!),-1,rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; Rectangle(hdc,10,10,80,80); //用默认画笔和画刷绘制椭圆 //下面用SelectObject函数将创建的画笔和画刷选入Windows系统,选入之后 //所有的图形函数都会用新建的蓝色画笔画图,用红色的网格画刷填充图形 hPenOld=(HPEN)SelectObject(hdc,hPen); //选入新画笔,返回旧画笔句柄 HbruOld=(HBRUSH)SelectObject(hdc,hBrush); //选入新画刷,返回旧画刷句柄 Rectangle(hd
显示全部
相似文档