RedrawWindow()函数

RedrawWindow

RedrawWindow
说明
根据fuRedraw 旗标的设置,重画全部或部分窗口
SDK中的函数原型
BOOL RedrawWindow(HWND hwnd,CONST RECT* lprcUpdate,HRGN hrgnUpdate,UINT fuRedraw );
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,要重画的窗口的句柄。零表示更新 桌面窗口
lprcUpdate RECT,窗口中需要重画的一个矩形区域
hrgnUpdate Long,一个“区”的句柄,这个区描述了要重画的窗口区域。“区”:Region
fuRedraw Long,规定具体重画操作的 旗标。下列常数可组合使用,从而进行复杂的重画行动
RDW_ERASE 重画前,先清除重画区域的背景。也必须指定RDW_INVALIDATE
RDW_FRAME 如非客户区包含在重画区域中,则对非客户区进行更新。也必须指定RDW_INVALIDATE
RDW_INTERNALPAINT 即使窗口并非无效,也向其投递一条WM_PAINT消息
RDW_INVALIDATE 禁用(屏蔽)重画区域
RDW_NOERASE 禁止删除重画区域的背景
RDW_NOFRAME 禁止非客户区域重画(如果它是重画区域的一部分)。也必须指定RDW_VALIDATE
RDW_NOINTERNALPAINT 禁止内部生成或由这个函数生成的任何待决WM_PAINT消息。针对无效区域,仍会生成WM_PAINT消息
RDW_VALIDATE 检验重画区域
RDW_ERASENOW 立即删除指定的重画区域
RDW_UPDATENOW 立即更新指定的重画区域
RDW_ALLCHILDREN 重画操作包括子窗口(前提是它们存在于重画区域)
RDW_NOCHILDREN 重画操作排除子窗口(前提是它们存在于重画区域)
注解
如针对 桌面窗口应用这个函数,则应用程序必须用RDW_ERASE 旗标重画桌面
oid TerminateAnimation(){ KillTimer(g_hWnd, 1234); SetWindowText(g_hWnd, L"玻璃棋子的移动 - 棋子尚未被选中"); g_iChessSelected = 0; g_iAnimate = 0; g_xChess = g_xDes; g_yChess = g_yDes;}//---------------------------------------------------------------------------------------------------------------------------------------------------------/* 【函数编写】 当用户选中棋子后在棋盘上单击鼠标左键时,程序就启动了定时器,此后每隔10毫秒本函数就被执行一次。本函数的功能是,实现玻璃棋子的移动动画。 棋子原来的坐标是(g_xChess, g_yChess); 用户单击左键的坐标(即棋子的移动目的地)是(g_xDes, g_yDes); 棋子在移动过程中的临时坐标(即本函数上一次执行时赋予棋子的坐标)是(g_xPrev, g_yPrev)。 以上6个数据都是int型全局变量。 程序启动定时器时(既用户按下鼠标左键时),已将g_xPrev = g_xChess和g_yPrev = g_yChess。 你要做的是,在函数中用汉字占位的地方编写代码,利用这6个变量计算棋子的新g_xPrev和g_yPrev并更新这两个变量,因为最后那条RedrawWindow()将使用新的g_xPrev和g_yPrev重绘窗口一次。 另外,你需要将TerminateAnimation();复制粘贴到你的代码中合适的地方,以便在棋子移动到位时结束动画。*///---------------------------------------------------------------------------------------------------------------------------------------------------------void HandleTimer(HWND hwnd){ RedrawWindow(hwnd,NULL, NULL, RDW_INVALIDATE);}
最新发布
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值