BOOL ScrollDC(
HDC hDC, // handle to DC
int dx, // horizontal scrolling
int dy, // vertical scrolling
CONST RECT *lprcScroll, // scrolling rectangle
CONST RECT *lprcClip, // clipping rectangle
HRGN hrgnUpdate, // handle to scrolling region
LPRECT lprcUpdate // update rectangle
);
昨天在看一本书的时候发现了这个函数,看了半天不知道这些参数是什么意思,实在很费解。上网一查,找到的只是一下MSDN的翻译,不知道是因为这个函数太简单,大家都知道怎么用,还是大家没有用过这个函数。
我来简单的说我下我的理解吧,因为水平有限,希望大家多多指正。
lprcCilp定义一个矩形,我们只能移动这个矩形里的东西,当然可以把里面的东西移动到这个矩形的外面。
lprcScroll定义了我们移动的矩形,当然我们只能移动lprcScroll在lprcClip中的部分。
hrgnUpdate定义的是一个区域,MSDN上写的是【in】,但是我认为它是一个【out】,函数执行后,hrgnUpdate.GetRgnBox(&rc);rc的值和lprcUpdate一模一样。
lprcUpdate定义的是一个矩形区域,他表示的范围是,移动之前占有,但是之后不占有的区域。
看了好像还是云里雾里,举个例子吧。
比如我们在lprcClip(20,20,100,100)里,移动一个lprcSrcoll(30,30,120,120)的矩形,我们移动的是(30,30,100,100),dx=0不移动,dy=20向下移动20,
(30,30,100,80)的图像将会移动到(30,50,100,100),lprcUpdate为(30,30,100,50)