From: Dirk Herijgers on
Hi All,

My Windows Vista returns always 0 when executing
GetSystemMetrics(SM_CXPADDEDBORDER). The return value must be (default)
4.
Can someone help me ??

Even the function
GetThemeSysSize(GetWindowTheme(SELF:Handle()),SM_CXPADDEDBORDER)
returns 0.

DEFINE SM_CXPADDEDBORDER := 92

At last: The function
SystemParametersInfo(SPI_GETNONCLIENTMETRICS,....) return 0 for the
member iPaddedBorderWidth.


Thanx for your help.

Dirk

--

From: Malcolm on
Dirk Herijgers wrote:
>
> Hi All,
>
> My Windows Vista returns always 0 when executing
> GetSystemMetrics(SM_CXPADDEDBORDER). The return value must be (default)
> 4.
> Can someone help me ??

I don't think you are the first to ask
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1264728&SiteID=1

I also found
===
lm [MSFT] said:

PatriotB: you are correct. IEXPLORE.EXE ships downlevel, so is marked as
5.02 (note that the Internet Options dialog is launched by IEUSER.EXE on
Windows Vista, so is marked 6.0 and is not affected).

The extra border padding for dialogs was found to break too many
applications, so is active only for new applications.

The plan of record was indeed to expose a way for applications marked as
< 6.0 to opt in to the border padding via a manifest setting, but
apparently this feature didn't make it. There is an app compat flag to
switch to v5 behavior for v6 apps, but not the other way around. There
is also a setting to turn off wide borders altogether for your
application, even for resizable frames (some applications crash as soon
as you change the border width, even on XP).

Note that this is only visible with Aero Basic, since with Aero, the DWM
will overdraw the glass frame around the dialogs (without changing their
size), so they are visually indistinguishable from other dialogs. (BTW
when a dialog is overdrawn this way in Aero, you can query the extended
frame bounds via the new DWMWA_EXTENDED_FRAME_BOUNDS value of the
DWMWINDOWATTRIBUTE enum, see
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/dwmgetwindowattribute.asp.
This will be fully documented in the final release of the Windows SDK).

Note that using the MajorSubsystemVersion is nothing new, we did it for
Windows 95/NT 4.0 - the window manager behaves quite differently if
you're not compiled as a 4.0+ application.

The difference between the subsystems is:

For < 6.0 apps (at 96dpi):

iBorderWidth = 5

iPaddedBorderWidth = SM_CXPADDEDBORDER = 0

SM_CXFRAME = 8

For 6.0+ apps (at 96dpi):

iBorderWidth = 1

iPaddedBorderWidth = SM_CXPADDEDBORDER = 4

SM_CXFRAME = 4

I told you I wasn't giving all the details in this post :-)
October 17, 2006 4:50 AM

===

> Even the function
> GetThemeSysSize(GetWindowTheme(SELF:Handle()),SM_CXPADDEDBORDER)
> returns 0.
>
> DEFINE SM_CXPADDEDBORDER := 92
>
> At last: The function
> SystemParametersInfo(SPI_GETNONCLIENTMETRICS,....) return 0 for the
> member iPaddedBorderWidth.
>
>
> Thanx for your help.
>
> Dirk
>
From: Dirk Herijgers on
Malcolm wrote:

> I don't think you are the first to ask
> http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1264728&SiteID=1
>
> I also found
> ===
> lm [MSFT] said:
>
> PatriotB: you are correct. IEXPLORE.EXE ships downlevel, so is marked
> as 5.02 (note that the Internet Options dialog is launched by
> IEUSER.EXE on Windows Vista, so is marked 6.0 and is not affected).

Hi Malcolm,

I don't understand at all.
My application has a manifest version 6 for Vista.
What is meaning with downlevel to 5.02 ?
How to check this 'level' ?

Can you explain me in your own words ?

Dirk

--