/*++ Copyright (c) 1990-2003 Microsoft Corporation All Rights Reserved Module Name: cpsuidat.c Abstract: This module contains all the predefined data --*/ #include "precomp.h" #pragma hdrstop #define DBG_CPSUIFILENAME DbgTVPage #define DBG_TVTESTCB 0x00000001 #define DBG_PUSHDLGPROC 0x00000002 DEFINE_DBGVAR(0); #define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0])) HINSTANCE hInstApp = NULL; TCHAR TitleName[] = TEXT("Common Property Sheet UI Sample"); TCHAR ClassName[] = TEXT("CPSUISampleClass"); TCHAR MenuName[] = TEXT("CPSUISampleMenu"); TCHAR OptItemName[] = TEXT("CPSUI TreeView Sample"); TCHAR szWinSpool[] = TEXT("WinSpool.Drv"); CHAR szDocPropSheets[] = "DocumentPropertySheets"; BOOL UpdatePermission = TRUE; BOOL UseStdAbout = TRUE; INT_PTR CALLBACK PushButtonProc( HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam ); CPSUICALLBACK TVTestCallBack( PCPSUICBPARAM pCPSUICBParam ); OPTPARAM NoYesOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style (LPTSTR)IDS_CPSUI_NO, // pData IDI_CPSUI_NO, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style (LPTSTR)IDS_CPSUI_YES, // pData IDI_CPSUI_YES, // IconID 1 // lParam } }; EXTCHKBOX ECB_EP_ECB = { sizeof(EXTCHKBOX), 0, TEXT("Include Icon"), (LPTSTR)IDS_CPSUI_SLASH_SEP, TEXT("Icon"), IDI_CPSUI_GRAPHIC }; OPTPARAM ECB_EP_OP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("None"), // pData IDI_CPSUI_EMPTY, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("Extended CheckBox"), // pData IDI_CPSUI_EMPTY, // IconID 1 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("Extended Push"), // pData IDI_CPSUI_EMPTY, // IconID 0 // lParam } }; OPTTYPE ECB_EP_OT = { sizeof(OPTTYPE), // cbSize TVOT_3STATES, // Type 0, // Flags OPTTF_xxxx 3, // Count 0, // BegCtrlID ECB_EP_OP, // pOptParam 0 // Style, OTS_xxxx }; OPTTYPE NoYesOT = { sizeof(OPTTYPE), // cbSize TVOT_2STATES, // Type 0, // Flags OPTTF_xxxx 2, // Count 0, // BegCtrlID NoYesOP, // pOptParam 0 // Style, OTS_xxxx }; OPTPARAM TVOT3StatesOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("States 1"), // pData IDI_CPSUI_PORTRAIT, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("States 2"), // pData IDI_CPSUI_LANDSCAPE, // IconID 1 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("States 3"), // pData IDI_CPSUI_ROT_LAND, // IconID 0 // lParam } }; OPTTYPE TVOT2StatesOT = { sizeof(OPTTYPE), // cbSize TVOT_2STATES, // Type 0, // Flags OPTTF_xxxx 2, // Count 0, // BegCtrlID TVOT3StatesOP, // pOptParam 0 // Style, OTS_xxxx }; OPTTYPE TVOT3StatesOT = { sizeof(OPTTYPE), // cbSize TVOT_3STATES, // Type 0, // Flags OPTTF_xxxx 3, // Count 0, // BegCtrlID TVOT3StatesOP, // pOptParam 0 // Style, OTS_xxxx }; OPTPARAM MinRangeOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT(""), // pData (postfix) IDI_CPSUI_EMPTY, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style NULL, // pData (help line) (DWORD)MIN_INT, // IconID MAX_INT // lParam } }; OPTTYPE MinRangeOT = { sizeof(OPTTYPE), // cbSize TVOT_UDARROW, // Type 0, // Flags OPTTF_xxxx 2, // Count 0, // BegCtrlID MinRangeOP, // pOptParam 0 // Style, OTS_xxxx }; OPTPARAM MaxRangeOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT(""), // pData (postfix) IDI_CPSUI_EMPTY, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style NULL, // pData (help line) (DWORD)MIN_INT, // IconID MAX_INT // lParam } }; OPTTYPE MaxRangeOT = { sizeof(OPTTYPE), // cbSize TVOT_UDARROW, // Type 0, // Flags OPTTF_xxxx 2, // Count 0, // BegCtrlID MaxRangeOP, // pOptParam 0 // Style, OTS_xxxx }; OPTPARAM MinMaxRangeOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("%"), // pData (postfix) IDI_CPSUI_SCALING, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style NULL, // pData (help line) (DWORD)MIN_INT, // IconID MAX_INT // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style NULL, // pData (help line) 2, // IconID 50 // lParam } }; OPTTYPE TVOTUDArrowOT = { sizeof(OPTTYPE), // cbSize TVOT_UDARROW, // Type 0, // Flags OPTTF_xxxx 2, // Count 0, // BegCtrlID MinMaxRangeOP, // pOptParam 0 // Style, OTS_xxxx }; OPTTYPE TVOTTrackBarOT = { sizeof(OPTTYPE), // cbSize TVOT_TRACKBAR, // Type 0, // Flags OPTTF_xxxx 3, // Count 0, // BegCtrlID MinMaxRangeOP, // pOptParam 0 // Style, OTS_xxxx }; OPTTYPE TVOTScrollBarOT = { sizeof(OPTTYPE), // cbSize TVOT_SCROLLBAR, // Type 0, // Flags OPTTF_xxxx 3, // Count 0, // BegCtrlID MinMaxRangeOP, // pOptParam 0 // Style, OTS_xxxx }; OPTPARAM TVOTLBCBOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style (LPTSTR)IDS_CPSUI_NOTINSTALLED, // pData IDI_CPSUI_SEL_NONE, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT(" 1 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT(" 2 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT(" 4 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT(" 6 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT(" 8 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("10 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("12 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("14 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("16 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("18 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("20 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("24 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("32 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("48 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("64 MB"), // pData IDI_CPSUI_MEM, // IconID 0 // lParam }, }; OPTTYPE TVOTListBoxOT = { sizeof(OPTTYPE), // cbSize TVOT_LISTBOX, // Type 0, // Flags OPTTF_xxxx COUNT_ARRAY(TVOTLBCBOP), // Count 0, // BegCtrlID TVOTLBCBOP, // pOptParam 0 // Style, OTS_xxxx }; OPTTYPE TVOTComboBoxOT = { sizeof(OPTTYPE), // cbSize TVOT_COMBOBOX, // Type 0, // Flags OPTTF_xxxx COUNT_ARRAY(TVOTLBCBOP), // Count 0, // BegCtrlID TVOTLBCBOP, // pOptParam 0 // Style, OTS_xxxx }; TCHAR TVOTEditBoxBuf[128] = TEXT("Confidential"); OPTPARAM TVOTEditBoxOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("*Mark*"), // pData IDI_CPSUI_WATERMARK, // IconID 0 // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("Type in WaterMark text"), // pData COUNT_ARRAY(TVOTEditBoxBuf), // IconID 0 // lParam } }; OPTTYPE TVOTEditBoxOT = { sizeof(OPTTYPE), // cbSize TVOT_EDITBOX, // Type 0, // Flags OPTTF_xxxx 2, // Count 0, // BegCtrlID TVOTEditBoxOP, // pOptParam 0 // Style, OTS_xxxx }; OPTPARAM TVOTPushButtonOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx PUSHBUTTON_TYPE_DLGPROC, // style (LPTSTR)PushButtonProc, // pData IDI_CPSUI_RUN_DIALOG, // IconID PUSHBUTTON_DLG // lParam } }; OPTTYPE TVOTPushButtonOT = { sizeof(OPTTYPE), // cbSize TVOT_PUSHBUTTON, // Type 0, // Flags OPTTF_xxxx 1, // Count 0, // BegCtrlID TVOTPushButtonOP, // pOptParam 0 // Style, OTS_xxxx }; OPTPARAM TVOTChkBoxOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx CHKBOXS_FALSE_TRUE, // style TEXT("Let's do it!"), // pData IDI_CPSUI_TELEPHONE, // IconID 0 // lParam } }; OPTTYPE TVOTChkBoxOT = { sizeof(OPTTYPE), // cbSize TVOT_CHKBOX, // Type 0, // Flags OPTTF_xxxx 1, // Count 0, // BegCtrlID TVOTChkBoxOP, // pOptParam 0 // Style, OTS_xxxx }; OPTPARAM ChkBoxTypeOP[] = { { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("CHKBOXS_FALSE_TRUE"), // pData IDI_CPSUI_EMPTY, // IconID CHKBOXS_FALSE_TRUE // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("CHKBOXS_NO_YES"), // pData IDI_CPSUI_EMPTY, // IconID CHKBOXS_NO_YES // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("CHKBOXS_OFF_ON"), // pData IDI_CPSUI_EMPTY, // IconID CHKBOXS_OFF_ON // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("CHKBOXS_FALSE_PDATA"), // pData IDI_CPSUI_EMPTY, // IconID CHKBOXS_FALSE_PDATA // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("CHKBOXS_NO_PDATA"), // pData IDI_CPSUI_EMPTY, // IconID CHKBOXS_NO_PDATA // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("CHKBOXS_OFF_PDATA"), // pData IDI_CPSUI_EMPTY, // IconID CHKBOXS_OFF_PDATA // lParam }, { sizeof(OPTPARAM), // cbSize 0, // OPTPF_xxx 0, // style TEXT("CHKBOXS_NONE_PDATA"), // pData IDI_CPSUI_EMPTY, // IconID CHKBOXS_NONE_PDATA // lParam } }; OPTTYPE ChkBoxTypeOT = { sizeof(OPTTYPE), // cbSize TVOT_LISTBOX, // Type 0, // Flags OPTTF_xxxx COUNT_ARRAY(ChkBoxTypeOP), // Count 0, // BegCtrlID ChkBoxTypeOP, // pOptParam 0 // Style, OTS_xxxx }; EXTCHKBOX TV_ECB = { sizeof(EXTCHKBOX), ECBF_OVERLAY_WARNING_ICON, TEXT("Extended CheckBox Test"), (LPTSTR)IDS_CPSUI_SLASH_SEP, TEXT("Got Checked!!!"), IDI_APPLE }; EXTPUSH TV_EP = { sizeof(EXTPUSH), 0, TEXT("Extended Push Test"), NULL, //DLGPROC IDI_APPLE, 0 }; OPTITEM TVTestOptItems[] = { { sizeof(OPTITEM), LEVEL_0, 0, OPTIF_NONE, 0, (LPTSTR)TEXT("TreeView Test"), IDI_CPSUI_QUESTION, NULL, NULL, 0, DMPUB_TVTEST }, { sizeof(OPTITEM), LEVEL_1, 0, OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("CPSUI Options"), 0, NULL, NULL, 0, DMPUB_TVOPT }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Extended Type"), 0, &ECB_EP_ECB, &ECB_EP_OT, 0, DMPUB_TVOPT_ECB_EP }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Disabled Extended"), 0, NULL, &NoYesOT, 0, DMPUB_EXT_DISABLED }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Overlay 'Warning' Icon"), 0, NULL, &NoYesOT, 0, DMPUB_EXT_OVERLAY_WARNING }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Overlay 'Stop' Icon"), 0, NULL, &NoYesOT, 0, DMPUB_EXT_OVERLAY_STOP }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Overlay 'No' Icon"), 0, NULL, &NoYesOT, 0, DMPUB_EXT_OVERLAY_NO }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("OptItem/OptType"), 0, NULL, NULL, 0, DMPUB_TVOPT }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Disabled OptType"), 0, NULL, &NoYesOT, 0, DMPUB_TVOPT_DISABLED }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Overlay 'Warning' Icon"), 0, NULL, &NoYesOT, 0, DMPUB_TVOPT_OVERLAY_WARNING }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Overlay 'Stop' Icon"), 0, NULL, &NoYesOT, 0, DMPUB_TVOPT_OVERLAY_STOP }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Overlay 'No' Icon"), 0, NULL, &NoYesOT, 0, DMPUB_TVOPT_OVERLAY_NO }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("ScrollBar/TrackBar Ranges"), 0, NULL, NULL, 0, DMPUB_TVOPT }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, TEXT("Min Range"), MIN_INT, NULL, &MinRangeOT, 0, DMPUB_MINRANGE }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, TEXT("Max. Range"), MAX_INT, NULL, &MaxRangeOT, 0, DMPUB_MAXRANGE }, { sizeof(OPTITEM), LEVEL_1, 0, OPTIF_NONE, 0, TEXT("TVOT Test"), IDI_CPSUI_QUESTION, NULL, NULL, 0, DMPUB_TVOPT_TEST }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, (LPTSTR)TEXT("TVOT_2STATES"), 0, NULL, &TVOT2StatesOT, 0, DMPUB_2STATES }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_3STATES"), 0, NULL, &TVOT3StatesOT, 0, DMPUB_3STATES }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_UDARROW"), 55, NULL, &TVOTUDArrowOT, 0, DMPUB_UDARROW }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_TRACKBAR"), 100, NULL, &TVOTTrackBarOT, 0, DMPUB_TRACKBAR }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_SCROLLBAR"), 210, NULL, &TVOTScrollBarOT, 0, DMPUB_SCROLLBAR }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_LISTBOX"), 2, NULL, &TVOTListBoxOT, 0, DMPUB_LISTBOX }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Include 16x16 Icons"), 1, NULL, &NoYesOT, 0, DMPUB_TVOPT_ICONS }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_COMBOBOX"), 4, NULL, &TVOTComboBoxOT, 0, DMPUB_COMBOBOX }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK | OPTIF_COLLAPSE, 0, (LPTSTR)TEXT("Include 16x16 Icons"), 1, NULL, &NoYesOT, 0, DMPUB_TVOPT_ICONS }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_EDITBOX"), 0, NULL, // fill in TVOTEditBoxBuf later &TVOTEditBoxOT, 0, DMPUB_EDITBOX }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_PUSHBUTTON"), 0, NULL, &TVOTPushButtonOT, 0, DMPUB_PUSHBUTTON }, { sizeof(OPTITEM), LEVEL_2, 0, OPTIF_CALLBACK, 0, TEXT("TVOT_CHKBOX"), 0, NULL, &TVOTChkBoxOT, 0, DMPUB_CHKBOX }, { sizeof(OPTITEM), LEVEL_3, 0, OPTIF_CALLBACK, 0, TEXT("CheckBox Type"), 0, NULL, &ChkBoxTypeOT, 0, DMPUB_CHKBOX_TYPE } }; INT_PTR CALLBACK PushButtonProc( HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam ) { switch (Msg) { case WM_INITDIALOG: /* message: initialize dialog box */ CPSUIDBG(DBG_PUSHDLGPROC, ("PushButtonProc lParam=%s", (LPSTR)lParam)); break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: case IDCANCEL: EndDialog(hDlg, (BOOL)(LOWORD(wParam) == IDOK)); return(TRUE); } } return(FALSE); } INT_PTR APIENTRY MyAboutProc( HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam ) /*++ Routine Description: This is the about... callback which pop up appliation's own about --*/ { PCOMPROPSHEETUI pCPSUI; TCHAR Buf[128]; switch (Msg) { case WM_INITDIALOG: /* message: initialize dialog box */ pCPSUI = (PCOMPROPSHEETUI)lParam; StringCchPrintf(Buf, ARRAYSIZE(Buf), TEXT("About %s"), pCPSUI->pCallerName); SetWindowText(hDlg, Buf); StringCchPrintf(Buf, ARRAYSIZE(Buf), TEXT("%s Version %u.%u"), pCPSUI->pCallerName, (UINT)HIBYTE(pCPSUI->CallerVersion), (UINT)LOBYTE(pCPSUI->CallerVersion)); SetDlgItemText(hDlg, IDD_ABOUT1, Buf); StringCchPrintf(Buf, ARRAYSIZE(Buf), TEXT("%s Version %u.%u"), pCPSUI->pOptItemName, (UINT)HIBYTE(pCPSUI->OptItemVersion), (UINT)LOBYTE(pCPSUI->OptItemVersion)); SetDlgItemText(hDlg, IDD_ABOUT2, Buf); break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: case IDCANCEL: EndDialog(hDlg, (BOOL)(LOWORD(wParam) == IDOK)); return(TRUE); } } return (FALSE); } POPTITEM FindOptItem( POPTITEM pOptItem, UINT cOptItem, BYTE DMPubID ) { while (cOptItem--) { if (pOptItem->DMPubID == DMPubID) { return(pOptItem); } ++pOptItem; } return(NULL); } CPSUICALLBACK TVTestCallBack( PCPSUICBPARAM pCPSUICBParam ) { POPTITEM pCurItem = pCPSUICBParam->pCurItem; POPTITEM pItem; BYTE DMPubID; BYTE Flags; LONG Sel; LONG Action = CPSUICB_ACTION_NONE; DMPubID = pCurItem->DMPubID; Sel = pCurItem->Sel; switch (pCPSUICBParam->Reason) { case CPSUICB_REASON_OPTITEM_SETFOCUS: CPSUIDBG(DBG_TVTESTCB, ("Got OPTITEM_SETFOCUS CallBack now")); switch (DMPubID) { case DMPUB_MINRANGE: if (pItem = FindOptItem(pCPSUICBParam->pOptItem, pCPSUICBParam->cOptItem, DMPUB_MAXRANGE)) { pCurItem->pOptType->pOptParam[1].lParam = (LONG)pItem->Sel; } break; case DMPUB_MAXRANGE: if (pItem = FindOptItem(pCPSUICBParam->pOptItem, pCPSUICBParam->cOptItem, DMPUB_MINRANGE)) { pCurItem->pOptType->pOptParam[1].IconID = (DWORD)pItem->Sel; } break; } break; case CPSUICB_REASON_ABOUT: DialogBoxParam(hInstApp, MAKEINTRESOURCE(DLGABOUT), pCPSUICBParam->hDlg, MyAboutProc, (LPARAM)(pCPSUICBParam->pOldSel)); break; case CPSUICB_REASON_ECB_CHANGED: CPSUIDBG(DBG_TVTESTCB, ("Got ECB_CHANGED CallBack now")); switch (DMPubID) { case DMPUB_TVOPT_ECB_EP: if (pCurItem->Flags & OPTIF_ECB_CHECKED) { TV_EP.IconID = TV_ECB.IconID = IDI_APPLE; } else { TV_EP.IconID = TV_ECB.IconID = 0; } Action = CPSUICB_ACTION_OPTIF_CHANGED; break; default: break; } break; case CPSUICB_REASON_SEL_CHANGED: CPSUIDBG(DBG_TVTESTCB, ("Got SEL_CHANGED CallBack now")); switch (DMPubID) { case DMPUB_CHKBOX_TYPE: if (pItem = FindOptItem(pCPSUICBParam->pOptItem, pCPSUICBParam->cOptItem, DMPUB_CHKBOX)) { pItem->pOptType->pOptParam[0].Style = (BYTE)pCurItem->Sel; pItem->Flags |= OPTIF_CHANGED; Action = CPSUICB_ACTION_OPTIF_CHANGED; } break; case DMPUB_TVOPT_ICONS: pItem = pCurItem - 1; if (Sel) { pItem->pOptType->Style &= ~OTS_LBCB_NO_ICON16_IN_ITEM; } else { pItem->pOptType->Style |= OTS_LBCB_NO_ICON16_IN_ITEM; } break; case DMPUB_EXT_OVERLAY_WARNING: if (Sel) { TV_EP.Flags |= EPF_OVERLAY_WARNING_ICON; TV_ECB.Flags |= ECBF_OVERLAY_WARNING_ICON; } else { TV_EP.Flags &= ~EPF_OVERLAY_WARNING_ICON; TV_ECB.Flags &= ~ECBF_OVERLAY_WARNING_ICON; } break; case DMPUB_EXT_OVERLAY_STOP: if (Sel) { TV_EP.Flags |= EPF_OVERLAY_STOP_ICON; TV_ECB.Flags |= ECBF_OVERLAY_STOP_ICON; } else { TV_EP.Flags &= ~EPF_OVERLAY_STOP_ICON; TV_ECB.Flags &= ~ECBF_OVERLAY_STOP_ICON; } break; case DMPUB_EXT_OVERLAY_NO: if (Sel) { TV_EP.Flags |= EPF_OVERLAY_NO_ICON; TV_ECB.Flags |= ECBF_OVERLAY_NO_ICON; } else { TV_EP.Flags &= ~EPF_OVERLAY_NO_ICON; TV_ECB.Flags &= ~ECBF_OVERLAY_NO_ICON; } break; case DMPUB_MINRANGE: MinMaxRangeOP[1].IconID = (DWORD)Sel; break; case DMPUB_MAXRANGE: MinMaxRangeOP[1].lParam = (LONG)Sel; break; case DMPUB_TVOPT_OVERLAY_WARNING: case DMPUB_TVOPT_OVERLAY_STOP: case DMPUB_TVOPT_OVERLAY_NO: Action = CPSUICB_ACTION_REINIT_ITEMS; case DMPUB_TVOPT_ECB_EP: if (Sel) { pCurItem->Flags &= ~OPTIF_EXT_DISABLED; } else { pCurItem->Flags |= OPTIF_EXT_DISABLED; } pCurItem->Flags |= OPTIF_CHANGED; Action = CPSUICB_ACTION_OPTIF_CHANGED; // // Fall through // case DMPUB_TVOPT_DISABLED: case DMPUB_EXT_DISABLED: if (pItem = FindOptItem(pCPSUICBParam->pOptItem, pCPSUICBParam->cOptItem, DMPUB_2STATES)) { do { if ((pItem->DMPubID >= DMPUB_2STATES) && (pItem->DMPubID <= DMPUB_CHKBOX)) { switch (DMPubID) { case DMPUB_TVOPT_OVERLAY_WARNING: if (Sel) { pItem->Flags |= OPTIF_OVERLAY_WARNING_ICON; } else { pItem->Flags &= ~OPTIF_OVERLAY_WARNING_ICON; } break; case DMPUB_TVOPT_OVERLAY_STOP: if (Sel) { pItem->Flags |= OPTIF_OVERLAY_STOP_ICON; } else { pItem->Flags &= ~OPTIF_OVERLAY_STOP_ICON; } break; case DMPUB_TVOPT_OVERLAY_NO: if (Sel) { pItem->Flags |= OPTIF_OVERLAY_NO_ICON; } else { pItem->Flags &= ~OPTIF_OVERLAY_NO_ICON; } break; case DMPUB_TVOPT_DISABLED: if (Sel) { pItem->pOptType->Flags |= OPTTF_TYPE_DISABLED; } else { pItem->pOptType->Flags &= ~OPTTF_TYPE_DISABLED; } break; case DMPUB_EXT_DISABLED: if (Sel) { pItem->Flags |= OPTIF_EXT_DISABLED; } else { pItem->Flags &= ~OPTIF_EXT_DISABLED; } break; case DMPUB_TVOPT_ECB_EP: switch (Sel) { case 0: pItem->Flags |= OPTIF_EXT_HIDE; break; case 1: pItem->Flags &= ~(OPTIF_EXT_HIDE | OPTIF_EXT_IS_EXTPUSH); pItem->pExtChkBox = &TV_ECB; break; case 2: pItem->Flags &= ~OPTIF_EXT_HIDE; pItem->Flags |= OPTIF_EXT_IS_EXTPUSH; pItem->pExtPush = &TV_EP; break; } } } pItem->Flags |= OPTIF_CHANGED; } while ((pItem++)->DMPubID != DMPUB_CHKBOX); } break; default: break; } break; case CPSUICB_REASON_PUSHBUTTON: CPSUIDBG(DBG_TVTESTCB, ("Got PUSH Button CallBack now")); break; case CPSUICB_REASON_EXTPUSH: DialogBoxParam(hInstApp, MAKEINTRESOURCE(EXTPUSH_DLG), pCPSUICBParam->hDlg, PushButtonProc, (LPARAM)(pCPSUICBParam->pOldSel)); break; default: break; } return(Action); } BOOL SetupComPropSheetUI( PCOMPROPSHEETUI pCPSUI ) { static BOOL UpdateEditBox = TRUE; UINT i; ZeroMemory(pCPSUI, sizeof(COMPROPSHEETUI)); pCPSUI->cbSize = sizeof(COMPROPSHEETUI); pCPSUI->hInstCaller = hInstApp; pCPSUI->pCallerName = (LPTSTR)TitleName; pCPSUI->CallerVersion = 0x100; pCPSUI->pOptItemName = (LPTSTR)OptItemName; pCPSUI->OptItemVersion = 0x400; pCPSUI->UserData = (ULONG_PTR)pCPSUI; pCPSUI->pHelpFile = (LPTSTR)TEXT("CPSUISam.hlp"); pCPSUI->pfnCallBack = TVTestCallBack; pCPSUI->pOptItem = TVTestOptItems; pCPSUI->cOptItem = COUNT_ARRAY(TVTestOptItems); pCPSUI->Flags = 0; pCPSUI->pDlgPage = CPSUI_PDLGPAGE_TREEVIWONLY; pCPSUI->cDlgPage = 0; if (UpdateEditBox) { // // Fixup compiler warning for the LPSTR and LONG // for (i = 0; i < COUNT_ARRAY(TVTestOptItems); i++) { if (TVTestOptItems[i].DMPubID == DMPUB_EDITBOX) { TVTestOptItems[i].pSel = (LPTSTR)TVOTEditBoxBuf; UpdateEditBox = FALSE; break; } } } if (UpdatePermission) { pCPSUI->Flags |= CPSUIF_UPDATE_PERMISSION; } if (!UseStdAbout) { pCPSUI->Flags |= CPSUIF_ABOUT_CALLBACK; } return(TRUE); }