WINDOWS窗口的客户区域拖动技术及其应用
http://tech.ddvip.com 2006年03月31日 社区交流
本文详细介绍WINDOWS窗口的客户区域拖动技术及其应用
二、WINDOWS高级窗口拖动方案中拖动框的客户定制方法
以上介绍了窗口拖动前鼠标光标位置检测及客户命令区域内拖动功能的鼠标光标动态提示方法,当用户通过鼠标光标动态提示功能取得满足拖动窗口条件时,通过点击鼠标左键来启动拖动方案,这时最关键的技术问题是鼠标拖动窗口移动过程中的拖动框显示与擦除功能实现。窗口拖动虚框就是在WINDOWS 整个屏幕区域内显示描述被拖动窗口大小的线框,它的大小需要根据被拖动窗口的矩形区域大小和实际需要来具体确定,一般情况下为被拖动窗口的矩形区域大小。
WINDOWS 系统中的绘图方法是通过显示设备描述表实现的,绘图操作需要占用一定的GDI 资源,系统为窗口、菜单、对话框、字体和各种绘图函数分配足够的GDI资源,WINDOWS 95中的GDI资源要比WINDOWS3.X中的GDI资源大得多。WINDOWS中有两种使用显示设备描述符表的方法:更新窗口显示客户区域和直接操作窗口显示客户区域。更新窗口显示客户区域是直接针对应用程序窗口矩形区域而言的,在窗口函数响应WM_PAINT消息时利用图形操作命令进行窗口更新处理:
InvalidateRect(hWnd,&WinRECT,TRUE);//WinRECT为要更新区域
UpdateWindow(hWnd);
窗口初始建立时默认更新窗口的全部区域,当要更新的矩形区域为NULL时表示更新窗口所有矩形区域。函数UpdateWindow()通知系统向要更新矩形区域的窗口发送WM_PAINT消息,窗口函数接收到WM_PAINT消息后首先利用BeginPaint()函数取得设备描述符表,然后利用图形命令直接对显示设备进行更新操作,最后利用EndPaint()函数通知系统更新操作结束。其描述性功能代码如下:
case WM_PAINT:
PAINTSTRUCT ps;
hdc=BeginPaint(hWnd,&ps);//取得设备描述符表
SetBkMode(hdc,OPAQUE); //设备更新方式
SetBkColor(hdc,0x00c0c0c0);
//更新矩形区域内图形操作
EndPaint(hWnd,&ps); //结束更新操作
break;
责编:豆豆技术应用