Ignore:
Timestamp:
Feb 17, 2001, 9:20:09 PM (25 years ago)
Author:
bird
Message:

Played along, things working quite well now. But, button accelerators don't!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/notebook/src/win32k/utils/Win32kCC.c

    r5145 r5159  
    1 /* $Id: Win32kCC.c,v 1.12.2.3 2001-02-17 08:57:50 bird Exp $
     1/* $Id: Win32kCC.c,v 1.12.2.4 2001-02-17 20:20:07 bird Exp $
    22 *
    33 * Win32CC - Win32k Control Center.
     
    3939#define INCL_DOSFILEMGR
    4040#define INCL_DOSRESOURCES
     41#define INCL_DOSMISC
     42
    4143#define INCL_WINERRORS
    4244#define INCL_WINDIALOGS
     
    4749#define INCL_WINSTDBOOK
    4850#define INCL_WINSYS
     51#define INCL_WINTIMER
     52
     53#define INCL_WINACCELERATORS
     54#define INCL_WINFRAMEMGR
     55
    4956#define INCL_GPIPRIMITIVES
    5057#define INCL_GPILCIDS
    51 #define INCL_DOSMISC
     58
    5259
    5360
     
    8188typedef struct _Win32kCC
    8289{
    83     HWND    hwnd;
    84     HWND    hwndNtbk;
    85     HAB     hab;
    86     BOOL    fDirty;
    87 
    88     K32OPTIONS Options;
    89     K32OPTIONS NewOptions;
    90     K32STATUS  Status;
     90    HWND            hwnd;
     91    HWND            hwndNtbk;
     92    HAB             hab;
     93    BOOL            fDirty;
     94
     95    K32OPTIONS      Options;
     96    K32OPTIONS      NewOptions;
     97    K32STATUS       Status;
     98
     99    ULONG           idMemTimer;         /* The Timer ID of the MemInfo Refresh Timer. */
     100    K32SYSTEMMEMINFO MemInfo;           /* Current displayed meminfo. */
    91101
    92102    WIN32KCCPAGE    aPages[W32KCCPG_PAGES]; /* Array containing generic page info. */
     
    264274    {
    265275        /*
    266          * Sets the controls according to the data from win32k.
     276         * Initialize the controls and trigger a setcontrol event.
    267277         *
    268278         * mr:  Focus changed or not.
     
    318328                return FALSE;
    319329            }
     330
     331
     332            /*
     333             * Load and set accellerator table.
     334             */
     335            WinSetAccelTable(pThis->hab, WinLoadAccelTable(pThis->hab, NULLHANDLE, DL_WIN32KCC), hwnd);
    320336
    321337
     
    669685            WinSendMsg(hwnd, WM_COMMAND,
    670686                       MPFROMSHORT(DID_OK), MPFROM2SHORT(CMDSRC_MENU, FALSE));
    671             break;
     687            return NULL;
    672688
    673689
    674690        /*
    675691         * Window is destroyed (last message which ever should reach us!)
     692         *  -Free acceltable if present.
    676693         *  -Free instance data
    677694         *  -Set the instance data pointer to NULL (just in case).
     
    679696        case WM_DESTROY:
    680697        {
     698            HACCEL haccel = WinQueryAccelTable(pThis->hab, hwnd);
     699            if (haccel)
     700                WinDestroyAccelTable(haccel);
    681701            free(pThis);
    682702            WinSetWindowPtr(hwnd, QWL_USER, NULL);
     
    770790            return (MPARAM)TRUE;
    771791        }
     792
     793        case WM_TRANSLATEACCEL:
     794        {
     795            break;
     796        }
    772797    }
    773798
     
    805830    {
    806831        /*
    807          * Sets the controls according to the data from win32k.
     832         * Initialize controls.
    808833         *
    809834         * mr:  Focus changed or not.
     
    813838        case WM_INITDLG:
    814839        {
    815             pThis = (PWIN32KCC)mp2;
    816             if (!WinSetWindowPtr(hwnd, QWL_USER, pThis))
    817             {
    818                 /* complain, dismiss and return. */
    819                 Complain(hwnd, IDS_ERR_SET_INSTANCEDATA,
    820                          WinGetLastError(pThis->hab),
    821                          getLastErrorMsg(pThis->hab));
    822                 WinPostMsg(hwnd, WM_QUIT, NULL, NULL);
    823                 return FALSE;
    824             }
    825 
    826840            /*
    827841             * Initiate controls (ie. behaviour not data).
     
    11161130    {
    11171131        /*
    1118          * Sets the controls according to the data from win32k.
     1132         * Initialize controls.
    11191133         *
    11201134         * mr:  Focus changed or not.
     
    11241138        case WM_INITDLG:
    11251139        {
    1126             pThis = (PWIN32KCC)mp2;
    1127             if (!WinSetWindowPtr(hwnd, QWL_USER, pThis))
    1128             {
    1129                 /* complain, dismiss and return. */
    1130                 Complain(hwnd, IDS_ERR_SET_INSTANCEDATA,
    1131                          WinGetLastError(pThis->hab),
    1132                          getLastErrorMsg(pThis->hab));
    1133                 WinPostMsg(hwnd, WM_QUIT, NULL, NULL);
    1134                 return FALSE;
    1135             }
    1136 
    11371140            /*
    11381141             * Initiate controls (ie. behaviour not data).
     
    12971300            pThis->NewOptions.fDllFixes = WinSendDlgItemMsg(hwnd, CB_LDRFIX_DLLFIXES, BM_QUERYCHECK, NULL, NULL) != 0;
    12981301            pThis->NewOptions.fForcePreload = WinSendDlgItemMsg(hwnd, CB_LDRFIX_FORCEPRELOAD, BM_QUERYCHECK, NULL, NULL) != 0;
     1302            pThis->NewOptions.fExeFixes = pThis->Options.fExeFixes;
    12991303            return (MRESULT)TRUE;
    13001304        }
     
    13311335    {
    13321336        /*
    1333          * Sets the controls according to the data from win32k.
     1337         * Start timer.
    13341338         *
    13351339         * mr:  Focus changed or not.
     
    13391343        case WM_INITDLG:
    13401344        {
     1345            pThis = (PWIN32KCC)mp2;
    13411346            WinEnableWindow(WinWindowFromID(hwnd, TX_MEMINFO_PAGE_ENABLED), FALSE);
    1342             break;                      /* break, not return thru ntbk page default procedure. */
    1343         }
    1344 
    1345 
    1346         /*
    1347          * Gets data from win32k.
    1348          * Sets the controls according to the data from win32k.
     1347            pThis->idMemTimer = WinStartTimer(pThis->hab, hwnd, 42, 1000);
     1348            if (!pThis->idMemTimer)
     1349                Complain(hwnd, IDS_ERR_TIMER_START, WinGetLastError(pThis->hab), getLastErrorMsg(pThis->hab));
     1350            memset(&pThis->MemInfo, -1, sizeof(pThis->MemInfo)); /* Force update of everything. */
     1351            break;                      /* not return, break thru the ntbk page default procedure. */
     1352        }
     1353
     1354
     1355        /*
     1356         * We've started a timer for refreshing the memory data.
     1357         *
     1358         * mr:  reserved
     1359         * mp1: Id of the timer which is ticking.
     1360         * mp2: reserved
     1361         */
     1362        case WM_TIMER:
     1363        {
     1364            if ((ULONG)mp1 != pThis->idMemTimer)
     1365                return NULL;
     1366
     1367            /* intented fallthru to WM_SETCONTROLS */
     1368        }
     1369
     1370
     1371        /*
     1372         * Save old data.
     1373         * Gets system meminfo data from win32k.
     1374         * Updated changed values.
     1375         * Update pThis with new meminfo.
    13491376         *
    13501377         * mr:  reserved
     
    13551382        {
    13561383            K32SYSTEMMEMINFO    MemInfo;
     1384            K32SYSTEMMEMINFO    OldMemInfo;
    13571385            APIRET              rc;
    13581386
     1387            OldMemInfo = pThis->MemInfo;
    13591388            MemInfo.cb = sizeof(MemInfo);
    13601389            MemInfo.flFlags = 0;
     
    13621391            if (rc)
    13631392            {
     1393                WinStopTimer(pThis->hab, hwnd, pThis->idMemTimer);
    13641394                break;
    13651395            }
    13661396
    1367             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_SIZE       , "%d", MemInfo.cbSwapFileSize / 1024);
    1368             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_AVAIL      , "%d", MemInfo.cbSwapFileAvail / 1024);
    1369             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_USED       , "%d", MemInfo.cbSwapFileUsed / 1024);
    1370             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_MINFREE    , "%d", MemInfo.cbSwapFileMinFree / 1024);
    1371             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_CFG_MINFREE, "%d", MemInfo.cbSwapFileCFGMinFree / 1024);
    1372             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_CFG_SIZE   , "%d", MemInfo.cbSwapFileCFGSwapSize / 1024);
    1373             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_BROKEN_DFS , "%d", MemInfo.cSwapFileBrokenDF);
    1374             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_GROW_FAILS , "%d", MemInfo.cSwapFileGrowFails);
    1375             SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_DFS_IN_MEMFILE, "%d", MemInfo.cSwapFileInMemFile);
    1376 
    1377             SetDlgItemTextF(hwnd, TX_MEMINFO_PHYS_SIZE , "%d", MemInfo.cbPhysSize);
    1378             SetDlgItemTextF(hwnd, TX_MEMINFO_PHYS_AVAIL, "%d", MemInfo.cbPhysAvail);
    1379             SetDlgItemTextF(hwnd, TX_MEMINFO_PHYS_USED , "%d", MemInfo.cbPhysUsed);
    1380             WinSendDlgItemMsg(hwnd, TX_MEMINFO_PAGE_ENABLED, BM_SETCHECK, (MPARAM)MemInfo.fPagingSwapEnabled, NULL);
    1381             SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_FAULTS   , "%d", MemInfo.cPagingPageFaults);
    1382             SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_FAULTS_ACTIVE, "%d", MemInfo.cPagingPageFaultsActive);
    1383             SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_PHYSPAGES, "%d", MemInfo.cPagingPhysPages);
    1384             SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_RESPAGES , "%d", MemInfo.cPagingResidentPages);
    1385             SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_SWAPPAGES, "%d", MemInfo.cPagingSwappablePages);
    1386             SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_DISCPAGES, "%d", MemInfo.cPagingDiscardablePages);
    1387             SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_DISCINMEM, "%d", MemInfo.cPagingDiscardableInmem);
    1388 
    1389             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_ADDRESSLIMIT, "%08xh", MemInfo.ulAddressLimit);
    1390             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SHARED_MIN  , "%08xh", MemInfo.ulVMArenaSharedMin);
    1391             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SHARED_MAX  , "%08xh", MemInfo.ulVMArenaSharedMax);
    1392             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_PRIVATE_MAX , "%08xh", MemInfo.ulVMArenaPrivMax);
    1393             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SYSTEM_MIN  , "%08xh", MemInfo.ulVMArenaSystemMin);
    1394             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SYSTEM_MAX  , "%08xh", MemInfo.ulVMArenaSystemMax);
    1395             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_PRIVATE_HMAX, "%08xh", MemInfo.ulVMArenaHighPrivMax);
    1396             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SHARED_HMIN , "%08xh", MemInfo.ulVMArenaHighSharedMin);
    1397             SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SHARED_HMAX , "%08xh", MemInfo.ulVMArenaHighSharedMax);
    1398 
     1397            if (MemInfo.cbSwapFileSize != OldMemInfo.cbSwapFileSize)
     1398                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_SIZE       , "%d", MemInfo.cbSwapFileSize / 1024);
     1399            if (MemInfo.cbSwapFileAvail != OldMemInfo.cbSwapFileAvail)
     1400                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_AVAIL      , "%d", MemInfo.cbSwapFileAvail / 1024);
     1401            if (MemInfo.cbSwapFileUsed != OldMemInfo.cbSwapFileUsed)
     1402                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_USED       , "%d", MemInfo.cbSwapFileUsed / 1024);
     1403            if (MemInfo.cbSwapFileMinFree != OldMemInfo.cbSwapFileMinFree)
     1404                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_MINFREE    , "%d", MemInfo.cbSwapFileMinFree / 1024);
     1405            if (MemInfo.cbSwapFileCFGMinFree != OldMemInfo.cbSwapFileCFGMinFree)
     1406                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_CFG_MINFREE, "%d", MemInfo.cbSwapFileCFGMinFree / 1024);
     1407            if (MemInfo.cbSwapFileCFGSwapSize != OldMemInfo.cbSwapFileCFGSwapSize)
     1408                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_CFG_SIZE   , "%d", MemInfo.cbSwapFileCFGSwapSize / 1024);
     1409            if (MemInfo.cSwapFileBrokenDF != OldMemInfo.cSwapFileBrokenDF)
     1410                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_BROKEN_DFS , "%d", MemInfo.cSwapFileBrokenDF);
     1411            if (MemInfo.cSwapFileGrowFails != OldMemInfo.cSwapFileGrowFails)
     1412                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_GROW_FAILS , "%d", MemInfo.cSwapFileGrowFails);
     1413            if (MemInfo.cSwapFileInMemFile != OldMemInfo.cSwapFileInMemFile)
     1414                SetDlgItemTextF(hwnd, TX_MEMINFO_SWAP_DFS_IN_MEMFILE, "%d", MemInfo.cSwapFileInMemFile);
     1415
     1416            if (MemInfo.cbPhysSize != OldMemInfo.cbPhysSize)
     1417                SetDlgItemTextF(hwnd, TX_MEMINFO_PHYS_SIZE , "%d", MemInfo.cbPhysSize / 1024);
     1418            if (MemInfo.cbPhysAvail != OldMemInfo.cbPhysAvail)
     1419                SetDlgItemTextF(hwnd, TX_MEMINFO_PHYS_AVAIL, "%d", MemInfo.cbPhysAvail / 1024);
     1420            if (MemInfo.cbPhysUsed != OldMemInfo.cbPhysUsed)
     1421                SetDlgItemTextF(hwnd, TX_MEMINFO_PHYS_USED , "%d", MemInfo.cbPhysUsed / 1024);
     1422            if (MemInfo.fPagingSwapEnabled != OldMemInfo.fPagingSwapEnabled)
     1423                WinSendDlgItemMsg(hwnd, TX_MEMINFO_PAGE_ENABLED, BM_SETCHECK, (MPARAM)MemInfo.fPagingSwapEnabled, NULL);
     1424            if (MemInfo.cPagingPageFaults != OldMemInfo.cPagingPageFaults)
     1425                SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_FAULTS   , "%d", MemInfo.cPagingPageFaults);
     1426            if (MemInfo.cPagingPageFaultsActive != OldMemInfo.cPagingPageFaultsActive)
     1427                SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_FAULTS_ACTIVE, "%d", MemInfo.cPagingPageFaultsActive);
     1428            if (MemInfo.cPagingPhysPages != OldMemInfo.cPagingPhysPages)
     1429                SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_PHYSPAGES, "%d", MemInfo.cPagingPhysPages);
     1430            if (MemInfo.cPagingResidentPages != OldMemInfo.cPagingResidentPages)
     1431                SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_RESPAGES , "%d", MemInfo.cPagingResidentPages);
     1432            if (MemInfo.cPagingSwappablePages != OldMemInfo.cPagingSwappablePages)
     1433                SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_SWAPPAGES, "%d", MemInfo.cPagingSwappablePages);
     1434            if (MemInfo.cPagingDiscardablePages != OldMemInfo.cPagingDiscardablePages)
     1435                SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_DISCPAGES, "%d", MemInfo.cPagingDiscardablePages);
     1436            if (MemInfo.cPagingDiscardableInmem != OldMemInfo.cPagingDiscardableInmem)
     1437                SetDlgItemTextF(hwnd, TX_MEMINFO_PAGE_DISCINMEM, "%d", MemInfo.cPagingDiscardableInmem);
     1438
     1439            if (MemInfo.ulAddressLimit != OldMemInfo.ulAddressLimit)
     1440                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_ADDRESSLIMIT, "%08xh", MemInfo.ulAddressLimit);
     1441            if (MemInfo.ulVMArenaSharedMin != OldMemInfo.ulVMArenaSharedMin)
     1442                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SHARED_MIN  , "%08xh", MemInfo.ulVMArenaSharedMin);
     1443            if (MemInfo.ulVMArenaSharedMax != OldMemInfo.ulVMArenaSharedMax)
     1444                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SHARED_MAX  , "%08xh", MemInfo.ulVMArenaSharedMax);
     1445            if (MemInfo.ulVMArenaPrivMax != OldMemInfo.ulVMArenaPrivMax)
     1446                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_PRIVATE_MAX , "%08xh", MemInfo.ulVMArenaPrivMax);
     1447            if (MemInfo.ulVMArenaSystemMin != OldMemInfo.ulVMArenaSystemMin)
     1448                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SYSTEM_MIN  , "%08xh", MemInfo.ulVMArenaSystemMin);
     1449            if (MemInfo.ulVMArenaSystemMax != OldMemInfo.ulVMArenaSystemMax)
     1450                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SYSTEM_MAX  , "%08xh", MemInfo.ulVMArenaSystemMax);
     1451            if (MemInfo.ulVMArenaHighPrivMax != OldMemInfo.ulVMArenaHighPrivMax)
     1452                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_PRIVATE_HMAX, "%08xh", MemInfo.ulVMArenaHighPrivMax);
     1453            if (MemInfo.ulVMArenaHighSharedMin != OldMemInfo.ulVMArenaHighSharedMin)
     1454                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SHARED_HMIN , "%08xh", MemInfo.ulVMArenaHighSharedMin);
     1455            if (MemInfo.ulVMArenaHighSharedMax != OldMemInfo.ulVMArenaHighSharedMax)
     1456                SetDlgItemTextF(hwnd, TX_MEMINFO_VM_SHARED_HMAX , "%08xh", MemInfo.ulVMArenaHighSharedMax);
     1457
     1458            pThis->MemInfo = MemInfo;
    13991459            return NULL;
    14001460        }
     1461
     1462        /*
     1463         * Cleanup.
     1464         *
     1465         * mr:  reserved
     1466         * mp1: reserved
     1467         * mp2: reserved
     1468         */
     1469        case WM_DESTROY:
     1470        {
     1471            WinStopTimer(pThis->hab, hwnd, pThis->idMemTimer);
     1472            break;
     1473        }
     1474
    14011475    }
    14021476
     
    14371511                return FALSE;
    14381512            }
     1513
     1514            /*
     1515             * Install same acceltable as the notebook - Don't work.
     1516             */
     1517            WinSetAccelTable(pThis->hab, WinQueryAccelTable(pThis->hab, pThis->hwnd), hwnd);
    14391518            break;
    14401519        }
     
    14731552            return (MRESULT)TRUE;
    14741553        }
     1554
     1555
     1556        #if 0
     1557        /*
     1558         * Nice little hack to get global notebook accelerators to work.
     1559         *
     1560         * mr:
     1561         *
     1562         */
     1563        case WM_TRANSLATEACCEL:
     1564        {
     1565            static BOOL fSem = FALSE;
     1566            MRESULT     mr;
     1567            PWIN32KCC   pThis = (PWIN32KCC)WinQueryWindowPtr(hwnd, QWL_USER);
     1568            if (fSem || !pThis)
     1569                return FALSE;
     1570            fSem = TRUE;
     1571            mr = WinSendMsg(pThis->hwnd, msg, mp1, mp2);
     1572            fSem = FALSE;
     1573            return mr;
     1574        }
     1575        #endif
    14751576    }
    14761577
     
    17291830    }
    17301831
     1832    #pragma info(none)
    17311833    return (char*)(*pszStr != '\0' ? (const char*)pszStr - 1 : (const char*)NULL);
     1834    #pragma info(restore)
    17321835}
    17331836
Note: See TracChangeset for help on using the changeset viewer.