lvchk.c
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 2k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. /*
  2.  * lvchk - common dialog proc handler for check-listview pages
  3.  */
  4. #include "tweakui.h"
  5. #pragma BEGIN_CONST_DATA
  6. #pragma END_CONST_DATA
  7. /*****************************************************************************
  8.  *
  9.  *  Checklist_OnInitDialog
  10.  *
  11.  *  Walk the items that can live on the checklist.
  12.  *
  13.  *  If the item can't report its state, then don't put it on the list.
  14.  *
  15.  *****************************************************************************/
  16. void PASCAL
  17. Checklist_OnInitDialog(HWND hwnd, PCCHECKLISTITEM rgcli, int ccli,
  18.                        UINT ids, LPVOID pvRef)
  19. {
  20.     TCHAR tsz[MAX_PATH];
  21.     int dids;
  22.     for (dids = 0; dids < ccli; dids++) {
  23.         BOOL f = rgcli[dids].GetCheckValue(rgcli[dids].lParam, pvRef);
  24.         if (f >= 0) {
  25.             LoadString(hinstCur, ids+dids, tsz, cA(tsz));
  26.             LV_AddItem(hwnd, dids, tsz, -1, f);
  27.         }
  28.     }
  29. }
  30. /*****************************************************************************
  31.  *
  32.  *  Checklist_OnApply
  33.  *
  34.  *  Walk the items in the checklist and dork them if they have changed.
  35.  *
  36.  *****************************************************************************/
  37. void PASCAL
  38. Checklist_OnApply(HWND hdlg, PCCHECKLISTITEM rgcli, LPVOID pvRef)
  39. {
  40.     HWND hwnd = GetDlgItem(hdlg, IDC_ICONLV);
  41.     int cItems = ListView_GetItemCount(hwnd);
  42.     LV_ITEM lvi;
  43.     for (lvi.iItem = 0; lvi.iItem < cItems; lvi.iItem++) {
  44.         BOOL fNew, fOld;
  45.         lvi.stateMask = LVIS_STATEIMAGEMASK;
  46.         Misc_LV_GetItemInfo(hwnd, &lvi, lvi.iItem, LVIF_PARAM | LVIF_STATE);
  47.         fNew = LV_IsChecked(&lvi);
  48.         fOld = rgcli[lvi.lParam].GetCheckValue(rgcli[lvi.lParam].lParam,
  49.                                                pvRef);
  50.         if (fOld >= 0 && fNew != fOld) {
  51.             rgcli[lvi.lParam].SetCheckValue(fNew, rgcli[lvi.lParam].lParam,
  52.                                             pvRef);
  53.         }
  54.     }
  55. }