4 * Copyright 2007 Andras Kovacs
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(dwmapi
);
36 /**********************************************************************
37 * DwmIsCompositionEnabled (DWMAPI.@)
39 HRESULT WINAPI
DwmIsCompositionEnabled(BOOL
*enabled
)
41 RTL_OSVERSIONINFOEXW version
;
43 TRACE("%p\n", enabled
);
49 version
.dwOSVersionInfoSize
= sizeof(version
);
50 if (!RtlGetVersion(&version
))
51 *enabled
= (version
.dwMajorVersion
> 6 || (version
.dwMajorVersion
== 6 && version
.dwMinorVersion
>= 3));
56 /**********************************************************************
57 * DwmEnableComposition (DWMAPI.102)
59 HRESULT WINAPI
DwmEnableComposition(UINT uCompositionAction
)
61 FIXME("(%d) stub\n", uCompositionAction
);
66 /**********************************************************************
67 * DwmExtendFrameIntoClientArea (DWMAPI.@)
69 HRESULT WINAPI
DwmExtendFrameIntoClientArea(HWND hwnd
, const MARGINS
* margins
)
71 FIXME("(%p, %p) stub\n", hwnd
, margins
);
76 /**********************************************************************
77 * DwmGetColorizationColor (DWMAPI.@)
79 HRESULT WINAPI
DwmGetColorizationColor(DWORD
*colorization
, BOOL
*opaque_blend
)
81 FIXME("(%p, %p) stub\n", colorization
, opaque_blend
);
86 /**********************************************************************
89 HRESULT WINAPI
DwmFlush(void)
93 if (!once
++) FIXME("() stub\n");
98 /**********************************************************************
99 * DwmInvalidateIconicBitmaps (DWMAPI.@)
101 HRESULT WINAPI
DwmInvalidateIconicBitmaps(HWND hwnd
)
105 if (!once
++) FIXME("(%p) stub\n", hwnd
);
110 /**********************************************************************
111 * DwmSetWindowAttribute (DWMAPI.@)
113 HRESULT WINAPI
DwmSetWindowAttribute(HWND hwnd
, DWORD attributenum
, LPCVOID attribute
, DWORD size
)
117 if (!once
++) FIXME("(%p, %lx, %p, %lx) stub\n", hwnd
, attributenum
, attribute
, size
);
122 /**********************************************************************
123 * DwmGetGraphicsStreamClient (DWMAPI.@)
125 HRESULT WINAPI
DwmGetGraphicsStreamClient(UINT uIndex
, UUID
*pClientUuid
)
127 FIXME("(%d, %p) stub\n", uIndex
, pClientUuid
);
132 /**********************************************************************
133 * DwmGetTransportAttributes (DWMAPI.@)
135 HRESULT WINAPI
DwmGetTransportAttributes(BOOL
*pfIsRemoting
, BOOL
*pfIsConnected
, DWORD
*pDwGeneration
)
137 FIXME("(%p, %p, %p) stub\n", pfIsRemoting
, pfIsConnected
, pDwGeneration
);
139 return DWM_E_COMPOSITIONDISABLED
;
142 /**********************************************************************
143 * DwmUnregisterThumbnail (DWMAPI.@)
145 HRESULT WINAPI
DwmUnregisterThumbnail(HTHUMBNAIL thumbnail
)
147 FIXME("(%p) stub\n", thumbnail
);
152 /**********************************************************************
153 * DwmEnableMMCSS (DWMAPI.@)
155 HRESULT WINAPI
DwmEnableMMCSS(BOOL enableMMCSS
)
157 FIXME("(%d) stub\n", enableMMCSS
);
162 /**********************************************************************
163 * DwmGetGraphicsStreamTransformHint (DWMAPI.@)
165 HRESULT WINAPI
DwmGetGraphicsStreamTransformHint(UINT uIndex
, MilMatrix3x2D
*pTransform
)
167 FIXME("(%d, %p) stub\n", uIndex
, pTransform
);
172 /**********************************************************************
173 * DwmEnableBlurBehindWindow (DWMAPI.@)
175 HRESULT WINAPI
DwmEnableBlurBehindWindow(HWND hWnd
, const DWM_BLURBEHIND
*pBlurBuf
)
177 FIXME("%p %p\n", hWnd
, pBlurBuf
);
182 /**********************************************************************
183 * DwmDefWindowProc (DWMAPI.@)
185 BOOL WINAPI
DwmDefWindowProc(HWND hWnd
, UINT Msg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*plResult
)
189 if (!i
++) FIXME("stub\n");
194 /**********************************************************************
195 * DwmGetWindowAttribute (DWMAPI.@)
197 HRESULT WINAPI
DwmGetWindowAttribute(HWND hwnd
, DWORD attribute
, PVOID pv_attribute
, DWORD size
)
199 BOOL enabled
= FALSE
;
202 TRACE("(%p %ld %p %ld)\n", hwnd
, attribute
, pv_attribute
, size
);
204 if (DwmIsCompositionEnabled(&enabled
) == S_OK
&& !enabled
)
210 case DWMWA_EXTENDED_FRAME_BOUNDS
:
212 RECT
*rect
= (RECT
*)pv_attribute
;
213 DPI_AWARENESS_CONTEXT context
;
217 if (size
< sizeof(*rect
))
218 return E_NOT_SUFFICIENT_BUFFER
;
219 if (GetWindowLongW(hwnd
, GWL_STYLE
) & WS_CHILD
)
222 /* DWM frame bounds are always in physical coords */
223 context
= SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE
);
224 if (GetWindowRect(hwnd
, rect
))
227 hr
= HRESULT_FROM_WIN32(GetLastError());
229 SetThreadDpiAwarenessContext(context
);
233 FIXME("attribute %ld not implemented.\n", attribute
);
241 /**********************************************************************
242 * DwmRegisterThumbnail (DWMAPI.@)
244 HRESULT WINAPI
DwmRegisterThumbnail(HWND dest
, HWND src
, PHTHUMBNAIL thumbnail_id
)
246 FIXME("(%p %p %p) stub\n", dest
, src
, thumbnail_id
);
251 static int get_display_frequency(void)
256 memset(&mode
, 0, sizeof(mode
));
257 mode
.dmSize
= sizeof(mode
);
258 ret
= EnumDisplaySettingsExW(NULL
, ENUM_CURRENT_SETTINGS
, &mode
, 0);
259 if (ret
&& mode
.dmFields
& DM_DISPLAYFREQUENCY
&& mode
.dmDisplayFrequency
)
261 return mode
.dmDisplayFrequency
;
265 WARN("Failed to query display frequency, returning a fallback value.\n");
270 /**********************************************************************
271 * DwmGetCompositionTimingInfo (DWMAPI.@)
273 HRESULT WINAPI
DwmGetCompositionTimingInfo(HWND hwnd
, DWM_TIMING_INFO
*info
)
275 LARGE_INTEGER performance_frequency
, qpc
;
276 static int i
, display_frequency
;
281 if (info
->cbSize
!= sizeof(DWM_TIMING_INFO
))
282 return MILERR_MISMATCHED_SIZE
;
284 if(!i
++) FIXME("(%p %p)\n", hwnd
, info
);
286 memset(info
, 0, info
->cbSize
);
287 info
->cbSize
= sizeof(DWM_TIMING_INFO
);
289 display_frequency
= get_display_frequency();
290 info
->rateRefresh
.uiNumerator
= display_frequency
;
291 info
->rateRefresh
.uiDenominator
= 1;
292 info
->rateCompose
.uiNumerator
= display_frequency
;
293 info
->rateCompose
.uiDenominator
= 1;
295 QueryPerformanceFrequency(&performance_frequency
);
296 info
->qpcRefreshPeriod
= performance_frequency
.QuadPart
/ display_frequency
;
298 QueryPerformanceCounter(&qpc
);
299 info
->qpcVBlank
= (qpc
.QuadPart
/ info
->qpcRefreshPeriod
) * info
->qpcRefreshPeriod
;
304 /**********************************************************************
305 * DwmAttachMilContent (DWMAPI.@)
307 HRESULT WINAPI
DwmAttachMilContent(HWND hwnd
)
309 FIXME("(%p) stub\n", hwnd
);
313 /**********************************************************************
314 * DwmDetachMilContent (DWMAPI.@)
316 HRESULT WINAPI
DwmDetachMilContent(HWND hwnd
)
318 FIXME("(%p) stub\n", hwnd
);
322 /**********************************************************************
323 * DwmUpdateThumbnailProperties (DWMAPI.@)
325 HRESULT WINAPI
DwmUpdateThumbnailProperties(HTHUMBNAIL thumbnail
, const DWM_THUMBNAIL_PROPERTIES
*props
)
327 FIXME("(%p, %p) stub\n", thumbnail
, props
);
331 /**********************************************************************
332 * DwmSetPresentParameters (DWMAPI.@)
334 HRESULT WINAPI
DwmSetPresentParameters(HWND hwnd
, DWM_PRESENT_PARAMETERS
*params
)
336 FIXME("(%p %p) stub\n", hwnd
, params
);
340 /**********************************************************************
341 * DwmSetIconicLivePreviewBitmap (DWMAPI.@)
343 HRESULT WINAPI
DwmSetIconicLivePreviewBitmap(HWND hwnd
, HBITMAP hbmp
, POINT
*pos
, DWORD flags
)
345 FIXME("(%p %p %p %lx) stub\n", hwnd
, hbmp
, pos
, flags
);
349 /**********************************************************************
350 * DwmSetIconicThumbnail (DWMAPI.@)
352 HRESULT WINAPI
DwmSetIconicThumbnail(HWND hwnd
, HBITMAP hbmp
, DWORD flags
)
354 FIXME("(%p %p %lx) stub\n", hwnd
, hbmp
, flags
);
358 /**********************************************************************
359 * DwmpGetColorizationParameters (DWMAPI.@)
361 HRESULT WINAPI
DwmpGetColorizationParameters(void *params
)
363 FIXME("(%p) stub\n", params
);