MicrowindowsAPI 详细使用手册(GUI编程参考教材)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FriendlyARM Microwindows Tech. Documents
Microwindows API 详细使用手册
获取窗口 DC 的句柄
HDC WINAPI GetDC(hwnd)
HWND hwnd;
/* 窗口句柄 */
例子:
HDC hdc; Hdc = GetDC(hwnd);
…
ReleaseDC(hwnd,hdc);
选择画笔 HGDIOBJ WINAPI SelectObject(HDC hdc, HGDIOBJ hObject)
创建画笔
HPEN WINAPI CreatePen(nPenStyle, nWidth, crColor)
int nPenStyle;
/* 指定画笔样式
*/
int nWidth;
/* 画笔的宽度
HWND hwnd;
/* 窗口句柄 */
CONST PAINTSTRUCT * lpPaint; /* 更新区域 */
例子:
HDC hdc; BeginPaint(hwnd,&ps); … EndPaint(hwnd,ps);
/* 注: GetDC/ReleaseDC 函数可以在任何时候使用
*/
/* 注: BeginPaint/EndPaint 函数只能在响应 WM_PAINT 消息时使用 */
{300, 300}, {150, 300}, {150, 150}, {200, 150}, {200, 200}, {250, 200}, {250, 250}, {200, 250}, {200, 200}, {150, 200}, {150, 150}, {100, 150} }; … SetPolyFillMode(hdc,ALTERNATE); Polygon(hdc,polyPoints1,17);
将一个矩形的坐标复制给另一个矩形
BOOL WINAPI CopyRect(lprcDst, lprcSrc)
LPRECT lprcDst;
/* 目标矩形结构*/
CONST RECT *lprcSrc; /* 源矩形结构 */
广州友善之臂计算机科技有限公司 http://www.arm9.net
5/14
*/
COLORREF crColor; /* 画笔的 RGB 颜色 */
其中 NPenStyle 可以是下述常数之一:
PS_SOLID
画笔画出的是实线
PS_NULL
画笔不能画图
功能: 用指定的样式、宽度和颜色创建一个画笔
说明: 一旦不再需要画笔, 记得用 DeleteObject()函数将其删除
返回值:成功返回指向新画笔的一个句柄;否则返回零
设置背景模式
int WINAPI SetBkMode(hdc, iBkMode)
HDC hdc;
/* hdc 句柄 */
Int iBkMode; /* 背景模式 */
设置背景颜色 COLORREF WINAPI SetBkColor(HDC hdc, COLORREF crColor)
设置新的绘图模式 int WINAPI SetROP2(HDC hdc, int fnDrawMode)
/* 矩形右下角 X 坐标 */
int nBottom; 返回值:
/* 矩形右下角 Y 坐标 */
如果函数执行成功,返回 TRUE; 如果失败,返回 FALSE
在给定的矩形边界框内画内切实心椭圆
BOOL WINAPI Ellipse(hdc, nLeftRect, nTopRect,nRightRect, nBottomRect) HDC hdc; /* hdc 句柄 */ int nLeftRect; /* 矩形左上角 X 坐标 */ int nTopRect; /* 矩形左上角 Y 坐标 */ int nRightRect; /* 矩形右下角 X 坐标 */ int nBottomRect;/* 矩形右下角 Y 坐标 */
用给定的刷子填充矩形
int WINAPI FillRect(hdc, lprc, hbr)
HDC hdc;
/* hdc 句柄 */
CONST RECT *lprc; /* 矩形坐标 */
HBRUSH hbr;
/* 画刷的句柄或系统颜色 */
填充区域包括矩形的左上角,但是不包括矩形的右下角
Hale Waihona Puke Baidu返回值:
如果函数执行成功,返回 TRUE; 如果失败,返回 FALSE
/* 矩形右下角 X 坐标 */
int yBottom; /* 矩形右下角 Y 坐标 */
设定一个空矩形,即矩形结构 RECT 的所有坐标为 0
BOOL WINAPI SetRectEmpty(LPRECT lprc) 相当于执行 SetRect(&lprc,0,0,0,0),其结果是一个空矩形,不会显示在屏幕上
画一椭圆弧
BOOL WINAPI Arc(HDC hdc, int nLeftRect, int nTopRect,
int nRightRect, int nBottomRect, int nXStartArc, int nYStartArc, int nXEndArc, int nYEndArc)
int nLeft;
/* 矩形左上角 X 坐标 */
广州友善之臂计算机科技有限公司 http://www.arm9.net
3/14
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
int nTop;
/* 矩形左上角 Y 坐标 */
int nRight;
获取给定坐标点的 RGB 值 COLORREF WINAPI GetPixel(HDC hdc, int x, int y)
设置当前画笔位置
BOOL WINAPI MoveToEx(hdc, x, y, lpPoint)
HDC hdc;
/* hdc 句柄 */
int x;
/* 画笔新位置 X 坐标 */
画点,完成在给定坐标点上,以给定的颜色着色
广州友善之臂计算机科技有限公司 http://www.arm9.net
2/14
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
COLORREF WINAPI SetPixel(HDC hdc, int x, int y, COLORREF crColor)
/* 窗口句柄 */
例子:
HDC hdc;
hdc = GetWindowDC(hwnd);
释放句柄 BOOL WINAPI DeleteDC(hdc)
HDC hdc; /* hdc 句柄 */ 例子: HDC hdc; hdc = DeleteDC(hwnd);
选择画笔 HGDIOBJ WINAPI GetStockObject(int nObject)
给矩形结构 RECT 的四个域赋值
BOOL WINAPI SetRect(lprc, xLeft, yTop, xRight, yBottom)
LPRECT lprc; /* 矩形结构 */
int nLeft;
/* 矩形左上角 X 坐标 */
int yTop;
/* 矩形左上角 Y 坐标 */
int xRight;
int y;
/* 画笔新位置 Y 坐标 */
LPPOINT lpPoint;/* 当前画笔的坐标 */
返回值:
如果函数执行成功,返回 TRUE;否则,返回 FALSE
画直线
BOOL WINAPI LineTo(hdc, x, y)
HDC hdc; /* hdc 句柄 */
int x;
/* 目标点 X 坐标 */
释放 hdc 句柄
int WINAPI ReleaseDC(hwnd, hdc)
HWND hwnd;
/* 窗口句柄 */
HDC hdc;
/* hdc 句柄 */
例子:
HDC hdc; Hdc = GetDC(hwnd);
获取窗口 DC 的句柄
HDC WINAPI BeginPaint(hwnd, lpPaint)
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
判断矩形是否为空 BOOL WINAPI IsRectEmpty(CONST RECT *lprc)
判断两个矩形是否相等
BOOL WINAPI EqualRect( const RECT* rect1, const RECT* rect2 ) 返回值: 如果两个矩形相等,则函数返回 TRUE,,否则,返回 FALSE
使用当前画笔绘制轮廓,使用当前画刷填充图形 返回值: 如果函数执行成功,返回 TRUE; 如果失败,返回 FALSE
绘制扇形区域
BOOL WINAPI Pie(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect,
nXRadial1, nYRadial1, nXRadial2, nYRadial2) HDC hdc; /* hdc 句柄 */ int nLeftRect; /* 矩形左上角 X 坐标 */ int nTopRect; /* 矩形左上角 Y 坐标 */ int nRightRect; /* 矩形右下角 X 坐标 */ int nBottomRect;/* 矩形右下角 Y 坐标 */ int nXRadial1; /* 半径起始线的终点 X 坐标 */ int nYRadial1; /* 半径起始线的终点 Y 坐标 */ int nXRadial2; /* 半径起结束的终点 X 坐标 */ int nYRadial2; /* 半径起结束的终点 Y 坐标 */ 该函数用来绘制由椭圆的一段圆弧及弧端点到椭圆中心的连线(半径)所组成的实心图形。
画一椭圆弧,该椭圆内切一个左上角为(nLeftRect,nTopRect), 右下角为(nRightRect,nBottomRect)的矩形, 使用一条由点(nXStartArc,nYStartArc)到椭圆中心线 所连接的假想线与椭圆的交点为起始点, 使用一条由点(nXEndArc,nYEndArc)到椭圆中心线 所连接的假想线与椭圆的交点为终止点, 逆时针方向在椭圆线上画一段弧
HWND hwnd;
/* 窗口句柄 */
LPPAINTSTRUCT lpPaint; /* 更新区域 */
例子:
HDC hdc; BeginPaint(hwnd,&ps); … EndPaint(hwnd,ps);
释放 hdc 句柄
BOOL WINAPI EndPaint(hwnd, lpPaint)
获取整个窗口的设备描述句柄,包括客户区与非客户区
广州友善之臂计算机科技有限公司 http://www.arm9.net
1/14
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
HDC WINAPI GetWindowDC(hwnd)
HWND hwnd;
连接两个以上顶点之间的直线画出多边形
BOOL WINAPI Polygon(hdc, lpPoints, nCount) HDC hdc; /* hdc 句柄 */ CONST POINT *lpPoints; /* 点数组 */ int nCount; /* 数组中的顶点数目合计 */
返回值: 如果函数执行成功,返回 TRUE; 如果失败,返回 FALSE 例子:
创建一个产生振动色的画刷 HBRUSH WINAPI CreateSolidBrush(COLORREF crColor)
画一矩形,矩形内部用当前的画刷填充
BOOL WINAPI Rectangle(hdc, nLeft, nTop, nRight, nBottom)
HDC hdc; /* hdc 句柄 */
int y;
/* 目标点 Y 坐标 */
从当前点画到指定的点(x,y),但不包含点(x,y),同时将当前点位置的坐标设置为(x,y)
画多条连接线
BOOL WINAPI Polyline(HDC hdc, CONST POINT *lppt, int cPoints) 从第一个点开始,顺序连接指定的点,画出一系列的线段,不使用也不更新当前位置
POINT polyPoints[] = { {100, 100}, {150, 100}, {150, 150}, {300, 150},
广州友善之臂计算机科技有限公司 http://www.arm9.net
4/14
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
Microwindows API 详细使用手册
获取窗口 DC 的句柄
HDC WINAPI GetDC(hwnd)
HWND hwnd;
/* 窗口句柄 */
例子:
HDC hdc; Hdc = GetDC(hwnd);
…
ReleaseDC(hwnd,hdc);
选择画笔 HGDIOBJ WINAPI SelectObject(HDC hdc, HGDIOBJ hObject)
创建画笔
HPEN WINAPI CreatePen(nPenStyle, nWidth, crColor)
int nPenStyle;
/* 指定画笔样式
*/
int nWidth;
/* 画笔的宽度
HWND hwnd;
/* 窗口句柄 */
CONST PAINTSTRUCT * lpPaint; /* 更新区域 */
例子:
HDC hdc; BeginPaint(hwnd,&ps); … EndPaint(hwnd,ps);
/* 注: GetDC/ReleaseDC 函数可以在任何时候使用
*/
/* 注: BeginPaint/EndPaint 函数只能在响应 WM_PAINT 消息时使用 */
{300, 300}, {150, 300}, {150, 150}, {200, 150}, {200, 200}, {250, 200}, {250, 250}, {200, 250}, {200, 200}, {150, 200}, {150, 150}, {100, 150} }; … SetPolyFillMode(hdc,ALTERNATE); Polygon(hdc,polyPoints1,17);
将一个矩形的坐标复制给另一个矩形
BOOL WINAPI CopyRect(lprcDst, lprcSrc)
LPRECT lprcDst;
/* 目标矩形结构*/
CONST RECT *lprcSrc; /* 源矩形结构 */
广州友善之臂计算机科技有限公司 http://www.arm9.net
5/14
*/
COLORREF crColor; /* 画笔的 RGB 颜色 */
其中 NPenStyle 可以是下述常数之一:
PS_SOLID
画笔画出的是实线
PS_NULL
画笔不能画图
功能: 用指定的样式、宽度和颜色创建一个画笔
说明: 一旦不再需要画笔, 记得用 DeleteObject()函数将其删除
返回值:成功返回指向新画笔的一个句柄;否则返回零
设置背景模式
int WINAPI SetBkMode(hdc, iBkMode)
HDC hdc;
/* hdc 句柄 */
Int iBkMode; /* 背景模式 */
设置背景颜色 COLORREF WINAPI SetBkColor(HDC hdc, COLORREF crColor)
设置新的绘图模式 int WINAPI SetROP2(HDC hdc, int fnDrawMode)
/* 矩形右下角 X 坐标 */
int nBottom; 返回值:
/* 矩形右下角 Y 坐标 */
如果函数执行成功,返回 TRUE; 如果失败,返回 FALSE
在给定的矩形边界框内画内切实心椭圆
BOOL WINAPI Ellipse(hdc, nLeftRect, nTopRect,nRightRect, nBottomRect) HDC hdc; /* hdc 句柄 */ int nLeftRect; /* 矩形左上角 X 坐标 */ int nTopRect; /* 矩形左上角 Y 坐标 */ int nRightRect; /* 矩形右下角 X 坐标 */ int nBottomRect;/* 矩形右下角 Y 坐标 */
用给定的刷子填充矩形
int WINAPI FillRect(hdc, lprc, hbr)
HDC hdc;
/* hdc 句柄 */
CONST RECT *lprc; /* 矩形坐标 */
HBRUSH hbr;
/* 画刷的句柄或系统颜色 */
填充区域包括矩形的左上角,但是不包括矩形的右下角
Hale Waihona Puke Baidu返回值:
如果函数执行成功,返回 TRUE; 如果失败,返回 FALSE
/* 矩形右下角 X 坐标 */
int yBottom; /* 矩形右下角 Y 坐标 */
设定一个空矩形,即矩形结构 RECT 的所有坐标为 0
BOOL WINAPI SetRectEmpty(LPRECT lprc) 相当于执行 SetRect(&lprc,0,0,0,0),其结果是一个空矩形,不会显示在屏幕上
画一椭圆弧
BOOL WINAPI Arc(HDC hdc, int nLeftRect, int nTopRect,
int nRightRect, int nBottomRect, int nXStartArc, int nYStartArc, int nXEndArc, int nYEndArc)
int nLeft;
/* 矩形左上角 X 坐标 */
广州友善之臂计算机科技有限公司 http://www.arm9.net
3/14
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
int nTop;
/* 矩形左上角 Y 坐标 */
int nRight;
获取给定坐标点的 RGB 值 COLORREF WINAPI GetPixel(HDC hdc, int x, int y)
设置当前画笔位置
BOOL WINAPI MoveToEx(hdc, x, y, lpPoint)
HDC hdc;
/* hdc 句柄 */
int x;
/* 画笔新位置 X 坐标 */
画点,完成在给定坐标点上,以给定的颜色着色
广州友善之臂计算机科技有限公司 http://www.arm9.net
2/14
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
COLORREF WINAPI SetPixel(HDC hdc, int x, int y, COLORREF crColor)
/* 窗口句柄 */
例子:
HDC hdc;
hdc = GetWindowDC(hwnd);
释放句柄 BOOL WINAPI DeleteDC(hdc)
HDC hdc; /* hdc 句柄 */ 例子: HDC hdc; hdc = DeleteDC(hwnd);
选择画笔 HGDIOBJ WINAPI GetStockObject(int nObject)
给矩形结构 RECT 的四个域赋值
BOOL WINAPI SetRect(lprc, xLeft, yTop, xRight, yBottom)
LPRECT lprc; /* 矩形结构 */
int nLeft;
/* 矩形左上角 X 坐标 */
int yTop;
/* 矩形左上角 Y 坐标 */
int xRight;
int y;
/* 画笔新位置 Y 坐标 */
LPPOINT lpPoint;/* 当前画笔的坐标 */
返回值:
如果函数执行成功,返回 TRUE;否则,返回 FALSE
画直线
BOOL WINAPI LineTo(hdc, x, y)
HDC hdc; /* hdc 句柄 */
int x;
/* 目标点 X 坐标 */
释放 hdc 句柄
int WINAPI ReleaseDC(hwnd, hdc)
HWND hwnd;
/* 窗口句柄 */
HDC hdc;
/* hdc 句柄 */
例子:
HDC hdc; Hdc = GetDC(hwnd);
获取窗口 DC 的句柄
HDC WINAPI BeginPaint(hwnd, lpPaint)
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
判断矩形是否为空 BOOL WINAPI IsRectEmpty(CONST RECT *lprc)
判断两个矩形是否相等
BOOL WINAPI EqualRect( const RECT* rect1, const RECT* rect2 ) 返回值: 如果两个矩形相等,则函数返回 TRUE,,否则,返回 FALSE
使用当前画笔绘制轮廓,使用当前画刷填充图形 返回值: 如果函数执行成功,返回 TRUE; 如果失败,返回 FALSE
绘制扇形区域
BOOL WINAPI Pie(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect,
nXRadial1, nYRadial1, nXRadial2, nYRadial2) HDC hdc; /* hdc 句柄 */ int nLeftRect; /* 矩形左上角 X 坐标 */ int nTopRect; /* 矩形左上角 Y 坐标 */ int nRightRect; /* 矩形右下角 X 坐标 */ int nBottomRect;/* 矩形右下角 Y 坐标 */ int nXRadial1; /* 半径起始线的终点 X 坐标 */ int nYRadial1; /* 半径起始线的终点 Y 坐标 */ int nXRadial2; /* 半径起结束的终点 X 坐标 */ int nYRadial2; /* 半径起结束的终点 Y 坐标 */ 该函数用来绘制由椭圆的一段圆弧及弧端点到椭圆中心的连线(半径)所组成的实心图形。
画一椭圆弧,该椭圆内切一个左上角为(nLeftRect,nTopRect), 右下角为(nRightRect,nBottomRect)的矩形, 使用一条由点(nXStartArc,nYStartArc)到椭圆中心线 所连接的假想线与椭圆的交点为起始点, 使用一条由点(nXEndArc,nYEndArc)到椭圆中心线 所连接的假想线与椭圆的交点为终止点, 逆时针方向在椭圆线上画一段弧
HWND hwnd;
/* 窗口句柄 */
LPPAINTSTRUCT lpPaint; /* 更新区域 */
例子:
HDC hdc; BeginPaint(hwnd,&ps); … EndPaint(hwnd,ps);
释放 hdc 句柄
BOOL WINAPI EndPaint(hwnd, lpPaint)
获取整个窗口的设备描述句柄,包括客户区与非客户区
广州友善之臂计算机科技有限公司 http://www.arm9.net
1/14
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents
HDC WINAPI GetWindowDC(hwnd)
HWND hwnd;
连接两个以上顶点之间的直线画出多边形
BOOL WINAPI Polygon(hdc, lpPoints, nCount) HDC hdc; /* hdc 句柄 */ CONST POINT *lpPoints; /* 点数组 */ int nCount; /* 数组中的顶点数目合计 */
返回值: 如果函数执行成功,返回 TRUE; 如果失败,返回 FALSE 例子:
创建一个产生振动色的画刷 HBRUSH WINAPI CreateSolidBrush(COLORREF crColor)
画一矩形,矩形内部用当前的画刷填充
BOOL WINAPI Rectangle(hdc, nLeft, nTop, nRight, nBottom)
HDC hdc; /* hdc 句柄 */
int y;
/* 目标点 Y 坐标 */
从当前点画到指定的点(x,y),但不包含点(x,y),同时将当前点位置的坐标设置为(x,y)
画多条连接线
BOOL WINAPI Polyline(HDC hdc, CONST POINT *lppt, int cPoints) 从第一个点开始,顺序连接指定的点,画出一系列的线段,不使用也不更新当前位置
POINT polyPoints[] = { {100, 100}, {150, 100}, {150, 150}, {300, 150},
广州友善之臂计算机科技有限公司 http://www.arm9.net
4/14
发行日期 2005-4-1
FriendlyARM Microwindows Tech. Documents