Windows Api教案2Word下载.docx
- 文档编号:15309541
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:14
- 大小:20.33KB
Windows Api教案2Word下载.docx
《Windows Api教案2Word下载.docx》由会员分享,可在线阅读,更多相关《Windows Api教案2Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
◆鼠标光标穿越客户区;
◆图标拖过客户区;
◆可以用SendMessage函数发送WM_PAINT消息。
⒉有效矩形和无效矩形
1无效区域
窗口的部分或全部客户区被其它窗口覆盖时,当其它窗口擦除后,被覆盖的区域称为“无效区域”或“更新区域”。
2无效矩形
Windows内部为每个窗口保存一个“绘图信息结构”,这个结构包含了包围无效区域的最小矩形的坐标以及其它信息,这个矩形称为“无效矩形”。
说明:
如果在窗口过程处理WM_PAINT消息之前客户区中的另一个新的区域变为无效,则Windows计算出一个包围两个区域的新的无效区域,并将这种变化后的信息放在绘制信息结构中。
Windows不会将多个WM_PAINT消息都放在消息队列中。
3GetUpdateRect函数
通过该函数可以在任何时候获取无效矩形的坐标。
4处理WM_PAINT消息
在处理WM_PAINT消息期间,窗口过程在调用了BeginPaint之后,整个客户区即变为有效。
也可通过调用ValidateRect函数使客户区内的任意矩形区域变为有效。
如果这条调用具有令整个无效区域变为有效的效果,则当前队列中的任意WM_PAINT消息都将被删除。
二GDI简介
⒈TextOut函数
BOOLTextOut(
HDChdc,//handletodevicecontext
intnXStart,//x-coordinateofstartingposition
intnYStart,//y-coordinateofstartingposition
LPCTSTRlpString,//pointertostring
intcbString//numberofcharactersinstring
);
注意:
参数nXStart,nYStart为逻辑坐标;
参数lpString不能显示任何ASCII控制字符,也不能识别作为串尾标志的内容为零的字节;
⒉设备描述表
设备描述表(简称DC)实际上是GDI内部保存的数据结构。
设备描述表与特定的显示设备相关。
设备描述表中的有些值是图形化的“属性”,这些属性定义了一些GDI绘图函数工作情况的特殊内容。
例如,对于TextOut,设备描述表的属性确定了文本的颜色、文本的背景色、TextOut函数的x坐标和y坐标映射到窗口的客户区的方式,以及显示文本时,Windows使用的字体。
当程序需要绘图时,它必须先获取设备描述表句柄。
在获取了该句柄后,Windows用默认的属性值填充内部设备描述表结构。
这些属性值可以在程序中被GDI函数修改,也可被得到。
当程序在客户区绘图完毕后,它必须释放设备描述表句柄。
除了用CreateDC创建的设备描述表之外,程序不能在两个消息之间保存其他设备描述表句柄。
⒊获取设备描述表句柄:
方法一
PAINTSTRUCTps;
HDChdc;
…………
caseWM_PAINT:
hdc=BeginPaint(hwnd,&
ps);
………
EndPaint(hwnd,&
return0;
错误过程:
caseWM_PAINT:
将导致死循环。
⒋绘图信息结构
typedefstructtagPAINTSTRUCT{
HDChdc;
BOOLfErase;
RECTrcPaint;
BOOLfRestore;
BOOLfIncUpdate;
BYTErgbReserved[16];
}PAINTSTRUCT;
在程序调用BeginPaint时,Windows填充该结构的各个字段。
用户程序只使用前三个字段,其他字段由Windows内部使用。
hdc指明用来绘制的设备描述表;
fErase指明背景是否被重新绘制,FALSE绘制,TRUE不绘制;
rcPaint指明重新绘制的矩形区域,即无效区域。
⒌InvalidateRect函数
BOOLInvalidateRect(
HWNDhWnd,//handleofwindowwithchangedupdateregion
CONSTRECT*lpRect,
//addressofrectanglecoordinates
BOOLbErase//erase-backgroundflag
例如,InvalidateRect(hwnd,NULL,TRUE);
它使整个客户区变为无效,并擦除背景。
⒍获取设备描述表句柄:
方法二
hdc=GetDC(hwnd);
ReleaseDC(hwnd,hdc);
与从BeginPaint返回设备描述表句柄不同,GetDC返回的设备描述表句柄具有一个剪取矩形,它等于整个客户区。
可以在客户区的某一部分绘图,而不只是在无效矩形上绘图。
与BegingPaint不同,GetDC不会使任何无效区域变为有效。
⒎ValidateRect函数
BOOLValidateRect(
HWNDhWnd,//handleofwindow
CONSTRECT*lpRect
//addressofvalidationrectanglecoordinates
例如,ValidateRect(hwnd,NULL);
它使整个客户区变为有效。
⒏GetWindowDC函数
HDCGetWindowDC(
HWNDhWnd//handleofwindow
用来获得整个窗口的设备描述表。
而GetDC用来获得客户区的设备描述表。
⒐系统字体
系统字体为Windows98下的字体,作为TextOut函数使用的默认字体,该字体为变宽字体(variable-pitch),也是点阵字体。
⒑字符大小
1TEXTMETRIC
typedefstructtagTEXTMETRIC{//tm
LONGtmHeight;
LONGtmAscent;
LONGtmDescent;
LONGtmInternalLeading;
LONGtmExternalLeading;
LONGtmAveCharWidth;
LONGtmMaxCharWidth;
LONGtmWeight;
LONGtmOverhang;
LONGtmDigitizedAspectX;
LONGtmDigitizedAspectY;
BCHARtmFirstChar;
BCHARtmLastChar;
BCHARtmDefaultChar;
BCHARtmBreakChar;
BYTEtmItalic;
BYTEtmUnderlined;
BYTEtmStruckOut;
BYTEtmPitchAndFamily;
BYTEtmCharSet;
}TEXTMETRIC;
tmHeight字符的高度;
tmAscent字符的重音高度
tmDescent字符的下降高度
tmInternalLeading字符的内部间距
tmExternalLeading字符的外部间距
tmAveCharWidth字符的小写平均宽度
tmMaxCharWidth字符的最大宽度
tmWeight字符的宽度
②GetTextMetrics函数
BOOLGetTextMetrics(
LPTEXTMETRIClptm//pointertotextmetricsstructure
例如:
TEXTMETRICtm;
………
GetTextMetrics(hdc,&
tm);
⒒格式化文本
1WM_CREATE时使用GetTextMetrics函数
StaticcxChar,cyChar;
caseWM_CREATE:
hdc=GetDC(hwnd);
GetTextMetrics(hdc,&
cxChar=tm.tmAveCharWidth;
cyChar=tm.tmHeight+tm.tmExternalLeading;
ReleaseDC(hwnd,hdc);
2使用wsprintf来格式化文本
intiLength;
TCHARszBuffer[40];
iLength=wsprintf(szBuffer,TEXT(“Thesumof%iand%iis%i”),iA,iB,iA+iB);
TextOut(hdc,x,y,szBuffer,iLength);
⒓综合应用
1SYSMETS.H
#defineNUMLINES((int)(sizeofsysmetrics/sizeofsysmetrics[0]))
struct
{
intiIndex;
TCHAR*szLabel;
TCHAR*szDesc;
}
sysmetrics[]=
SM_CXSCREEN,TEXT("
SM_CXSCREEN"
),
TEXT("
Screenwidthinpixels"
),
SM_CYSCREEN,TEXT("
SM_CYSCREEN"
Screenheightinpixels"
SM_CXVSCROLL,TEXT("
SM_CXVSCROLL"
Verticalscrollwidth"
SM_CYHSCROLL,TEXT("
SM_CYHSCROLL"
Horizontalscrollheight"
SM_CYCAPTION,TEXT("
SM_CYCAPTION"
Captionbarheight"
SM_CXBORDER,TEXT("
SM_CXBORDER"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows Api教案2 Api 教案