Win32k: update.c 文件参考
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
/* @license-end */
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','搜索');
$(document).ready(function() { init_search(); });
});
/* @license-end */
class="ui-resizable-handle">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('a00896.html',''); initResizable(); });
/* @license-end */
οnmοuseοver="return searchBox.OnSearchSelectShow()"
οnmοuseοut="return searchBox.OnSearchSelectHide()"
οnkeydοwn="return searchBox.OnSearchSelectKey(event)">
name="MSearchResults" id="MSearchResults">
浏览源代码.
函数 |
BOOL | xxxInvalidateRect (PWND pwnd, LPRECT lprcInvalid, BOOL fErase) |
|
BOOL | xxxValidateRect (PWND pwnd, LPRECT lprcValid) |
|
BOOL | xxxInvalidateRgn (PWND pwnd, HRGN hrgnInvalid, BOOL fErase) |
|
BOOL | xxxValidateRgn (PWND pwnd, HRGN hrgnValid) |
|
UINT | SmartRectInRegion (HRGN hrgn, LPRECT lprc) |
|
VOID | PixieHack (PWND pwnd, LPRECT prcBounds) |
|
BOOL | xxxRedrawWindow (PWND pwnd, LPRECT lprcUpdate, HRGN hrgnUpdate, DWORD flags) |
|
BOOL | InternalInvalidate2 (PWND pwnd, HRGN hrgn, HRGN hrgnSubtract, LPRECT prcParents, DWORD flags) |
|
VOID | InternalInvalidate3 (PWND pwnd, HRGN hrgn, DWORD flags) |
|
BOOL | ValidateParents (PWND pwnd, BOOL fRecurse) |
|
BOOL | xxxUpdateWindow2 (PWND pwnd, DWORD flags) |
|
BOOL | xxxInternalUpdateWindow (PWND pwnd, DWORD flags) |
|
VOID | xxxInternalInvalidate (PWND pwnd, HRGN hrgnUpdate, DWORD flags) |
|
BOOL | xxxUpdateWindow (PWND pwnd) |
|
int | _ExcludeUpdateRgn (HDC hdc, PWND pwnd) |
|
BOOL | xxxGetUpdateRect (PWND pwnd, LPRECT lprc, BOOL fErase) |
|
int | xxxGetUpdateRgn (PWND pwnd, HRGN hrgn, BOOL fErase) |
|
BOOL | IntersectWithParents (PWND pwnd, LPRECT lprc) |
|
◆ RDW_IGNOREUPDATEDIRTY
#define RDW_IGNOREUPDATEDIRTY 0x8000 |
◆ RECTINREGION_BUG
◆ RIR_INSIDE
◆ RIR_INTERSECT
◆ RIR_OUTSIDE
◆ UW_ENUMCHILDREN
#define UW_ENUMCHILDREN 0x0001 |
◆ UW_RECURSED
#define UW_RECURSED 0x0004 |
◆ _ExcludeUpdateRgn()
int _ExcludeUpdateRgn | ( | HDC | hdc, |
| | PWND | pwnd |
| ) | | |
在文件 update.c 第 1398 行定义.
1411
return GreGetClipBox(hdc, &rc, FALSE);
1415
return GreIntersectClipRect(hdc, 0, 0, 0, 0);
1423 GreGetDCOrg(hdc, &pt);
1424
if (GreGetRandomRgn(hdc,
hrgnInv1, 1) != 1) {
1437 GreOffsetRgn(
hrgnInv1, pt.x, pt.y);
1445 GreOffsetRgn(
hrgnInv1, -pt.x, -pt.y);
1447
return GreExtSelectClipRgn(hdc,
hrgnInv1, RGN_COPY);
引用了 gpDispInfo, hrgnInv1, tagWND::hrgnUpdate , 以及 tagDISPLAYINFO::rcScreen.
被这些函数引用 NtUserExcludeUpdateRgn() , 以及 UT_InvertCaret().
◆ InternalInvalidate2()
BOOL InternalInvalidate2 | ( | PWND | pwnd, |
| | HRGN | hrgn, |
| | HRGN | hrgnSubtract, |
| | LPRECT | prcParents, |
| | DWORD | flags |
| ) | | |
在文件 update.c 第 369 行定义.
390 flags |= RDW_HASWINDOWRGN;
407 flagsChildren = flags | RDW_SUBTRACTSELF;
410
if (flags & RDW_INVALIDATE) {
426
if (!TestWF(pwnd, WFWIN31COMPAT) && (hrgn == MAXREGION)) {
433 flags &= ~RDW_SUBTRACTSELF;
434 flagsChildren &= ~RDW_SUBTRACTSELF;
445
if (hrgn > MAXREGION) {
471
if (flags & RDW_HASWINDOWRGN) {
485
for (pwndT = pwnd; pwndT != NULL; pwndT = pwndT->
spwndParent) {
527
if (!TestWF(pwnd, WFCLIPCHILDREN))
533
if (TestWF(pwnd, WFALWAYSSENDNCPAINT))
543 !TestWF(pwnd, WFMINIMIZED) &&
544 !(flags & RDW_NOCHILDREN) &&
545 ((flags & RDW_ALLCHILDREN) || !TestWF(pwnd, WFCLIPCHILDREN))) {
547 RECT rcChildrenShare;
555
if (flags & (RDW_INVALIDATE))
556 flagsChildren |= RDW_ERASE | RDW_FRAME;
563 (!TestWF(pwnd, WFWIN31COMPAT) && (hrgn == MAXREGION))) {
565
for (pwndChild = pwnd->
spwndChild; pwndChild != NULL;
568
if (!TestWF(pwndChild, WFVISIBLE))
582
if (!(flags & (RDW_INTERNALPAINT | RDW_NOINTERNALPAINT)))
593 flags &= ~(RDW_INVALIDATE |
600 flagsChildren &= ~(RDW_INVALIDATE |
616
if (TestWF(pwnd, WFCLIPCHILDREN))
626
if (flags & RDW_SUBTRACTSELF) {
655
if (!TestWF(pwnd, WEFTRANSPARENT) &&
656 TestWF(pwnd, WFCLIPSIBLINGS) &&
657 ((flags & RDW_VALIDATE) ||
680
if (flags & RDW_HASWINDOWRGN) {
688
for (pwndT = pwnd; pwndT != NULL; pwndT = pwndT->
spwndParent) {
707
if (SubtractRgn(hrgnSubtract, hrgnSubtract,
hrgnInv2) == NULLREGION)
713 iRet = SubtractRgn(hrgnSubtract, hrgnSubtract,
hrgnInv2);
715
if (iRet == NULLREGION)
718
if (iRet == SIMPLEREGION) {
720 GreGetRgnBox(hrgnSubtract, &rcSub);
721
if (rcSub.left > rcSub.right)
引用了 DWORD, GetAppCompatFlags(), tagWND::hrgnClip, hrgnInv2, InternalInvalidate3(), IntersectRect(), PixieHack(), tagWND::rcClient, tagWND::rcWindow, RIR_INSIDE, RIR_INTERSECT, RIR_OUTSIDE, SmartRectInRegion(), tagWND::spwndChild, tagWND::spwndNext , 以及 tagWND::spwndParent.
被这些函数引用 ValidateParents() , 以及 xxxInternalInvalidate().
◆ InternalInvalidate3()
VOID InternalInvalidate3 | ( | PWND | pwnd, |
| | HRGN | hrgn, |
| | DWORD | flags |
| ) | | |
在文件 update.c 第 743 行定义.
750 fNeededPaint = NEEDSPAINT(pwnd);
752
if (flags & (RDW_INVALIDATE | RDW_INTERNALPAINT | RDW_ERASE | RDW_FRAME)) {
754
if (flags & RDW_INTERNALPAINT)
755 SetWF(pwnd, WFINTERNALPAINT);
757
if (flags & RDW_INVALIDATE) {
763 ClrWF(pwnd, WFNONCPAINT);
775 SetWF(pwnd, WFUPDATEDIRTY);
780
if (TestWF(pwnd, WFWMPAINTSENT)) {
781 SetWF(pwnd, WFDONTVALIDATE);
794
if ((hrgn == MAXREGION) && !TestWF(pwnd, WFWIN31COMPAT))
795 ClrWF(pwnd, WFSENDERASEBKGND);
797
if (flags & RDW_ERASE)
798 SetWF(pwnd, WFSENDERASEBKGND);
800
if ((flags & (RDW_FRAME | RDW_ERASE)) && !TestWF(pwnd, WEFTRANSPARENT))
803
if (flags & RDW_FRAME)
804 SetWF(pwnd, WFSENDNCPAINT);
812
if (hrgn == MAXREGION) {
823
if (!(pwnd->
hrgnUpdate = GreCreateRectRgn(0, 0, 0, 0)))
826
if (CopyRgn(pwnd->
hrgnUpdate, hrgn) == ERROR)
839 GreSetRegionOwner(pwnd->
hrgnUpdate, OBJECT_OWNER_PUBLIC);
844
if (!fNeededPaint && NEEDSPAINT(pwnd))
847 }
else
if (flags & (RDW_VALIDATE | RDW_NOINTERNALPAINT | RDW_NOERASE | RDW_NOFRAME)) {
866
if (flags & RDW_NOINTERNALPAINT)
867 ClrWF(pwnd, WFINTERNALPAINT);
869
if (flags & RDW_VALIDATE) {
871
if (flags & RDW_NOERASE)
872 ClrWF(pwnd, WFSENDERASEBKGND);
874
if (flags & RDW_NOFRAME) {
875 ClrWF(pwnd, WFSENDNCPAINT);
876 ClrWF(pwnd, WFPIXIEHACK);
879
if (flags & (RDW_NOERASE | RDW_NOFRAME))
890
if (TestWF(pwnd, WFSENDNCPAINT) && (hrgn == MAXREGION)) {
895
if (hrgn == MAXREGION) {
910 ClrWF(pwnd, WFSENDERASEBKGND);
926 pwnd->
hrgnUpdate = GreCreateRectRgn(0, 0, 0, 0);
935 GreSetRegionOwner(pwnd->
hrgnUpdate, OBJECT_OWNER_PUBLIC);
939 !(TestWF(pwnd, WFSENDNCPAINT))) == ERROR) {
963
if (fNeededPaint && !NEEDSPAINT(pwnd))
引用了 CalcWindowRgn(), ClearHungFlag(), DecPaintCount(), hrgnInv2, tagWND::hrgnUpdate, IncPaintCount(), PtiCurrent(), RDW_IGNOREUPDATEDIRTY , 以及 SetHungFlag().
被这些函数引用 _EndPaint() , 以及 InternalInvalidate2().
◆ IntersectWithParents()
BOOL IntersectWithParents | ( | PWND | pwnd, |
| | LPRECT | lprc |
| ) | | |
◆ PixieHack()
VOID PixieHack | ( | PWND | pwnd, |
| | LPRECT | prcBounds |
| ) | | |
在文件 update.c 第 243 行定义.
254 TestWF(pwnd, WFCLIPCHILDREN) &&
255 !TestWF(pwnd, WFMINIMIZED)) {
266
if (!TestWF(pwnd, WFSENDNCPAINT) &&
267 (TestWF(pwnd, WFBORDERMASK) == LOBYTE(WFCAPTION)) &&
275 SetWF(pwnd, WFSENDNCPAINT);
280 SetWF(pwnd, WFPIXIEHACK);
引用了 _GetDesktopWindow(), IntersectRect(), tagWND::rcWindow, tagWND::spwndChild , 以及 tagWND::spwndNext.
被这些函数引用 InternalInvalidate2().
◆ SmartRectInRegion()
UINT SmartRectInRegion | ( | HRGN | hrgn, |
| | LPRECT | lprc |
| ) | | |
◆ ValidateParents()
BOOL ValidateParents | ( | PWND | pwnd, |
| | BOOL | fRecurse |
| ) | | |
在文件 update.c 第 984 行定义.
990
PWND pwndParent = pwnd;
998
while (TestWF(pwndParent, WFCHILD))
1001
if (!TestWF(pwndParent, WFSYNCPAINTPENDING))
1006
while ((pwndParent = pwndParent->
spwndParent) != NULL) {
1011
if (TestWF(pwndParent, WFCLIPCHILDREN))
1033 GreSetRectRgn(
hrgnInv1, rc.left, rc.top, rc.right, rc.bottom);
引用了 tagWND::hrgnClip, hrgnInv1, tagWND::hrgnUpdate, InternalInvalidate2(), IntersectWithParents(), tagWND::rcWindow, RDW_IGNOREUPDATEDIRTY , 以及 tagWND::spwndParent.
被这些函数引用 xxxUpdateWindow2().
◆ xxxGetUpdateRect()
BOOL xxxGetUpdateRect | ( | PWND | pwnd, |
| | LPRECT | lprc, |
| | BOOL | fErase |
| ) | | |
在文件 update.c 第 1467 行定义.
1483 ClrWF(pwnd, WFUPDATEDIRTY);
1487
if (HIWORD(lprc) != 0)
1514
switch (GreGetRgnBox(pwnd->
hrgnUpdate, &rc)) {
1541
if (TestCF(pwnd, CFOWNDC) &&
1542 (TestWF(pwnd, WFWIN31COMPAT) || pwnd->
hrgnUpdate != MAXREGION)) {
1552
if (pdce->
pwndOrg == pwnd && !(pdce->
flags & DCX_CACHE)) {
1553 GreDPtoLP(pdce->
hdc, (LPPOINT)&rc, 2);
1564
if (HIWORD(lprc) != 0)
1583 SetWF(pwnd, WFSTARTPAINT);
引用了 CheckLock(), tagDCE::flags, gfDraggingFullWindow, gpDispInfo, tagDCE::hdc, tagWND::hrgnUpdate, IntersectRect(), IntersectWithParents(), OffsetRect(), tagDISPLAYINFO::pdceFirst, tagDCE::pdceNext, tagDCE::pwndOrg, tagWND::rcClient, SetRectEmpty() , 以及 xxxSimpleDoSyncPaint().
被这些函数引用 NtUserGetUpdateRect().
◆ xxxGetUpdateRgn()
int xxxGetUpdateRgn | ( | PWND | pwnd, |
| | HRGN | hrgn, |
| | BOOL | fErase |
| ) | | |
在文件 update.c 第 1598 行定义.
1615 ClrWF(pwnd, WFUPDATEDIRTY);
1622 GreSetRectRgn(hrgn, 0, 0, 0, 0);
1641 code = SIMPLEREGION;
1648 GreSetRectRgn(hrgn, rc.left, rc.top, rc.right, rc.bottom);
1652 GreSetRectRgn(
hrgnInv2, rc.left, rc.top, rc.right, rc.bottom);
1681 SetWF(pwnd, WFSTARTPAINT);
引用了 CheckLock(), gfDraggingFullWindow, hrgnInv2, tagWND::hrgnUpdate, IntersectWithParents(), OffsetRect(), tagWND::rcClient , 以及 xxxSimpleDoSyncPaint().
被这些函数引用 NtUserGetUpdateRgn().
◆ xxxInternalInvalidate()
VOID xxxInternalInvalidate | ( | PWND | pwnd, |
| | HRGN | hrgnUpdate, |
| | DWORD | flags |
| ) | | |
在文件 update.c 第 1257 行定义.
1266
if (flags & (RDW_ERASENOW | RDW_UPDATENOW))
1276
if (flags & (RDW_VALIDATE | RDW_INVALIDATE)) {
1278 hrgnSubtract = hrgnUpdate;
1280
if (hrgnSubtract == MAXREGION) {
1285 (flags & RDW_FRAME) ? FALSE : TRUE);
1311 GreSetRectRgn(hrgnSubtract, 0, 0, 0, 0);
1322
if ((flags & RDW_INVALIDATE) && (flags & RDW_REDRAWWINDOW) && AnySpbs()) {
1329 GreGetRgnBox(hrgnSubtract, &rcInvalid);
1344
if (flags & RDW_UPDATENOW) {
1349 }
else
if (flags & RDW_ERASENOW) {
1351
UINT flagsDSP = DSP_ENUMCLIPPEDCHILDREN;
1353
if (flags & RDW_ALLCHILDREN)
1354 flagsDSP = DSP_ALLCHILDREN;
1356
if (flags & RDW_NOCHILDREN)
引用了 CalcWindowRgn(), CheckLock(), hrgnInv1, InternalInvalidate2(), IntersectRect(), IntersectWithParents(), tagWND::rcClient, tagWND::rcWindow, SpbCheckRect(), UINT(), UW_ENUMCHILDREN, xxxDoSyncPaint() , 以及 xxxInternalUpdateWindow().
被这些函数引用 BltValidBits(), SpbTransfer(), UserChangeDisplaySettings(), UserRedrawDesktop(), xxxRedrawWindow(), xxxScrollWindowEx() , 以及 xxxSystemParametersInfo().
◆ xxxInternalUpdateWindow()
BOOL xxxInternalUpdateWindow | ( | PWND | pwnd, |
| | DWORD | flags |
| ) | | |
◆ xxxInvalidateRect()
BOOL xxxInvalidateRect | ( | PWND | pwnd, |
| | LPRECT | lprcInvalid, |
| | BOOL | fErase |
| ) | | |
◆ xxxInvalidateRgn()
BOOL xxxInvalidateRgn | ( | PWND | pwnd, |
| | HRGN | hrgnInvalid, |
| | BOOL | fErase |
| ) | | |
◆ xxxRedrawWindow()
BOOL xxxRedrawWindow | ( | PWND | pwnd, |
| | LPRECT | lprcUpdate, |
| | HRGN | hrgnUpdate, |
| | DWORD | flags |
| ) | | |
在文件 update.c 第 302 行定义.
319 HRGN hrgn = hrgnUpdate;
321
if (flags & (RDW_VALIDATE | RDW_INVALIDATE)) {
327
if (HIWORD(lprcUpdate) != 0) {
332 lprcUpdate->left + pwnd->
rcClient.left,
333 lprcUpdate->top + pwnd->
rcClient.top,
334 lprcUpdate->right + pwnd->
rcClient.left,
335 lprcUpdate->bottom + pwnd->
rcClient.top);
344
if (hrgn != MAXREGION) {
355 ThreadUnlock(&tlpwnd);
引用了 CheckLock(), hrgnInv0, IsVisible(), tagDESKTOP::pDeskInfo, PtiCurrent(), tagWND::rcClient, tagTHREADINFO::rpdesk, tagDESKTOPINFO::spwnd, ThreadLock() , 以及 xxxInternalInvalidate().
被这些函数引用 NtUserRedrawWindow(), UserResetDisplayDevice(), xxxDesktopWndProc(), xxxDrawWallpaper(), xxxInvalidateIconicWindows(), xxxInvalidateRect(), xxxInvalidateRgn(), xxxMakeWindowForegroundWithState(), xxxScrollWindowEx(), xxxSetWindowPos(), xxxValidateRect() , 以及 xxxValidateRgn().
◆ xxxUpdateWindow()
BOOL xxxUpdateWindow | ( | PWND | pwnd | ) | |
◆ xxxUpdateWindow2()
BOOL xxxUpdateWindow2 | ( | PWND | pwnd, |
| | DWORD | flags |
| ) | | |
在文件 update.c 第 1082 行定义.
1090
if (NEEDSPAINT(pwnd)) {
1105
if (TestWF(pwnd, WFINTERNALPAINT)) {
1107 ClrWF(pwnd, WFINTERNALPAINT);
1121 SetWF(pwnd, WFPAINTNOTPROCESSED);
1128 ClrWF(pwnd, WFUPDATEDIRTY);
1136
if (!TestWF(pwnd, WFWIN40COMPAT) &&
1137 TestWF(pwnd, WFMINIMIZED) &&
1138 (pwnd->
pcls->spicn != NULL)) {
1151
if (TestWF(pwnd, WFPAINTNOTPROCESSED)) {
1154
"App didn't call BeginPaint() or GetUpdateRect/Rgn(fErase == TRUE) in WM_PAINT");
1175
while (pwnd != NULL) {
1181
if (TestWF(pwnd, WEFTRANSPARENT) && NEEDSPAINT(pwnd)) {
1185
while ((pwndT = pwndT->
spwndNext) != NULL) {
1186
if (NEEDSPAINT(pwndT))
1189
if (pwndT != NULL) {
1195 ThreadLockAlways(pwnd, &tlpwnd);
1200 ThreadUnlock(&tlpwnd);
引用了 CheckLock(), DecPaintCount(), tagWND::hrgnUpdate, tagWND::pcls, RIP_VERBOSE, RIPMSG0, tagWND::spwndChild, tagWND::spwndNext, UW_ENUMCHILDREN, UW_RECURSED, ValidateParents(), xxxSendMessage() , 以及 xxxSimpleDoSyncPaint().
被这些函数引用 xxxInternalUpdateWindow().
◆ xxxValidateRect()
BOOL xxxValidateRect | ( | PWND | pwnd, |
| | LPRECT | lprcValid |
| ) | | |
◆ xxxValidateRgn()
BOOL xxxValidateRgn | ( | PWND | pwnd, |
| | HRGN | hrgnValid |
| ) | | |
#define RIPMSG0(flags, szFmt)
BOOL xxxUpdateWindow2(PWND pwnd, DWORD flags)
BOOL IntersectWithParents(PWND pwnd, LPRECT lprc)
#define RDW_IGNOREUPDATEDIRTY
BOOL xxxRedrawWindow(PWND pwnd, LPRECT lprcUpdate, HRGN hrgnUpdate, DWORD flags)
UINT SmartRectInRegion(HRGN hrgn, LPRECT lprc)
int CalcWindowRgn(PWND pwnd, HRGN hrgn, BOOL fClient)
VOID DecPaintCount(PWND pwnd)
LONG xxxSendMessage(PWND pwnd, UINT message, DWORD wParam, LONG lParam)
PTHREADINFO PtiCurrent(VOID)
struct tagWND * spwndNext
VOID ClearHungFlag(PWND pwnd, WORD wFlag)
BOOL APIENTRY OffsetRect(LPRECT prc, int cx, int cy)
VOID ThreadLock(PVOID pobj, PTL ptl)
VOID xxxDoSyncPaint(PWND pwnd, DWORD flags)
BOOL APIENTRY IntersectRect(LPRECT prcDst, CONST RECT *prcSrc1, CONST RECT *prcSrc2)
ddeml v[i< inst >][t< type >][hObj|pObj] Dump DDEML state information ddeml lists all ddeml instances for this process n ddeml t< type > lists all ddeml objects of the given type n n assumes link is first DWORD
struct tagWND * spwndParent
BOOL xxxInternalUpdateWindow(PWND pwnd, DWORD flags)
BOOL InternalInvalidate2(PWND pwnd, HRGN hrgn, HRGN hrgnSubtract, LPRECT prcParents, DWORD flags)
BOOL gfDraggingFullWindow
VOID IncPaintCount(PWND pwnd)
BOOL APIENTRY EqualRect(CONST RECT *prc1, CONST RECT *prc2)
VOID SpbCheckRect(PWND pwnd, LPRECT lprc, DWORD flags)
VOID xxxInternalInvalidate(PWND pwnd, HRGN hrgnUpdate, DWORD flags)
VOID PixieHack(PWND pwnd, LPRECT prcBounds)
VOID xxxSimpleDoSyncPaint(PWND pwnd)
typedef UINT(FAR WINAPI *MSGSOUNDPROC)()
VOID CheckLock(PVOID pobj)
struct tagWND * spwndChild
BOOL ValidateParents(PWND pwnd, BOOL fRecurse)
BOOL APIENTRY SetRectEmpty(LPRECT prc)
DWORD GetAppCompatFlags(PTHREADINFO pti)
PWND _GetDesktopWindow(void)
VOID InternalInvalidate3(PWND pwnd, HRGN hrgn, DWORD flags)
BOOL IsVisible(PWND pwnd)
VOID SetHungFlag(PWND pwnd, WORD wFlag)
一键复制
编辑
Web IDE
原始数据
按行查看
历史