24 CreateDIBPatternBrush(
25 HGLOBAL hglbDIBPacked
,
30 PBITMAPINFO pConvertedInfo
;
31 UINT ConvertedInfoSize
;
33 lpPackedDIB
= GlobalLock(hglbDIBPacked
);
34 if (lpPackedDIB
== NULL
)
37 pConvertedInfo
= ConvertBitmapInfo((PBITMAPINFO
)lpPackedDIB
, fuColorSpec
,
38 &ConvertedInfoSize
, TRUE
);
41 hBrush
= NtGdiCreateDIBBrush(pConvertedInfo
, fuColorSpec
,
42 ConvertedInfoSize
, FALSE
, FALSE
, lpPackedDIB
);
43 if ((PBITMAPINFO
)lpPackedDIB
!= pConvertedInfo
)
44 RtlFreeHeap(RtlGetProcessHeap(), 0, pConvertedInfo
);
47 GlobalUnlock(hglbDIBPacked
);
56 CreateDIBPatternBrushPt(
57 CONST VOID
*lpPackedDIB
,
61 PBITMAPINFO pConvertedInfo
;
62 UINT ConvertedInfoSize
;
64 if (lpPackedDIB
== NULL
)
67 pConvertedInfo
= ConvertBitmapInfo((PBITMAPINFO
)lpPackedDIB
, fuColorSpec
,
68 &ConvertedInfoSize
, TRUE
);
71 hBrush
= NtGdiCreateDIBBrush(pConvertedInfo
, fuColorSpec
,
72 ConvertedInfoSize
, FALSE
, FALSE
, (PVOID
)lpPackedDIB
);
73 if ((PBITMAPINFO
)lpPackedDIB
!= pConvertedInfo
)
74 RtlFreeHeap(RtlGetProcessHeap(), 0, pConvertedInfo
);
85 CreateSolidBrush(IN COLORREF crColor
)
87 /* Call Server-Side API */
88 return NtGdiCreateSolidBrush(crColor
, NULL
);
96 CONST LOGBRUSH
*LogBrush
)
100 switch (LogBrush
->lbStyle
)
102 case BS_DIBPATTERN8X8
:
104 hBrush
= CreateDIBPatternBrush((HGLOBAL
)LogBrush
->lbHatch
,
108 case BS_DIBPATTERNPT
:
109 hBrush
= CreateDIBPatternBrushPt((PVOID
)LogBrush
->lbHatch
,
115 hBrush
= NtGdiCreatePatternBrush((HBITMAP
)LogBrush
->lbHatch
);
119 hBrush
= NtGdiCreateSolidBrush(LogBrush
->lbColor
, 0);
123 hBrush
= NtGdiCreateHatchBrush(LogBrush
->lbHatch
, LogBrush
->lbColor
);
127 hBrush
= NtGdiGetStockObject(NULL_BRUSH
);
131 SetLastError(ERROR_INVALID_PARAMETER
);