diff --git a/reactos/bootdata/hivedef.inf b/reactos/bootdata/hivedef.inf index f7df7f7cfcc..cf6dd3ce7c6 100644 --- a/reactos/bootdata/hivedef.inf +++ b/reactos/bootdata/hivedef.inf @@ -64,4 +64,31 @@ HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP", HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","BuildNumber",0x00010001,0x00000A28 HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","PlatformId",0x00010001,0x00000002 +; GUI Setup + +HKCU, "Control Panel\Desktop\WindowMetrics","CaptionFont",0x00000001,f5,ff,ff,ff,00,00,00,\ +00,00,00,00,00,00,00,00,00,bc,02,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,\ +00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,\ +00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +HKCU, "Control Panel\Desktop\WindowMetrics","IconFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\ +00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\ +72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\ +00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +HKCU, "Control Panel\Desktop\WindowMetrics","MenuFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\ +00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\ +72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\ +00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +HKCU, "Control Panel\Desktop\WindowMetrics","MessageFont",0x00000001,f5,ff,ff,ff,00,00,00,\ +00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,\ +00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,\ +00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +HKCU, "Control Panel\Desktop\WindowMetrics","SmCaptionFont",0x00000001,f5,ff,ff,ff,00,00,\ +00,00,00,00,00,00,00,00,00,00,bc,02,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,\ +74,00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,\ +00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +HKCU, "Control Panel\Desktop\WindowMetrics","IconFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\ +00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\ +72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\ +00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + ; EOF diff --git a/reactos/bootdata/hivesys.inf b/reactos/bootdata/hivesys.inf index 10b8009b39f..9912e56e5d6 100644 --- a/reactos/bootdata/hivesys.inf +++ b/reactos/bootdata/hivesys.inf @@ -555,34 +555,6 @@ HKLM,"SYSTEM\Setup","SetupType",0x00010001,0x00000000 HKLM,"SYSTEM\Setup","SystemPartition",0x00000000,"\Device\Harddisk0\Partition1" HKLM,"SYSTEM\Setup","SystemSetupInProgress",0x00010001,0x00000000 -; GUI Setup - -HKCU, "Control Panel\Desktop\WindowMetrics","CaptionFont",0x00000001,f5,ff,ff,ff,00,00,00,\ -00,00,00,00,00,00,00,00,00,bc,02,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,\ -00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,\ -00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 -HKCU, "Control Panel\Desktop\WindowMetrics","IconFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\ -00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\ -72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\ -00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 -HKCU, "Control Panel\Desktop\WindowMetrics","MenuFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\ -00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\ -72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\ -00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 -HKCU, "Control Panel\Desktop\WindowMetrics","MessageFont",0x00000001,f5,ff,ff,ff,00,00,00,\ -00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,\ -00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,\ -00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 -HKCU, "Control Panel\Desktop\WindowMetrics","SmCaptionFont",0x00000001,f5,ff,ff,ff,00,00,\ -00,00,00,00,00,00,00,00,00,00,bc,02,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,\ -74,00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,\ -00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 -HKCU, "Control Panel\Desktop\WindowMetrics","IconFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\ -00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\ -72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\ -00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 - - ; ----------------------------- KJS Init ---------------------------- HKLM,"SYSTEM\CurrentControlSet\Control\Kdb","kjsinit",0x00010000,\ "function init(v) { var rk = '\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Kdb'; eval(System.regread(rk,v)); } for( i = 1; i <= 40; i++ ) { init((new Number(i)).toString()); }" diff --git a/reactos/lib/user32/Makefile b/reactos/lib/user32/Makefile index 3a19ccb6c3f..89d361c97a1 100644 --- a/reactos/lib/user32/Makefile +++ b/reactos/lib/user32/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.35 2004/02/16 01:30:38 rcampbell Exp $ +# $Id: Makefile,v 1.36 2004/03/07 11:59:43 navaraf Exp $ PATH_TO_TOP = ../.. @@ -8,7 +8,7 @@ TARGET_NAME = user32 TARGET_BASE = 0x77e70000 -TARGET_SDKLIBS = libwine.a ntdll.a kernel32.a gdi32.a rosrtl.a advapi32.a +TARGET_SDKLIBS = libwine.a ntdll.a kernel32.a gdi32.a rosrtl.a TARGET_CFLAGS = \ -I./include \ diff --git a/reactos/lib/user32/misc/desktop.c b/reactos/lib/user32/misc/desktop.c index 5c5f753b319..51915bdc1ae 100644 --- a/reactos/lib/user32/misc/desktop.c +++ b/reactos/lib/user32/misc/desktop.c @@ -1,4 +1,4 @@ -/* $Id: desktop.c,v 1.30 2004/02/28 03:02:08 rcampbell Exp $ +/* $Id: desktop.c,v 1.31 2004/03/07 11:59:43 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS user32.dll @@ -89,28 +89,6 @@ SystemParametersInfoA(UINT uiAction, } -BOOL IntGetFontMetricSetting(LPCWSTR lpKey, PLOGFONTW font) -{ - HKEY hKey; - DWORD dwType = REG_BINARY; - DWORD dwSize = sizeof(LOGFONTW); - BOOL bRet = FALSE; - if ( RegOpenKeyExW(HKEY_CURRENT_USER, L"Control Panel\\Desktop\\WindowMetrics", 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS ) - { - if ( RegQueryValueExW(hKey, lpKey, NULL, &dwType, (LPBYTE)font, &dwSize) == ERROR_SUCCESS ) - bRet = TRUE; - - if (font->lfHeight < 0) - { - DbgPrint("WARNING! WARNING! WARNING! Ugly hack alert: ROS doesn't handle pixel sizes for fonts correctly. As a result we must convert to point sizes.\n"); - font->lfHeight = abs(font->lfHeight); - } - } - - RegCloseKey(hKey); - return bRet; -} - /* * @implemented */ @@ -120,59 +98,7 @@ SystemParametersInfoW(UINT uiAction, PVOID pvParam, UINT fWinIni) { - static LOGFONTW IconFont; - static NONCLIENTMETRICSW pMetrics; - static BOOL bInitialized = FALSE; - - if (!bInitialized) - { - ZeroMemory(&IconFont, sizeof(LOGFONTW)); - ZeroMemory(&pMetrics, sizeof(NONCLIENTMETRICSW)); - - IntGetFontMetricSetting(L"CaptionFont", &pMetrics.lfCaptionFont); - IntGetFontMetricSetting(L"SmCaptionFont", &pMetrics.lfSmCaptionFont); - IntGetFontMetricSetting(L"MenuFont", &pMetrics.lfMenuFont); - IntGetFontMetricSetting(L"StatusFont", &pMetrics.lfStatusFont); - IntGetFontMetricSetting(L"MessageFont", &pMetrics.lfMessageFont); - IntGetFontMetricSetting(L"IconFont", &IconFont); - - pMetrics.iBorderWidth = 1; - pMetrics.iScrollWidth = NtUserGetSystemMetrics(SM_CXVSCROLL); - pMetrics.iScrollHeight = NtUserGetSystemMetrics(SM_CYHSCROLL); - pMetrics.iCaptionWidth = NtUserGetSystemMetrics(SM_CXSIZE); - pMetrics.iCaptionHeight = NtUserGetSystemMetrics(SM_CYSIZE); - pMetrics.iSmCaptionWidth = NtUserGetSystemMetrics(SM_CXSMSIZE); - pMetrics.iSmCaptionHeight = NtUserGetSystemMetrics(SM_CYSMSIZE); - pMetrics.iMenuWidth = NtUserGetSystemMetrics(SM_CXMENUSIZE); - pMetrics.iMenuHeight = NtUserGetSystemMetrics(SM_CYMENUSIZE); - pMetrics.cbSize = sizeof(LPNONCLIENTMETRICSW); - - bInitialized = TRUE; - } - switch(uiAction) - { - - case SPI_GETICONTITLELOGFONT: - { - memcpy(pvParam, (PVOID)&IconFont, sizeof(LOGFONTW)); - return TRUE; - } - case SPI_GETNONCLIENTMETRICS: - { - /* FIXME: Is this windows default behavior? */ - LPNONCLIENTMETRICSW lpMetrics = (LPNONCLIENTMETRICSW)pvParam; - if ( lpMetrics->cbSize != sizeof(NONCLIENTMETRICSW) || - uiParam != sizeof(NONCLIENTMETRICSW )) - { - return FALSE; - } - DbgPrint("FontName: %S, Size: %i\n",pMetrics.lfMessageFont.lfFaceName, pMetrics.lfMessageFont.lfHeight); - memcpy(pvParam, (PVOID)&pMetrics, sizeof(NONCLIENTMETRICSW)); - return TRUE; - } - default: - return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni); - } + return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni); } diff --git a/reactos/subsys/win32k/ntuser/misc.c b/reactos/subsys/win32k/ntuser/misc.c index 81ef4209fa6..e718e99e698 100644 --- a/reactos/subsys/win32k/ntuser/misc.c +++ b/reactos/subsys/win32k/ntuser/misc.c @@ -1,4 +1,4 @@ -/* $Id: misc.c,v 1.53 2004/02/19 21:12:09 weiden Exp $ +/* $Id: misc.c,v 1.54 2004/03/07 11:59:43 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -442,6 +442,36 @@ NtUserGetThreadState( return 0; } +VOID FASTCALL +IntGetFontMetricSetting(LPWSTR lpValueName, PLOGFONTW font) +{ + RTL_QUERY_REGISTRY_TABLE QueryTable[2]; + NTSTATUS Status; + static LOGFONTW DefaultFont = { + 11, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, + 0, 0, DEFAULT_QUALITY, VARIABLE_PITCH | FF_SWISS, + L"Bitstream Vera Sans" + }; + + RtlZeroMemory(&QueryTable, sizeof(QueryTable)); + + QueryTable[0].Name = lpValueName; + QueryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT | RTL_QUERY_REGISTRY_REQUIRED; + QueryTable[0].EntryContext = font; + + Status = RtlQueryRegistryValues( + RTL_REGISTRY_USER, + L"Control Panel\\Desktop\\WindowMetrics", + QueryTable, + NULL, + NULL); + + if (!NT_SUCCESS(Status)) + { + RtlCopyMemory(font, &DefaultFont, sizeof(LOGFONTW)); + } +} + /* * @implemented */ @@ -456,7 +486,37 @@ NtUserSystemParametersInfo( static BOOL GradientCaptions = TRUE; NTSTATUS Status; PWINSTATION_OBJECT WinStaObject; + + static BOOL bInitialized = FALSE; + static LOGFONTW IconFont; + static NONCLIENTMETRICSW pMetrics; + if (!bInitialized) + { + ZeroMemory(&IconFont, sizeof(LOGFONTW)); + ZeroMemory(&pMetrics, sizeof(NONCLIENTMETRICSW)); + + IntGetFontMetricSetting(L"CaptionFont", &pMetrics.lfCaptionFont); + IntGetFontMetricSetting(L"SmCaptionFont", &pMetrics.lfSmCaptionFont); + IntGetFontMetricSetting(L"MenuFont", &pMetrics.lfMenuFont); + IntGetFontMetricSetting(L"StatusFont", &pMetrics.lfStatusFont); + IntGetFontMetricSetting(L"MessageFont", &pMetrics.lfMessageFont); + IntGetFontMetricSetting(L"IconFont", &IconFont); + + pMetrics.iBorderWidth = 1; + pMetrics.iScrollWidth = NtUserGetSystemMetrics(SM_CXVSCROLL); + pMetrics.iScrollHeight = NtUserGetSystemMetrics(SM_CYHSCROLL); + pMetrics.iCaptionWidth = NtUserGetSystemMetrics(SM_CXSIZE); + pMetrics.iCaptionHeight = NtUserGetSystemMetrics(SM_CYSIZE); + pMetrics.iSmCaptionWidth = NtUserGetSystemMetrics(SM_CXSMSIZE); + pMetrics.iSmCaptionHeight = NtUserGetSystemMetrics(SM_CYSMSIZE); + pMetrics.iMenuWidth = NtUserGetSystemMetrics(SM_CXMENUSIZE); + pMetrics.iMenuHeight = NtUserGetSystemMetrics(SM_CYMENUSIZE); + pMetrics.cbSize = sizeof(LPNONCLIENTMETRICSW); + + bInitialized = TRUE; + } + switch(uiAction) { case SPI_SETDOUBLECLKWIDTH: @@ -594,6 +654,24 @@ NtUserSystemParametersInfo( } return TRUE; } + case SPI_GETICONTITLELOGFONT: + { + MmCopyToCaller(pvParam, (PVOID)&IconFont, sizeof(LOGFONTW)); + return TRUE; + } + case SPI_GETNONCLIENTMETRICS: + { + /* FIXME: Is this windows default behavior? */ + LPNONCLIENTMETRICSW lpMetrics = (LPNONCLIENTMETRICSW)pvParam; + if ( lpMetrics->cbSize != sizeof(NONCLIENTMETRICSW) || + uiParam != sizeof(NONCLIENTMETRICSW )) + { + return FALSE; + } + DPRINT("FontName: %S, Size: %i\n",pMetrics.lfMessageFont.lfFaceName, pMetrics.lfMessageFont.lfHeight); + MmCopyToCaller(pvParam, (PVOID)&pMetrics, sizeof(NONCLIENTMETRICSW)); + return TRUE; + } } return FALSE; }