Changeset 15170


Ignore:
Timestamp:
Nov 16, 2000, 5:35:43 PM (24 years ago)
Author:
sandervl
Message:

SystemParametersInfoA addition + SystemParametersInfoW fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified tags/trunk/src/user32/user32.cpp

    r15152 r15170  
    1 /* $Id: user32.cpp,v 1.88 2000-11-11 18:39:29 sandervl Exp $ */
     1/* $Id: user32.cpp,v 1.89 2000-11-16 16:35:43 sandervl Exp $ */
    22
    33/*
     
    99 * Copyright 1999 Christoph Bratschi
    1010 * Copyright 1999 Daniela Engert (dani@ngrt.de)
     11 *
     12 * Partly based on Wine code (windows\sysparams.c: SystemParametersInfoA)
     13 *
     14 * Copyright 1994 Alexandre Julliard
    1115 *
    1216 *
     
    788792{
    789793 BOOL rc = TRUE;
    790  NONCLIENTMETRICSA *cmetric = (NONCLIENTMETRICSA *)pvParam;
    791794
    792795  switch(uiAction) {
     
    799802    case SPI_GETNONCLIENTMETRICS:
    800803    {
    801         memset(cmetric, 0, sizeof(NONCLIENTMETRICSA));
    802         cmetric->cbSize = sizeof(NONCLIENTMETRICSA);
    803 
    804 #if 0
    805         //CB: fonts not handled by Open32, set to WarpSans
    806         lstrcpyA(cmetric->lfSmCaptionFont.lfFaceName,"WarpSans");
    807         cmetric->lfSmCaptionFont.lfHeight = 9;
    808 
    809         lstrcpyA(cmetric->lfCaptionFont.lfFaceName,"WarpSans");
    810         cmetric->lfCaptionFont.lfHeight = 9;
    811 
    812         lstrcpyA(cmetric->lfMenuFont.lfFaceName,"WarpSans");
    813         cmetric->lfMenuFont.lfHeight = 9;
    814 
    815         lstrcpyA(cmetric->lfStatusFont.lfFaceName,"WarpSans");
    816         cmetric->lfStatusFont.lfHeight = 9;
    817 
    818         lstrcpyA(cmetric->lfMessageFont.lfFaceName,"WarpSans");
    819         cmetric->lfMessageFont.lfHeight = 9;
    820 
    821         cmetric->iBorderWidth     = GetSystemMetrics(SM_CXBORDER);
    822         cmetric->iScrollWidth     = GetSystemMetrics(SM_CXHSCROLL);
    823         cmetric->iScrollHeight    = GetSystemMetrics(SM_CYHSCROLL);
    824         cmetric->iCaptionWidth    = 32; //TODO
    825         cmetric->iCaptionHeight   = 16; //TODO
    826         cmetric->iSmCaptionWidth  = GetSystemMetrics(SM_CXSMSIZE);
    827         cmetric->iSmCaptionHeight = GetSystemMetrics(SM_CYSMSIZE);
    828         cmetric->iMenuWidth       = 32; //TODO
    829         cmetric->iMenuHeight      = GetSystemMetrics(SM_CYMENU);
    830 #else
    831         SystemParametersInfoA(SPI_GETICONTITLELOGFONT, 0, (LPVOID)&(cmetric->lfSmCaptionFont),0);
    832 
    833         SystemParametersInfoA(SPI_GETICONTITLELOGFONT, 0, (LPVOID)&(cmetric->lfCaptionFont),0);
    834         cmetric->lfCaptionFont.lfWeight = FW_BOLD;
    835 
    836         LPLOGFONTA lpLogFont = &(cmetric->lfMenuFont);
    837         GetProfileStringA("Desktop", "MenuFont", "MS Sans Serif",
    838                           lpLogFont->lfFaceName, LF_FACESIZE);
    839 
    840         lpLogFont->lfHeight = -GetProfileIntA("Desktop","MenuFontSize", 12);
    841         lpLogFont->lfWidth = 0;
    842         lpLogFont->lfEscapement = lpLogFont->lfOrientation = 0;
    843         lpLogFont->lfWeight = FW_NORMAL;
    844         lpLogFont->lfItalic = FALSE;
    845         lpLogFont->lfStrikeOut = FALSE;
    846         lpLogFont->lfUnderline = FALSE;
    847         lpLogFont->lfCharSet = ANSI_CHARSET;
    848         lpLogFont->lfOutPrecision = OUT_DEFAULT_PRECIS;
    849         lpLogFont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
    850         lpLogFont->lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS;
    851 
    852         SystemParametersInfoA(SPI_GETICONTITLELOGFONT, 0,
    853                               (LPVOID)&(cmetric->lfStatusFont),0);
    854         SystemParametersInfoA(SPI_GETICONTITLELOGFONT, 0,
    855                               (LPVOID)&(cmetric->lfMessageFont),0);
    856 
    857         cmetric->iBorderWidth     = GetSystemMetrics(SM_CXBORDER);
    858         cmetric->iScrollWidth     = GetSystemMetrics(SM_CXHSCROLL);
    859         cmetric->iScrollHeight    = GetSystemMetrics(SM_CYHSCROLL);
    860         cmetric->iCaptionWidth    = 32; //TODO
    861         cmetric->iCaptionHeight   = 32; //TODO
    862         cmetric->iSmCaptionWidth  = GetSystemMetrics(SM_CXSMSIZE);
    863         cmetric->iSmCaptionHeight = GetSystemMetrics(SM_CYSMSIZE);
    864         cmetric->iMenuHeight      = GetSystemMetrics(SM_CYMENU);
    865         cmetric->iMenuWidth       = cmetric->iMenuHeight; //TODO
    866 #endif
    867         break;
     804        LPNONCLIENTMETRICSA lpnm = (LPNONCLIENTMETRICSA)pvParam;
     805               
     806        if (lpnm->cbSize == sizeof(NONCLIENTMETRICSA))
     807        {
     808            memset(lpnm, 0, sizeof(NONCLIENTMETRICSA));
     809            lpnm->cbSize = sizeof(NONCLIENTMETRICSA);
     810
     811            SystemParametersInfoA(SPI_GETICONTITLELOGFONT, 0, (LPVOID)&(lpnm->lfCaptionFont),0);
     812            lpnm->lfCaptionFont.lfWeight = FW_BOLD;
     813            lpnm->iCaptionWidth    = 32; //TODO
     814            lpnm->iCaptionHeight   = 32; //TODO
     815
     816            SystemParametersInfoA(SPI_GETICONTITLELOGFONT, 0, (LPVOID)&(lpnm->lfSmCaptionFont),0);
     817            lpnm->iSmCaptionWidth  = GetSystemMetrics(SM_CXSMSIZE);
     818            lpnm->iSmCaptionHeight = GetSystemMetrics(SM_CYSMSIZE);
     819
     820            LPLOGFONTA lpLogFont = &(lpnm->lfMenuFont);
     821            GetProfileStringA("Desktop", "MenuFont", "MS Sans Serif",
     822                              lpLogFont->lfFaceName, LF_FACESIZE);
     823
     824            lpLogFont->lfHeight = -GetProfileIntA("Desktop","MenuFontSize", 13);
     825            lpLogFont->lfWidth = 0;
     826            lpLogFont->lfEscapement = lpLogFont->lfOrientation = 0;
     827            lpLogFont->lfWeight = FW_NORMAL;
     828            lpLogFont->lfItalic = FALSE;
     829            lpLogFont->lfStrikeOut = FALSE;
     830            lpLogFont->lfUnderline = FALSE;
     831            lpLogFont->lfCharSet = ANSI_CHARSET;
     832            lpLogFont->lfOutPrecision = OUT_DEFAULT_PRECIS;
     833            lpLogFont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
     834            lpLogFont->lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS;
     835
     836            SystemParametersInfoA(SPI_GETICONTITLELOGFONT, 0,
     837                              (LPVOID)&(lpnm->lfStatusFont),0);
     838            SystemParametersInfoA(SPI_GETICONTITLELOGFONT, 0,
     839                              (LPVOID)&(lpnm->lfMessageFont),0);
     840
     841            lpnm->iBorderWidth     = GetSystemMetrics(SM_CXBORDER);
     842            lpnm->iScrollWidth     = GetSystemMetrics(SM_CXHSCROLL);
     843            lpnm->iScrollHeight    = GetSystemMetrics(SM_CYHSCROLL);
     844            lpnm->iMenuHeight      = GetSystemMetrics(SM_CYMENU);
     845            lpnm->iMenuWidth       = lpnm->iMenuHeight; //TODO
     846        }
     847        else
     848        {
     849            dprintf(("SPI_GETNONCLIENTMETRICS: size mismatch !! (is %d; should be %d)\n", lpnm->cbSize, sizeof(NONCLIENTMETRICSA)));
     850            /* FIXME: SetLastError? */
     851            rc = FALSE;
     852        }
     853        break;
     854    }
     855
     856    case SPI_GETICONMETRICS:                    /*     45  WINVER >= 0x400 */
     857    {
     858        LPICONMETRICSA lpIcon = (LPICONMETRICSA)pvParam;
     859        if(lpIcon && lpIcon->cbSize == sizeof(*lpIcon))
     860        {
     861            SystemParametersInfoA( SPI_ICONHORIZONTALSPACING, 0,
     862                                   &lpIcon->iHorzSpacing, FALSE );
     863            SystemParametersInfoA( SPI_ICONVERTICALSPACING, 0,
     864                                   &lpIcon->iVertSpacing, FALSE );
     865            SystemParametersInfoA( SPI_GETICONTITLEWRAP, 0,
     866                                   &lpIcon->iTitleWrap, FALSE );
     867            SystemParametersInfoA( SPI_GETICONTITLELOGFONT, 0,
     868                                   &lpIcon->lfFont, FALSE );
     869        }
     870        else
     871        {
     872            dprintf(("SPI_GETICONMETRICS: size mismatch !! (is %d; should be %d)\n", lpIcon->cbSize, sizeof(ICONMETRICSA)));
     873            /* FIXME: SetLastError? */
     874            rc = FALSE;
     875        }
     876        break;
    868877    }
    869878
     
    898907        break;
    899908
    900     case 104: //TODO: Undocumented
     909    case SPI_GETWHEELSCROLLLINES: //TODO: Undocumented
    901910        rc = 16;
    902911        break;
     912
    903913    default:
    904914        rc = O32_SystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
     
    913923BOOL WIN32API SystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
    914924{
    915  BOOL rc;
     925 BOOL rc = TRUE;
    916926 NONCLIENTMETRICSW *clientMetricsW = (NONCLIENTMETRICSW *)pvParam;
    917927 NONCLIENTMETRICSA  clientMetricsA = {0};
     
    941951        pvParamA = &clientMetricsA;
    942952        break;
     953
     954    case SPI_GETICONMETRICS:                    /*     45  WINVER >= 0x400 */
     955    {
     956        LPICONMETRICSW lpIcon = (LPICONMETRICSW)pvParam;
     957        if(lpIcon && lpIcon->cbSize == sizeof(*lpIcon))
     958        {
     959            SystemParametersInfoW( SPI_ICONHORIZONTALSPACING, 0,
     960                                   &lpIcon->iHorzSpacing, FALSE );
     961            SystemParametersInfoW( SPI_ICONVERTICALSPACING, 0,
     962                                   &lpIcon->iVertSpacing, FALSE );
     963            SystemParametersInfoW( SPI_GETICONTITLEWRAP, 0,
     964                                   &lpIcon->iTitleWrap, FALSE );
     965            SystemParametersInfoW( SPI_GETICONTITLELOGFONT, 0,
     966                                   &lpIcon->lfFont, FALSE );
     967            return TRUE;
     968        }
     969        else
     970        {
     971            dprintf(("SPI_GETICONMETRICS: size mismatch !! (is %d; should be %d)\n", lpIcon->cbSize, sizeof(ICONMETRICSA)));
     972            /* FIXME: SetLastError? */
     973            return FALSE;
     974        }
     975    }
     976
    943977    case SPI_GETICONTITLELOGFONT:
    944978    {
     
    947981        /* from now on we always have an alias for MS Sans Serif */
    948982        lstrcpyW(lpLogFont->lfFaceName, (LPCWSTR)L"MS Sans Serif");
    949         lpLogFont->lfHeight = -GetProfileIntA("Desktop","IconTitleSize", 8);
     983        lpLogFont->lfHeight = -GetProfileIntA("Desktop","IconTitleSize", /*8*/12); //CB: 8 is too small
    950984        lpLogFont->lfWidth = 0;
    951985        lpLogFont->lfEscapement = lpLogFont->lfOrientation = 0;
Note: See TracChangeset for help on using the changeset viewer.