ReactOS 0.4.15-dev-7788-g1ad9096
rosui.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS UI Layout Engine
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * FILE: base/applications/rapps/include/rosui.h
5 * PURPOSE: ATL Layout engine for RAPPS
6 * COPYRIGHT: Copyright 2015 David Quintana (gigaherz@gmail.com)
7 */
8#pragma once
9
10#include <atlwin.h>
11
12template <class T, INT GrowthRate = 10> class CPointerArray
13{
14 protected:
16
17 public:
19 {
20 m_hDpa = DPA_Create(GrowthRate);
21 }
22
24 {
26 }
27
28 private:
29 static INT CALLBACK
31 {
33 return (INT)self->OnRemoveItem(reinterpret_cast<T *>(ptr));
34 }
35
36 static INT CALLBACK
38 {
40 return self->OnCompareItems(reinterpret_cast<T *>(p1), reinterpret_cast<T *>(p2));
41 }
42
43 public:
44 virtual BOOL
46 {
47 return TRUE;
48 }
49
50 virtual INT
51 OnCompareItems(T *p1, T *p2)
52 {
53 INT_PTR t = (reinterpret_cast<INT_PTR>(p2) - reinterpret_cast<INT_PTR>(p1));
54 if (t > 0)
55 return 1;
56 if (t < 0)
57 return -1;
58 return 0;
59 }
60
61 public:
62 INT
63 GetCount() const
64 {
65 return DPA_GetPtrCount(m_hDpa);
66 }
67
68 T *
69 Get(INT i) const
70 {
71 return (T *)DPA_GetPtr(m_hDpa, i);
72 }
73
74 BOOL
76 {
77 return DPA_SetPtr(m_hDpa, i, ptr);
78 }
79
80 INT
82 {
83 return DPA_InsertPtr(m_hDpa, at, ptr);
84 }
85
86 INT
88 {
90 }
91
92 INT
93 IndexOf(T *ptr) const
94 {
95 return DPA_GetPtrIndex(m_hDpa, ptr);
96 }
97
98 BOOL
100 {
101 INT i = IndexOf(ptr);
102 if (i < 0)
103 return FALSE;
104 return RemoveAt(i);
105 }
106
107 BOOL
109 {
111 if (ptr != NULL)
112 {
113 OnRemoveItem(reinterpret_cast<T *>(ptr));
114 return TRUE;
115 }
116 return FALSE;
117 }
118
119 BOOL
121 {
124 }
125
126 BOOL
128 {
129 return DPA_Sort(m_hDpa, s_OnCompareItems, (LPARAM)this);
130 }
131
132 INT
134 {
135 return DPA_Search(m_hDpa, item, 0, s_OnCompareItems, (LPARAM)this, 0);
136 }
137};
138
139class CUiRect : public RECT
140{
141 public:
143 {
144 left = right = top = bottom = 0;
145 }
146
148 {
149 left = l;
150 right = r;
151 top = t;
152 bottom = b;
153 }
154};
155
156class CUiMargin : public CUiRect
157{
158 public:
160 {
161 }
162
163 CUiMargin(INT all) : CUiRect(all, all, all, all)
164 {
165 }
166
167 CUiMargin(INT horz, INT vert) : CUiRect(horz, vert, horz, vert)
168 {
169 }
170};
171
173{
174 public:
176 {
181 };
182
183 private:
186
187 public:
189 {
191 m_Value = 0;
192 }
193
195 {
196 m_Type = type;
197 m_Value = value;
198 }
199
200 INT
202 {
203 switch (m_Type)
204 {
205 case Type_FitContent:
206 return content;
207 case Type_Fixed:
208 return m_Value;
209 case Type_Percent:
210 return max(content, parent * m_Value / 100);
211 case Type_FitParent:
212 return parent;
213 }
214
215 return 0;
216 }
217
218 public:
219 static CUiMeasure
221 {
222 return CUiMeasure(Type_FitContent, 0);
223 }
224
225 static CUiMeasure
227 {
228 return CUiMeasure(Type_FitParent, 0);
229 }
230
231 static CUiMeasure
233 {
235 }
236
237 static CUiMeasure
238 Percent(INT percent)
239 {
240 return CUiMeasure(Type_Percent, percent);
241 }
242};
243
245{
251
253{
254 public:
256
259
260 protected:
262 {
265 }
266
267 virtual VOID
268 ComputeRect(RECT parentRect, RECT currentRect, RECT *newRect)
269 {
270 parentRect.left += m_Margin.left;
271 parentRect.right -= m_Margin.right;
272 parentRect.top += m_Margin.top;
273 parentRect.bottom -= m_Margin.bottom;
274
275 if (parentRect.right < parentRect.left)
276 parentRect.right = parentRect.left;
277
278 if (parentRect.bottom < parentRect.top)
279 parentRect.bottom = parentRect.top;
280
281 SIZE szParent = {parentRect.right - parentRect.left, parentRect.bottom - parentRect.top};
282 SIZE szCurrent = {currentRect.right - currentRect.left, currentRect.bottom - currentRect.top};
283
284 currentRect = parentRect;
285
286 switch (m_HorizontalAlignment)
287 {
288 case UiAlign_LeftTop:
289 currentRect.right = currentRect.left + szCurrent.cx;
290 break;
291 case UiAlign_Middle:
292 currentRect.left = parentRect.left + (szParent.cx - szCurrent.cx) / 2;
293 currentRect.right = currentRect.left + szCurrent.cx;
294 break;
295 case UiAlign_RightBtm:
296 currentRect.left = currentRect.right - szCurrent.cx;
297 break;
298 default:
299 break;
300 }
301
302 switch (m_VerticalAlignment)
303 {
304 case UiAlign_LeftTop:
305 currentRect.bottom = currentRect.top + szCurrent.cy;
306 break;
307 case UiAlign_Middle:
308 currentRect.top = parentRect.top + (szParent.cy - szCurrent.cy) / 2;
309 currentRect.bottom = currentRect.top + szCurrent.cy;
310 break;
311 case UiAlign_RightBtm:
312 currentRect.top = currentRect.bottom - szCurrent.cy;
313 break;
314 default:
315 break;
316 }
317
318 *newRect = currentRect;
319 }
320
321 public:
322 virtual VOID
324 {
325 // Override in subclass
326 size->cx = max(size->cx, 0);
327 size->cy = min(size->cy, 0);
328 };
329
330 virtual VOID
332 // Override in subclass
333 };
334
335 virtual DWORD_PTR
337 {
338 // Override in subclass
339 return 0;
340 };
341
342 virtual HDWP
343 OnParentSize(RECT parentRect, HDWP hDwp)
344 {
345 // Override in subclass
346 return NULL;
347 };
348};
349
351{
352 protected:
354
355 public:
357 {
358 }
359
360 virtual CUiBox *
362 {
363 return NULL;
364 }
365};
366
367class CUiCollection : public CPointerArray<CUiPrimitive>
368{
369 virtual BOOL
371 {
372 delete ptr;
373 return TRUE;
374 }
375};
376
378{
379 protected:
381
382 public:
385 {
386 return m_Children;
387 }
388};
389
390class CUiPanel : public CUiPrimitive, public CUiBox, public CUiContainer
391{
392 public:
395
397 {
400 }
401
402 virtual ~CUiPanel()
403 {
404 }
405
406 virtual CUiBox *
408 {
409 return this;
410 }
411
412 virtual VOID
414 {
415 for (INT i = 0; i < m_Children.GetCount(); i++)
416 {
418 if (box)
419 {
420 box->ComputeMinimalSize(size);
421 }
422 }
423 };
424
425 virtual VOID
427 {
428 for (INT i = 0; i < m_Children.GetCount(); i++)
429 {
431 if (box)
432 {
433 box->ComputeContentBounds(rect);
434 }
435 }
436 };
437
438 virtual DWORD_PTR
440 {
441 INT count = 0;
442 for (INT i = 0; i < m_Children.GetCount(); i++)
443 {
445 if (box)
446 {
447 count += box->CountSizableChildren();
448 }
449 }
450 return count;
451 }
452
453 virtual HDWP
454 OnParentSize(RECT parentRect, HDWP hDwp)
455 {
456 RECT rect = {0};
457
458 SIZE content = {0};
460
461 INT preferredWidth = m_Width.ComputeMeasure(parentRect.right - parentRect.left, content.cx);
462 INT preferredHeight = m_Height.ComputeMeasure(parentRect.bottom - parentRect.top, content.cy);
463
464 rect.right = preferredWidth;
465 rect.bottom = preferredHeight;
466
467 ComputeRect(parentRect, rect, &rect);
468
469 for (INT i = 0; i < m_Children.GetCount(); i++)
470 {
472 if (box)
473 {
474 hDwp = box->OnParentSize(rect, hDwp);
475 }
476 }
477
478 return hDwp;
479 }
480};
481
482template <class T = CWindow> class CUiWindow : public CUiPrimitive, public CUiBox, public T
483{
484 public:
485 virtual CUiBox *
487 {
488 return this;
489 }
490
491 HWND
493 {
494 return T::m_hWnd;
495 }
496
497 virtual VOID
499 {
500 // TODO: Maybe use WM_GETMINMAXINFO?
502 };
503
504 virtual VOID
506 {
507 RECT r;
508 ::GetWindowRect(T::m_hWnd, &r);
509 rect->left = min(rect->left, r.left);
510 rect->top = min(rect->top, r.top);
511 rect->right = max(rect->right, r.right);
512 rect->bottom = max(rect->bottom, r.bottom);
513 };
514
515 virtual DWORD_PTR
517 {
518 return 1;
519 };
520
521 virtual HDWP
522 OnParentSize(RECT parentRect, HDWP hDwp)
523 {
524 RECT rect;
525
526 ::GetWindowRect(T::m_hWnd, &rect);
527
528 ComputeRect(parentRect, rect, &rect);
529
530 if (hDwp)
531 {
532 return ::DeferWindowPos(
533 hDwp, T::m_hWnd, NULL, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,
535 }
536 else
537 {
538 T::SetWindowPos(
539 NULL, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,
541 return NULL;
542 }
543 };
544
545 virtual VOID
547 {
548 TabOrderList.Add(T::m_hWnd);
549 return;
550 }
551
552 virtual ~CUiWindow()
553 {
554 if (T::IsWindow())
555 {
556 T::DestroyWindow();
557 }
558 }
559
560 VOID
561 GetWindowTextW(CStringW &szText)
562 {
563 INT length = CWindow::GetWindowTextLengthW() + 1;
564 CWindow::GetWindowTextW(szText.GetBuffer(length), length);
565 szText.ReleaseBuffer();
566 }
567};
568
569class CUiSplitPanel : public CUiPrimitive, public CUiBox, public CWindowImpl<CUiSplitPanel>
570{
571 static const INT THICKNESS = 4;
572
573 protected:
575
578
580
582
583 public:
589
592
594 {
595 m_hCursor = NULL;
598 m_Pos = 100;
600 m_MinFirst = 100;
601 m_MinSecond = 100;
604 memset(&m_LastRect, 0, sizeof(m_LastRect));
605 }
606
608 {
609 }
610
611 virtual CUiBox *
613 {
614 return this;
615 }
616
619 {
620 return m_First.Children();
621 }
624 {
625 return m_Second.Children();
626 }
627
628 virtual VOID
630 {
631 if (m_Horizontal)
632 size->cx = max(size->cx, THICKNESS);
633 else
634 size->cy = max(size->cy, THICKNESS);
637 };
638
639 virtual VOID
641 {
642 RECT r;
643
646
647 ::GetWindowRect(m_hWnd, &r);
648
649 rect->left = min(rect->left, r.left);
650 rect->top = min(rect->top, r.top);
651 rect->right = max(rect->right, r.right);
652 rect->bottom = max(rect->bottom, r.bottom);
653 };
654
655 virtual DWORD_PTR
657 {
658 INT count = 1;
661 return count;
662 };
663
664 virtual HDWP
665 OnParentSize(RECT parentRect, HDWP hDwp)
666 {
667 RECT rect = {0};
668
669 SIZE content = {0};
671
672 INT preferredWidth = m_Width.ComputeMeasure(parentRect.right - parentRect.left, content.cx);
673 INT preferredHeight = m_Width.ComputeMeasure(parentRect.bottom - parentRect.top, content.cy);
674
675 rect.right = preferredWidth;
676 rect.bottom = preferredHeight;
677
678 ComputeRect(parentRect, rect, &rect);
679
680 SIZE growth = {0};
681 if (m_HasOldRect)
682 {
683 RECT oldRect = m_LastRect;
684
685 growth.cx = (parentRect.right - parentRect.left) - (oldRect.right - oldRect.left);
686 growth.cy = (parentRect.bottom - parentRect.top) - (oldRect.bottom - oldRect.top);
687 }
688
689 RECT splitter = rect;
690 RECT first = rect;
691 RECT second = rect;
692
693 if (m_Horizontal)
694 {
695 rect.top += m_MinFirst;
696 rect.bottom -= THICKNESS + m_MinSecond;
697 if (m_DynamicFirst)
698 {
699 if (growth.cy > 0)
700 {
701 m_Pos += min(growth.cy, rect.bottom - (m_Pos + THICKNESS));
702 }
703 else if (growth.cy < 0)
704 {
705 m_Pos += max(growth.cy, rect.top - m_Pos);
706 }
707 }
708
709 if (m_Pos > rect.bottom)
710 m_Pos = rect.bottom;
711
712 if (m_Pos < rect.top)
713 m_Pos = rect.top;
714
715 splitter.top = m_Pos;
716 splitter.bottom = m_Pos + THICKNESS;
717 first.bottom = splitter.top;
718 second.top = splitter.bottom;
719 }
720 else
721 {
722 rect.left += m_MinFirst;
723 rect.right -= THICKNESS + m_MinSecond;
724 if (m_DynamicFirst)
725 {
726 if (growth.cx > 0)
727 {
728 m_Pos += min(growth.cx, rect.right - (m_Pos + THICKNESS));
729 }
730 else if (growth.cx < 0)
731 {
732 m_Pos += max(growth.cy, rect.left - m_Pos);
733 }
734 }
735
736 if (m_Pos > rect.right)
737 m_Pos = rect.right;
738
739 if (m_Pos < rect.left)
740 m_Pos = rect.left;
741
742 splitter.left = m_Pos;
743 splitter.right = m_Pos + THICKNESS;
744 first.right = splitter.left;
745 second.left = splitter.right;
746 }
747
748 m_LastRect = parentRect;
750
751 hDwp = m_First.OnParentSize(first, hDwp);
752 hDwp = m_Second.OnParentSize(second, hDwp);
753
754 if (hDwp)
755 {
756 return DeferWindowPos(
757 hDwp, NULL, splitter.left, splitter.top, splitter.right - splitter.left, splitter.bottom - splitter.top,
759 }
760 else
761 {
763 NULL, splitter.left, splitter.top, splitter.right - splitter.left, splitter.bottom - splitter.top,
765 return NULL;
766 }
767 };
768
769 private:
770 BOOL
772 {
773 theResult = 0;
774 switch (Msg)
775 {
776 case WM_SETCURSOR:
778 theResult = TRUE;
779 break;
780
781 case WM_LBUTTONDOWN:
782 SetCapture();
783 break;
784
785 case WM_LBUTTONUP:
786 case WM_RBUTTONDOWN:
787 if (GetCapture() == m_hWnd)
788 {
790 }
791 break;
792
793 case WM_MOUSEMOVE:
794 if (GetCapture() == m_hWnd)
795 {
796 POINT Point;
799 if (m_Horizontal)
800 SetPos(Point.y);
801 else
802 SetPos(Point.x);
803 }
804 break;
805
806 default:
807 return FALSE;
808 }
809
810 return TRUE;
811 }
812
813 public:
814 INT
816 {
817 return m_Pos;
818 }
819
820 VOID
821 SetPos(INT NewPos)
822 {
823 RECT rcParent;
824
825 rcParent = m_LastRect;
826
827 if (m_Horizontal)
828 {
829 rcParent.bottom -= THICKNESS;
830
831 m_Pos = NewPos;
832
833 if (m_Pos < rcParent.top)
834 m_Pos = rcParent.top;
835
836 if (m_Pos > rcParent.bottom)
837 m_Pos = rcParent.bottom;
838 }
839 else
840 {
841 rcParent.right -= THICKNESS;
842
843 m_Pos = NewPos;
844
845 if (m_Pos < rcParent.left)
846 m_Pos = rcParent.left;
847
848 if (m_Pos > rcParent.right)
849 m_Pos = rcParent.right;
850 }
851
853
854 HDWP hdwp = NULL;
856 if (hdwp)
857 hdwp = OnParentSize(m_LastRect, hdwp);
858 if (hdwp)
859 EndDeferWindowPos(hdwp);
860 }
861
862 public:
863 DECLARE_WND_CLASS_EX(_T("SplitterWindowClass"), CS_HREDRAW | CS_VREDRAW, COLOR_BTNFACE)
864
865 /* Create splitter bar */
866 HWND
868 {
869 if (m_Horizontal)
871 else
873
875 DWORD exStyle = WS_EX_TRANSPARENT;
876
877 RECT size = {205, 180, 465, THICKNESS};
878 size.right += size.left;
879 size.bottom += size.top;
880
881 return CWindowImpl::Create(hwndParent, size, NULL, style, exStyle);
882 }
883};
Arabic default style
Definition: afstyles.h:94
r l[0]
Definition: byte_order.h:168
BOOL Add(const T &t)
Definition: atlsimpcoll.h:58
~CPointerArray()
Definition: rosui.h:23
static INT CALLBACK s_OnCompareItems(PVOID p1, PVOID p2, LPARAM lParam)
Definition: rosui.h:37
BOOL RemoveAt(INT i)
Definition: rosui.h:108
INT Search(T *item, INT iStart, UINT uFlags)
Definition: rosui.h:133
static INT CALLBACK s_OnRemoveItem(PVOID ptr, PVOID context)
Definition: rosui.h:30
T * Get(INT i) const
Definition: rosui.h:69
HDPA m_hDpa
Definition: rosui.h:15
BOOL Sort()
Definition: rosui.h:127
BOOL Clear()
Definition: rosui.h:120
virtual BOOL OnRemoveItem(T *ptr)
Definition: rosui.h:45
virtual INT OnCompareItems(T *p1, T *p2)
Definition: rosui.h:51
BOOL Set(INT i, T *ptr)
Definition: rosui.h:75
INT GetCount() const
Definition: rosui.h:63
CPointerArray()
Definition: rosui.h:18
INT IndexOf(T *ptr) const
Definition: rosui.h:93
BOOL Remove(T *ptr)
Definition: rosui.h:99
INT Append(T *ptr)
Definition: rosui.h:87
INT Insert(INT at, T *ptr)
Definition: rosui.h:81
Definition: rosui.h:253
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:336
virtual VOID ComputeRect(RECT parentRect, RECT currentRect, RECT *newRect)
Definition: rosui.h:268
virtual VOID ComputeMinimalSize(SIZE *size)
Definition: rosui.h:323
CUiAlignment m_HorizontalAlignment
Definition: rosui.h:257
CUiAlignment m_VerticalAlignment
Definition: rosui.h:258
CUiMargin m_Margin
Definition: rosui.h:255
CUiBox()
Definition: rosui.h:261
virtual VOID ComputeContentBounds(RECT *rect)
Definition: rosui.h:331
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:343
virtual BOOL OnRemoveItem(CUiPrimitive *ptr)
Definition: rosui.h:370
CUiCollection m_Children
Definition: rosui.h:380
CUiCollection & Children()
Definition: rosui.h:384
CUiMargin(INT all)
Definition: rosui.h:163
CUiMargin(INT horz, INT vert)
Definition: rosui.h:167
CUiMargin()
Definition: rosui.h:159
static CUiMeasure FitParent()
Definition: rosui.h:226
static CUiMeasure FitContent()
Definition: rosui.h:220
static CUiMeasure Fixed(INT pixels)
Definition: rosui.h:232
CUiMeasure()
Definition: rosui.h:188
static CUiMeasure Percent(INT percent)
Definition: rosui.h:238
CUiMeasure(MeasureType type, INT value)
Definition: rosui.h:194
MeasureType m_Type
Definition: rosui.h:184
INT ComputeMeasure(INT parent, INT content)
Definition: rosui.h:201
INT m_Value
Definition: rosui.h:185
MeasureType
Definition: rosui.h:176
@ Type_FitParent
Definition: rosui.h:180
@ Type_Fixed
Definition: rosui.h:178
@ Type_FitContent
Definition: rosui.h:177
@ Type_Percent
Definition: rosui.h:179
CUiMeasure m_Width
Definition: rosui.h:393
CUiMeasure m_Height
Definition: rosui.h:394
virtual ~CUiPanel()
Definition: rosui.h:402
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:439
virtual VOID ComputeMinimalSize(SIZE *size)
Definition: rosui.h:413
virtual CUiBox * AsBox()
Definition: rosui.h:407
CUiPanel()
Definition: rosui.h:396
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:454
virtual VOID ComputeContentBounds(RECT *rect)
Definition: rosui.h:426
virtual ~CUiPrimitive()
Definition: rosui.h:356
virtual CUiBox * AsBox()
Definition: rosui.h:361
CUiPrimitive * m_Parent
Definition: rosui.h:353
Definition: rosui.h:140
CUiRect(INT l, INT t, INT r, INT b)
Definition: rosui.h:147
CUiRect()
Definition: rosui.h:142
virtual ~CUiSplitPanel()
Definition: rosui.h:607
CUiMeasure m_Height
Definition: rosui.h:591
INT m_Pos
Definition: rosui.h:584
CUiSplitPanel()
Definition: rosui.h:593
BOOL m_Horizontal
Definition: rosui.h:585
RECT m_LastRect
Definition: rosui.h:579
INT GetPos()
Definition: rosui.h:815
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:656
CUiPanel m_Second
Definition: rosui.h:577
CUiCollection & First()
Definition: rosui.h:618
virtual VOID ComputeContentBounds(RECT *rect)
Definition: rosui.h:640
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:665
BOOL m_DynamicFirst
Definition: rosui.h:586
CUiMeasure m_Width
Definition: rosui.h:590
CUiCollection & Second()
Definition: rosui.h:623
HCURSOR m_hCursor
Definition: rosui.h:574
virtual CUiBox * AsBox()
Definition: rosui.h:612
static const INT THICKNESS
Definition: rosui.h:571
BOOL m_HasOldRect
Definition: rosui.h:581
INT m_MinSecond
Definition: rosui.h:588
virtual VOID ComputeMinimalSize(SIZE *size)
Definition: rosui.h:629
HWND Create(HWND hwndParent)
Definition: rosui.h:867
VOID SetPos(INT NewPos)
Definition: rosui.h:821
CUiPanel m_First
Definition: rosui.h:576
INT m_MinFirst
Definition: rosui.h:587
BOOL ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT &theResult, DWORD dwMapId)
Definition: rosui.h:771
VOID GetWindowTextW(CStringW &szText)
Definition: rosui.h:561
virtual VOID AppendTabOrderWindow(int Direction, ATL::CSimpleArray< HWND > &TabOrderList)
Definition: rosui.h:546
HWND GetWindow()
Definition: rosui.h:492
virtual ~CUiWindow()
Definition: rosui.h:552
virtual VOID ComputeMinimalSize(SIZE *size)
Definition: rosui.h:498
virtual CUiBox * AsBox()
Definition: rosui.h:486
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:522
virtual VOID ComputeContentBounds(RECT *rect)
Definition: rosui.h:505
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:516
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
struct @1627 Msg[]
static HWND hwndParent
Definition: cryptui.c:300
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
content
Definition: atl_ax.c:994
UINT uFlags
Definition: api.c:59
BOOL WINAPI DPA_Sort(HDPA hdpa, PFNDPACOMPARE pfnCompare, LPARAM lParam)
Definition: dpa.c:813
INT WINAPI DPA_Search(HDPA hdpa, LPVOID pFind, INT nStart, PFNDPACOMPARE pfnCompare, LPARAM lParam, UINT uOptions)
Definition: dpa.c:845
BOOL WINAPI DPA_SetPtr(HDPA hdpa, INT i, LPVOID p)
Definition: dpa.c:626
BOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa)
Definition: dpa.c:730
VOID WINAPI DPA_EnumCallback(HDPA hdpa, PFNDPAENUMCALLBACK enumProc, LPVOID lParam)
Definition: dpa.c:969
INT WINAPI DPA_GetPtrIndex(HDPA hdpa, LPCVOID p)
Definition: dpa.c:561
void WINAPI DPA_DestroyCallback(HDPA hdpa, PFNDPAENUMCALLBACK enumProc, LPVOID lParam)
Definition: dpa.c:1003
LPVOID WINAPI DPA_DeletePtr(HDPA hdpa, INT i)
Definition: dpa.c:677
HDPA WINAPI DPA_Create(INT nGrow)
Definition: dpa.c:950
INT WINAPI DPA_InsertPtr(HDPA hdpa, INT i, LPVOID p)
Definition: dpa.c:591
#define CALLBACK
Definition: compat.h:35
r parent
Definition: btrfs.c:3010
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: gl.h:1546
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLdouble GLdouble t
Definition: gl.h:2047
GLsizeiptr size
Definition: glext.h:5919
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
GLdouble GLdouble right
Definition: glext.h:10859
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLint left
Definition: glext.h:7726
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLint GLint bottom
Definition: glext.h:7726
const GLint * first
Definition: glext.h:5794
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define b
Definition: ke_i.h:79
#define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd)
Definition: atlwin.h:2004
#define T
Definition: mbstring.h:31
static PVOID ptr
Definition: dispmode.c:27
static ATOM item
Definition: dde.c:856
#define min(a, b)
Definition: monoChain.cc:55
unsigned int UINT
Definition: ndis.h:50
#define WS_CHILD
Definition: pedump.c:617
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_EX_TRANSPARENT
Definition: pedump.c:649
#define DPA_GetPtrCount(hdpa)
Definition: commctrl.h:4955
#define DA_LAST
Definition: commctrl.h:4783
#define DPA_GetPtr
Definition: commctrl.h:5
CUiAlignment
Definition: rosui.h:245
@ UiAlign_Stretch
Definition: rosui.h:249
@ UiAlign_Middle
Definition: rosui.h:247
@ UiAlign_LeftTop
Definition: rosui.h:246
@ UiAlign_RightBtm
Definition: rosui.h:248
#define memset(x, y, z)
Definition: compat.h:39
& rect
Definition: startmenu.cpp:1413
Definition: dpa.c:49
LONG cx
Definition: kdterminal.h:27
LONG cy
Definition: kdterminal.h:28
Definition: palette.c:468
Definition: http.c:7252
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define max(a, b)
Definition: svc.c:63
int32_t INT_PTR
Definition: typedefs.h:64
uint32_t DWORD_PTR
Definition: typedefs.h:65
int32_t INT
Definition: typedefs.h:58
Definition: pdh_main.c:94
#define _T(x)
Definition: vfdio.h:22
WDF_EXTERN_C_START typedef _In_ WDFDEVICE _In_ WDFCONTEXT _In_ WDF_DMA_DIRECTION Direction
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
HICON HCURSOR
Definition: windef.h:299
_In_ UINT iStart
Definition: wingdi.h:3620
HWND WINAPI SetCapture(_In_ HWND hWnd)
#define CS_VREDRAW
Definition: winuser.h:658
#define SWP_NOACTIVATE
Definition: winuser.h:1242
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2890
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define CS_HREDRAW
Definition: winuser.h:653
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
Definition: cursoricon.c:2670
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define WM_MOUSEMOVE
Definition: winuser.h:1775
HWND WINAPI GetCapture(void)
Definition: message.c:2881
#define WM_LBUTTONDOWN
Definition: winuser.h:1776
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
#define SWP_DEFERERASE
Definition: winuser.h:1252
#define WM_RBUTTONDOWN
Definition: winuser.h:1779
#define IDC_SIZENS
Definition: winuser.h:695
#define LoadCursor
Definition: winuser.h:5812
#define WM_LBUTTONUP
Definition: winuser.h:1777
HWND WINAPI GetParent(_In_ HWND)
#define WM_SETCURSOR
Definition: winuser.h:1636
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define SWP_NOZORDER
Definition: winuser.h:1247
#define IDC_SIZEWE
Definition: winuser.h:694
#define COLOR_BTNFACE
Definition: winuser.h:928
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)