ReactOS 0.4.15-dev-7842-g558ab78
view.cpp File Reference
#include "precomp.h"
Include dependency graph for view.cpp:

Go to the source code of this file.

Classes

struct  VIEWTREE_ICON
 
struct  VIEWTREE_ENTRY
 

Macros

#define I_CHECKED   0
 
#define I_UNCHECKED   1
 
#define I_CHECKED_DISABLED   2
 
#define I_UNCHECKED_DISABLED   3
 
#define I_RADIO_CHECKED   4
 
#define I_RADIO_UNCHECKED   5
 
#define I_RADIO_CHECKED_DISABLED   6
 
#define I_RADIO_UNCHECKED_DISABLED   7
 
#define PREDEFINED_ICON_COUNT   8
 

Typedefs

typedef struct VIEWTREE_ICON VIEWTREE_ICON
 
typedef struct VIEWTREE_ICONPVIEWTREE_ICON
 
typedef enum VIEWTREE_ENTRY_TYPE VIEWTREE_ENTRY_TYPE
 
typedef enum VIEWTREE_ENTRY_TYPEPVIEWTREE_ENTRY_TYPE
 
typedef struct VIEWTREE_ENTRY VIEWTREE_ENTRY
 
typedef struct VIEWTREE_ENTRYPVIEWTREE_ENTRY
 

Enumerations

enum  VIEWTREE_ENTRY_TYPE { AETYPE_GROUP , AETYPE_CHECKBOX , AETYPE_RADIO }
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (fprop)
 
static INT ViewTree_FindIcon (LPCWSTR pszPath, UINT nIconIndex)
 
static INT ViewTree_AddIcon (LPCWSTR pszPath, UINT nIconIndex)
 
static PVIEWTREE_ENTRY ViewTree_GetItem (DWORD dwID)
 
static INT ViewTree_GetImage (PVIEWTREE_ENTRY pEntry)
 
static VOID ViewTree_InsertEntry (HWND hwndTreeView, PVIEWTREE_ENTRY pEntry)
 
static VOID ViewTree_InsertAll (HWND hwndTreeView)
 
static BOOL ViewTree_LoadTree (HKEY hKey, LPCWSTR pszKeyName, DWORD dwParentID)
 
static BOOL ViewTree_LoadAll (VOID)
 
static int ViewTree_Compare (const void *x, const void *y)
 
static VOID ViewTree_SortAll (VOID)
 
static BOOL ViewDlg_OnInitDialog (HWND hwndDlg)
 
static BOOL ViewDlg_ToggleCheckItem (HWND hwndDlg, HTREEITEM hItem)
 
static VOID ViewDlg_OnTreeViewClick (HWND hwndDlg)
 
static void ViewDlg_OnTreeViewKeyDown (HWND hwndDlg, TV_KEYDOWN *KeyDown)
 
static INT_PTR ViewDlg_OnTreeCustomDraw (HWND hwndDlg, NMTVCUSTOMDRAW *Draw)
 
static VOID ViewDlg_RestoreDefaults (HWND hwndDlg)
 
static VOID ScanAdvancedSettings (SHELLSTATE *pSS, DWORD *pdwMask)
 
static BOOL CALLBACK RefreshBrowsersCallback (HWND hWnd, LPARAM msg)
 
static VOID ViewDlg_Apply (HWND hwndDlg)
 
INT_PTR CALLBACK FolderOptionsViewDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 

Variables

static PVIEWTREE_ENTRY s_ViewTreeEntries = NULL
 
static INT s_ViewTreeEntryCount = 0
 
static PVIEWTREE_ICON s_ViewTreeIcons = NULL
 
static INT s_ViewTreeIconCount = 0
 
static HIMAGELIST s_hTreeImageList = NULL
 
static HIMAGELIST ViewDlg_CreateTreeImageList (VOID)
 

Macro Definition Documentation

◆ I_CHECKED

#define I_CHECKED   0

Definition at line 30 of file view.cpp.

◆ I_CHECKED_DISABLED

#define I_CHECKED_DISABLED   2

Definition at line 32 of file view.cpp.

◆ I_RADIO_CHECKED

#define I_RADIO_CHECKED   4

Definition at line 34 of file view.cpp.

◆ I_RADIO_CHECKED_DISABLED

#define I_RADIO_CHECKED_DISABLED   6

Definition at line 36 of file view.cpp.

◆ I_RADIO_UNCHECKED

#define I_RADIO_UNCHECKED   5

Definition at line 35 of file view.cpp.

◆ I_RADIO_UNCHECKED_DISABLED

#define I_RADIO_UNCHECKED_DISABLED   7

Definition at line 37 of file view.cpp.

◆ I_UNCHECKED

#define I_UNCHECKED   1

Definition at line 31 of file view.cpp.

◆ I_UNCHECKED_DISABLED

#define I_UNCHECKED_DISABLED   3

Definition at line 33 of file view.cpp.

◆ PREDEFINED_ICON_COUNT

#define PREDEFINED_ICON_COUNT   8

Definition at line 38 of file view.cpp.

Typedef Documentation

◆ PVIEWTREE_ENTRY

◆ PVIEWTREE_ENTRY_TYPE

◆ PVIEWTREE_ICON

◆ VIEWTREE_ENTRY

◆ VIEWTREE_ENTRY_TYPE

◆ VIEWTREE_ICON

Enumeration Type Documentation

◆ VIEWTREE_ENTRY_TYPE

Enumerator
AETYPE_GROUP 
AETYPE_CHECKBOX 
AETYPE_RADIO 

Definition at line 48 of file view.cpp.

49{
VIEWTREE_ENTRY_TYPE
Definition: view.cpp:49
@ AETYPE_GROUP
Definition: view.cpp:50
@ AETYPE_CHECKBOX
Definition: view.cpp:51
@ AETYPE_RADIO
Definition: view.cpp:52
enum VIEWTREE_ENTRY_TYPE * PVIEWTREE_ENTRY_TYPE

Function Documentation

◆ FolderOptionsViewDlg()

INT_PTR CALLBACK FolderOptionsViewDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 932 of file view.cpp.

937{
940
941 switch (uMsg)
942 {
943 case WM_INITDIALOG:
944 return ViewDlg_OnInitDialog(hwndDlg);
945
946 case WM_COMMAND:
947 switch (LOWORD(wParam))
948 {
949 case IDC_VIEW_RESTORE_DEFAULTS: // Restore Defaults
951 break;
952 }
953 break;
954
955 case WM_NOTIFY:
956 switch (LPNMHDR(lParam)->code)
957 {
958 case NM_CLICK: // clicked on treeview
960 break;
961
962 case NM_CUSTOMDRAW: // custom draw (for graying)
966 return Result;
967
968 case TVN_KEYDOWN: // key is down
970 break;
971
972 case PSN_APPLY: // [Apply] is clicked
973 ViewDlg_Apply(hwndDlg);
974 break;
975
976 default:
977 break;
978 }
979 break;
980 }
981
982 return FALSE;
983}
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define FALSE
Definition: types.h:117
void Draw(HDC aDc)
Definition: magnifier.c:359
#define LOWORD(l)
Definition: pedump.c:82
#define PSN_APPLY
Definition: prsht.h:117
#define TVN_KEYDOWN
Definition: commctrl.h:3713
#define NM_CLICK
Definition: commctrl.h:130
#define NM_CUSTOMDRAW
Definition: commctrl.h:137
#define TV_KEYDOWN
Definition: commctrl.h:3722
#define WM_NOTIFY
Definition: richedit.h:61
#define IDC_VIEW_RESTORE_DEFAULTS
Definition: shresdef.h:504
Definition: inflate.c:139
#define SetWindowLongPtr
Definition: treelist.c:70
int32_t INT_PTR
Definition: typedefs.h:64
static void ViewDlg_OnTreeViewKeyDown(HWND hwndDlg, TV_KEYDOWN *KeyDown)
Definition: view.cpp:718
static VOID ViewDlg_RestoreDefaults(HWND hwndDlg)
Definition: view.cpp:764
static BOOL ViewDlg_OnInitDialog(HWND hwndDlg)
Definition: view.cpp:621
static INT_PTR ViewDlg_OnTreeCustomDraw(HWND hwndDlg, NMTVCUSTOMDRAW *Draw)
Definition: view.cpp:734
static VOID ViewDlg_Apply(HWND hwndDlg)
Definition: view.cpp:869
static VOID ViewDlg_OnTreeViewClick(HWND hwndDlg)
Definition: view.cpp:696
#define WM_COMMAND
Definition: winuser.h:1740
#define WM_INITDIALOG
Definition: winuser.h:1739
struct tagNMHDR * LPNMHDR
#define DWLP_MSGRESULT
Definition: winuser.h:870
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

Referenced by CFolderOptions::AddPages(), and ShowFolderOptionsDialog().

◆ RefreshBrowsersCallback()

static BOOL CALLBACK RefreshBrowsersCallback ( HWND  hWnd,
LPARAM  msg 
)
static

Definition at line 853 of file view.cpp.

854{
855 WCHAR ClassName[100];
856 if (GetClassNameW(hWnd, ClassName, _countof(ClassName)))
857 {
858 if (!wcscmp(ClassName, L"Progman") ||
859 !wcscmp(ClassName, L"CabinetWClass") ||
860 !wcscmp(ClassName, L"ExploreWClass"))
861 {
863 }
864 }
865 return TRUE;
866}
HWND hWnd
Definition: settings.c:17
#define TRUE
Definition: types.h:120
#define FCIDM_DESKBROWSER_REFRESH
Definition: desktop.c:14
#define L(x)
Definition: ntvdm.h:50
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define _countof(array)
Definition: sndvol32.h:68
#define PostMessage
Definition: winuser.h:5832
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by ViewDlg_Apply().

◆ ScanAdvancedSettings()

static VOID ScanAdvancedSettings ( SHELLSTATE pSS,
DWORD pdwMask 
)
static

Definition at line 802 of file view.cpp.

803{
804 for (INT i = 0; i < s_ViewTreeEntryCount; ++i)
805 {
807 if (pEntry->dwType == AETYPE_GROUP || pEntry->bGrayed)
808 continue;
809
810 BOOL bChecked = pEntry->bChecked;
811
812 // FIXME: Add more items
813 if (lstrcmpiW(pEntry->szKeyName, L"SuperHidden") == 0)
814 {
815 pSS->fShowSuperHidden = !bChecked ? 1 : 0;
816 *pdwMask |= SSF_SHOWSUPERHIDDEN;
817 continue;
818 }
819 if (lstrcmpiW(pEntry->szKeyName, L"DesktopProcess") == 0)
820 {
821 pSS->fSepProcess = bChecked ? 1 : 0;
822 *pdwMask |= SSF_SEPPROCESS;
823 continue;
824 }
825 if (lstrcmpiW(pEntry->szKeyName, L"SHOWALL") == 0)
826 {
827 pSS->fShowAllObjects = !bChecked ? 1 : 0;
828 *pdwMask |= SSF_SHOWALLOBJECTS;
829 continue;
830 }
831 if (lstrcmpiW(pEntry->szKeyName, L"HideFileExt") == 0)
832 {
833 pSS->fShowExtensions = !bChecked ? 1 : 0;
834 *pdwMask |= SSF_SHOWEXTENSIONS;
835 continue;
836 }
837 if (lstrcmpiW(pEntry->szKeyName, L"ShowCompColor") == 0)
838 {
839 pSS->fShowCompColor = bChecked ? 1 : 0;
840 *pdwMask |= SSF_SHOWCOMPCOLOR;
841 continue;
842 }
843 if (lstrcmpiW(pEntry->szKeyName, L"ShowInfoTip") == 0)
844 {
845 pSS->fShowInfoTip = bChecked ? 1 : 0;
846 *pdwMask |= SSF_SHOWINFOTIP;
847 continue;
848 }
849 }
850}
unsigned int BOOL
Definition: ntddk_ex.h:94
PLIST_ENTRY pEntry
Definition: fxioqueue.cpp:4484
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
#define SSF_SEPPROCESS
Definition: shlobj.h:1607
#define SSF_SHOWCOMPCOLOR
Definition: shlobj.h:1595
#define SSF_SHOWEXTENSIONS
Definition: shlobj.h:1594
#define SSF_SHOWSUPERHIDDEN
Definition: shlobj.h:1606
#define SSF_SHOWALLOBJECTS
Definition: shlobj.h:1593
#define SSF_SHOWINFOTIP
Definition: shlobj.h:1602
BOOL fShowSuperHidden
Definition: shlobj.h:1548
BOOL fShowExtensions
Definition: shlobj.h:1533
BOOL fShowCompColor
Definition: shlobj.h:1537
BOOL fShowInfoTip
Definition: shlobj.h:1544
BOOL fSepProcess
Definition: shlobj.h:1558
BOOL fShowAllObjects
Definition: shlobj.h:1532
Definition: view.cpp:57
int32_t INT
Definition: typedefs.h:58
static PVIEWTREE_ENTRY s_ViewTreeEntries
Definition: view.cpp:81
static INT s_ViewTreeEntryCount
Definition: view.cpp:82

Referenced by ViewDlg_Apply().

◆ ViewDlg_Apply()

static VOID ViewDlg_Apply ( HWND  hwndDlg)
static

Definition at line 869 of file view.cpp.

870{
871 for (INT i = 0; i < s_ViewTreeEntryCount; ++i)
872 {
873 // ignore the entry if the type is group or the entry is grayed
875 if (pEntry->dwType == AETYPE_GROUP || pEntry->bGrayed)
876 continue;
877
878 // open the registry key
879 HKEY hkeyTarget;
880 if (RegOpenKeyExW(HKEY(pEntry->hkeyRoot), pEntry->szRegPath, 0,
881 KEY_WRITE, &hkeyTarget) != ERROR_SUCCESS)
882 {
883 continue;
884 }
885
886 // checked or unchecked?
887 DWORD dwValue, dwSize;
888 if (pEntry->bChecked)
889 {
890 dwValue = pEntry->dwCheckedValue;
891 }
892 else
893 {
894 if (pEntry->bHasUncheckedValue)
895 {
896 dwValue = pEntry->dwUncheckedValue;
897 }
898 else
899 {
900 // there is no unchecked value
901 RegCloseKey(hkeyTarget);
902 continue; // ignore
903 }
904 }
905
906 // set the value
907 dwSize = sizeof(dwValue);
908 RegSetValueExW(hkeyTarget, pEntry->szValueName, 0, REG_DWORD,
909 LPBYTE(&dwValue), dwSize);
910
911 // close now
912 RegCloseKey(hkeyTarget);
913 }
914
915 // scan advanced settings for user's settings
916 DWORD dwMask = 0;
917 SHELLSTATE ShellState;
918 ZeroMemory(&ShellState, sizeof(ShellState));
919 ScanAdvancedSettings(&ShellState, &dwMask);
920
921 // update user's settings
922 SHGetSetSettings(&ShellState, dwMask, TRUE);
923
924 // notify all
926
928}
HANDLE HKEY
Definition: registry.h:26
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
unsigned long DWORD
Definition: ntddk_ex.h:95
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define KEY_WRITE
Definition: nt_native.h:1031
#define REG_DWORD
Definition: sdbapi.c:596
VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
Definition: shellord.c:202
unsigned char * LPBYTE
Definition: typedefs.h:53
static VOID ScanAdvancedSettings(SHELLSTATE *pSS, DWORD *pdwMask)
Definition: view.cpp:802
static BOOL CALLBACK RefreshBrowsersCallback(HWND hWnd, LPARAM msg)
Definition: view.cpp:853
#define ZeroMemory
Definition: winbase.h:1712
#define HWND_BROADCAST
Definition: winuser.h:1204
#define WM_WININICHANGE
Definition: winuser.h:1630
BOOL WINAPI EnumWindows(_In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam)
#define SendMessage
Definition: winuser.h:5843

Referenced by FolderOptionsViewDlg().

◆ ViewDlg_OnInitDialog()

static BOOL ViewDlg_OnInitDialog ( HWND  hwndDlg)
static

Definition at line 621 of file view.cpp.

622{
624
627
631
632 return TRUE; // set focus
633}
HWND hwndTreeView
Definition: eventvwr.c:65
#define TVSIL_NORMAL
Definition: commctrl.h:3443
#define TreeView_SetImageList(hwnd, himl, iImage)
Definition: commctrl.h:3447
#define IDC_VIEW_TREEVIEW
Definition: shresdef.h:503
static VOID ViewTree_InsertAll(HWND hwndTreeView)
Definition: view.cpp:226
static HIMAGELIST s_hTreeImageList
Definition: view.cpp:87
static BOOL ViewTree_LoadAll(VOID)
Definition: view.cpp:442
static VOID ViewTree_SortAll(VOID)
Definition: view.cpp:539
static HIMAGELIST ViewDlg_CreateTreeImageList(VOID)
Definition: view.cpp:548
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)

Referenced by FolderOptionsViewDlg().

◆ ViewDlg_OnTreeCustomDraw()

static INT_PTR ViewDlg_OnTreeCustomDraw ( HWND  hwndDlg,
NMTVCUSTOMDRAW Draw 
)
static

Definition at line 734 of file view.cpp.

735{
736 NMCUSTOMDRAW& nmcd = Draw->nmcd;
737 switch (nmcd.dwDrawStage)
738 {
739 case CDDS_PREPAINT:
740 return CDRF_NOTIFYITEMDRAW; // for CDDS_ITEMPREPAINT
741
743 if (!(nmcd.uItemState & CDIS_SELECTED)) // not selected
744 {
747 if (pEntry && pEntry->bGrayed) // disabled
748 {
749 // draw as grayed
750 Draw->clrText = GetSysColor(COLOR_GRAYTEXT);
751 Draw->clrTextBk = GetSysColor(COLOR_WINDOW);
752 return CDRF_NEWFONT;
753 }
754 }
755 break;
756
757 default:
758 break;
759 }
760 return CDRF_DODEFAULT;
761}
#define CDDS_ITEMPREPAINT
Definition: commctrl.h:285
#define CDRF_NOTIFYITEMDRAW
Definition: commctrl.h:275
#define CDRF_DODEFAULT
Definition: commctrl.h:268
#define CDIS_SELECTED
Definition: commctrl.h:291
#define CDRF_NEWFONT
Definition: commctrl.h:269
#define CDDS_PREPAINT
Definition: commctrl.h:280
static PVIEWTREE_ENTRY ViewTree_GetItem(DWORD dwID)
Definition: view.cpp:146
LONG_PTR LPARAM
Definition: windef.h:208
DWORD WINAPI GetSysColor(_In_ int)
#define COLOR_GRAYTEXT
Definition: winuser.h:932
#define COLOR_WINDOW
Definition: winuser.h:918

Referenced by FolderOptionsViewDlg().

◆ ViewDlg_OnTreeViewClick()

static VOID ViewDlg_OnTreeViewClick ( HWND  hwndDlg)
static

Definition at line 696 of file view.cpp.

697{
699
700 // do hit test to get the clicked item
701 TV_HITTESTINFO HitTest;
702 ZeroMemory(&HitTest, sizeof(HitTest));
703 DWORD dwPos = GetMessagePos();
704 HitTest.pt.x = LOWORD(dwPos);
705 HitTest.pt.y = HIWORD(dwPos);
706 ScreenToClient(hwndTreeView, &HitTest.pt);
708
709 // toggle the check mark if possible
710 if (ViewDlg_ToggleCheckItem(hwndDlg, hItem))
711 {
712 // property sheet was changed
713 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
714 }
715}
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define TV_HITTESTINFO
Definition: commctrl.h:3516
#define TreeView_HitTest(hwnd, lpht)
Definition: commctrl.h:3513
#define HIWORD(l)
Definition: typedefs.h:247
static BOOL ViewDlg_ToggleCheckItem(HWND hwndDlg, HTREEITEM hItem)
Definition: view.cpp:636
DWORD WINAPI GetMessagePos(void)
Definition: message.c:1351
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)

Referenced by FolderOptionsViewDlg().

◆ ViewDlg_OnTreeViewKeyDown()

static void ViewDlg_OnTreeViewKeyDown ( HWND  hwndDlg,
TV_KEYDOWN KeyDown 
)
static

Definition at line 718 of file view.cpp.

719{
721
722 if (KeyDown->wVKey == VK_SPACE)
723 {
724 // [Space] key was pressed
726 if (ViewDlg_ToggleCheckItem(hwndDlg, hItem))
727 {
728 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
729 }
730 }
731}
#define TreeView_GetSelection(hwnd)
Definition: commctrl.h:3473
#define VK_SPACE
Definition: winuser.h:2219

Referenced by FolderOptionsViewDlg().

◆ ViewDlg_RestoreDefaults()

static VOID ViewDlg_RestoreDefaults ( HWND  hwndDlg)
static

Definition at line 764 of file view.cpp.

765{
767
768 for (INT i = 0; i < s_ViewTreeEntryCount; ++i)
769 {
770 // ignore if the type is group
772 if (pEntry->dwType == AETYPE_GROUP)
773 continue;
774
775 // set default value on registry
776 HKEY hKey;
777 if (RegOpenKeyExW(HKEY(pEntry->hkeyRoot), pEntry->szRegPath,
779 {
780 continue;
781 }
782 RegSetValueExW(hKey, pEntry->szValueName, 0, REG_DWORD,
783 LPBYTE(&pEntry->dwDefaultValue), sizeof(DWORD));
785
786 // update check status
787 pEntry->bChecked = (pEntry->dwCheckedValue == pEntry->dwDefaultValue);
788
789 // update the image
791 ZeroMemory(&Item, sizeof(Item));
793 Item.hItem = pEntry->hItem;
794 Item.iImage = Item.iSelectedImage = ViewTree_GetImage(pEntry);
796 }
797
798 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
799}
FxAutoRegKey hKey
#define TVIF_IMAGE
Definition: commctrl.h:3267
#define TV_ITEM
Definition: commctrl.h:3300
#define TVIF_HANDLE
Definition: commctrl.h:3270
#define TVIF_SELECTEDIMAGE
Definition: commctrl.h:3271
#define TreeView_SetItem(hwnd, pitem)
Definition: commctrl.h:3497
static INT ViewTree_GetImage(PVIEWTREE_ENTRY pEntry)
Definition: view.cpp:161
_In_ WDFCOLLECTION _In_ WDFOBJECT Item

Referenced by FolderOptionsViewDlg().

◆ ViewDlg_ToggleCheckItem()

static BOOL ViewDlg_ToggleCheckItem ( HWND  hwndDlg,
HTREEITEM  hItem 
)
static

Definition at line 636 of file view.cpp.

637{
639
640 // get the item
642 INT i;
643 ZeroMemory(&Item, sizeof(Item));
645 Item.hItem = hItem;
647 return FALSE; // no such item
648
650 if (pEntry == NULL)
651 return FALSE; // no such item
652 if (pEntry->bGrayed)
653 return FALSE; // disabled
654
655 // toggle check mark
657 switch (pEntry->dwType)
658 {
659 case AETYPE_CHECKBOX:
660 pEntry->bChecked = !pEntry->bChecked;
661 break;
662
663 case AETYPE_RADIO:
664 // reset all the entries of the same parent
665 for (i = 0; i < s_ViewTreeEntryCount; ++i)
666 {
668 if (pEntry->dwParentID == pEntry2->dwParentID)
669 {
670 pEntry2->bChecked = FALSE;
671
672 Item.hItem = pEntry2->hItem;
673 INT iImage = ViewTree_GetImage(pEntry2);
674 Item.iImage = Item.iSelectedImage = iImage;
676 }
677 }
678 pEntry->bChecked = TRUE;
679 break;
680
681 default:
682 return FALSE; // failure
683 }
684 Item.iImage = Item.iSelectedImage = ViewTree_GetImage(pEntry);
685 Item.hItem = hItem;
687
688 // redraw the item
689 RECT rcItem;
692 return TRUE; // success
693}
#define TreeView_GetItem(hwnd, pitem)
Definition: commctrl.h:3490
#define TreeView_GetItemRect(hwnd, hitem, prc, code)
Definition: commctrl.h:3429
#define TVIF_PARAM
Definition: commctrl.h:3268
DWORD dwParentID
Definition: view.cpp:59
BOOL bChecked
Definition: view.cpp:77
HTREEITEM hItem
Definition: view.cpp:75
HTREEITEM hItem
Definition: treelist.h:37
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)

Referenced by ViewDlg_OnTreeViewClick(), and ViewDlg_OnTreeViewKeyDown().

◆ ViewTree_AddIcon()

static INT ViewTree_AddIcon ( LPCWSTR  pszPath,
UINT  nIconIndex 
)
static

Definition at line 105 of file view.cpp.

106{
107 PVIEWTREE_ICON pAllocated;
108
109 // return the ID if already existed
110 INT nIconID = ViewTree_FindIcon(pszPath, nIconIndex);
111 if (nIconID != -1)
112 return nIconID; // already exists
113
114 // extract a small icon
115 HICON hIconSmall = NULL;
116 ExtractIconExW(pszPath, nIconIndex, NULL, &hIconSmall, 1);
117 if (hIconSmall == NULL)
118 return -1; // failure
119
120 // resize s_ViewTreeIcons
121 size_t Size = (s_ViewTreeIconCount + 1) * sizeof(VIEWTREE_ICON);
123 if (pAllocated == NULL)
124 return -1; // failure
125 else
126 s_ViewTreeIcons = pAllocated;
127
128 // save icon information
130 lstrcpynW(pIcon->szPath, pszPath, _countof(pIcon->szPath));
131 pIcon->nIconIndex = nIconIndex;
132
133 // add the icon to the image list
135
136 // increment the counter
137 nIconID = s_ViewTreeIconCount;
139
140 DestroyIcon(hIconSmall);
141
142 return nIconID; // newly-added icon ID
143}
#define realloc
Definition: debug_ros.c:6
#define lstrcpynW
Definition: compat.h:738
UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons)
Definition: iconcache.cpp:849
static HICON
Definition: imagelist.c:84
#define ImageList_AddIcon(himl, hicon)
Definition: commctrl.h:415
UINT nIconIndex
Definition: view.cpp:44
WCHAR szPath[MAX_PATH]
Definition: view.cpp:43
static INT s_ViewTreeIconCount
Definition: view.cpp:86
static INT ViewTree_FindIcon(LPCWSTR pszPath, UINT nIconIndex)
Definition: view.cpp:90
struct VIEWTREE_ICON * PVIEWTREE_ICON
static PVIEWTREE_ICON s_ViewTreeIcons
Definition: view.cpp:85
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2053

Referenced by ViewTree_LoadTree().

◆ ViewTree_Compare()

static int ViewTree_Compare ( const void x,
const void y 
)
static

Definition at line 485 of file view.cpp.

486{
489
490 DWORD dwParentID1 = pEntry1->dwParentID;
491 DWORD dwParentID2 = pEntry2->dwParentID;
492
493 if (dwParentID1 == dwParentID2)
494 return lstrcmpi(pEntry1->szText, pEntry2->szText);
495
496 DWORD i, m, n;
497 const UINT MAX_DEPTH = 32;
498 PVIEWTREE_ENTRY pArray1[MAX_DEPTH];
499 PVIEWTREE_ENTRY pArray2[MAX_DEPTH];
500
501 // Make ancestor lists
502 for (i = m = n = 0; i < MAX_DEPTH; ++i)
503 {
504 PVIEWTREE_ENTRY pParent1 = ViewTree_GetItem(dwParentID1);
505 PVIEWTREE_ENTRY pParent2 = ViewTree_GetItem(dwParentID2);
506 if (!pParent1 && !pParent2)
507 break;
508
509 if (pParent1)
510 {
511 pArray1[m++] = pParent1;
512 dwParentID1 = pParent1->dwParentID;
513 }
514 if (pParent2)
515 {
516 pArray2[n++] = pParent2;
517 dwParentID2 = pParent2->dwParentID;
518 }
519 }
520
521 UINT k = min(m, n);
522 for (i = 0; i < k; ++i)
523 {
524 INT nCompare = lstrcmpi(pArray1[m - i - 1]->szText, pArray2[n - i - 1]->szText);
525 if (nCompare < 0)
526 return -1;
527 if (nCompare > 0)
528 return 1;
529 }
530
531 if (m < n)
532 return -1;
533 if (m > n)
534 return 1;
535 return lstrcmpi(pEntry1->szText, pEntry2->szText);
536}
#define MAX_DEPTH
Definition: config.h:145
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLdouble n
Definition: glext.h:7729
const GLfloat * m
Definition: glext.h:10848
#define min(a, b)
Definition: monoChain.cc:55
int k
Definition: mpi.c:3369
unsigned int UINT
Definition: ndis.h:50
WCHAR szText[MAX_PATH]
Definition: view.cpp:63
struct VIEWTREE_ENTRY * PVIEWTREE_ENTRY
#define lstrcmpi
Definition: winbase.h:3808

Referenced by ViewTree_SortAll().

◆ ViewTree_FindIcon()

static INT ViewTree_FindIcon ( LPCWSTR  pszPath,
UINT  nIconIndex 
)
static

Definition at line 90 of file view.cpp.

91{
93 {
95 if (pIcon->nIconIndex == nIconIndex &&
96 lstrcmpiW(pIcon->szPath, pszPath) == 0)
97 {
98 return i; // icon ID
99 }
100 }
101 return -1; // not found
102}
#define PREDEFINED_ICON_COUNT
Definition: view.cpp:38

Referenced by ViewTree_AddIcon().

◆ ViewTree_GetImage()

static INT ViewTree_GetImage ( PVIEWTREE_ENTRY  pEntry)
static

Definition at line 161 of file view.cpp.

162{
163 switch (pEntry->dwType)
164 {
165 case AETYPE_GROUP:
166 return pEntry->nIconID;
167
168 case AETYPE_CHECKBOX:
169 if (pEntry->bGrayed)
170 {
171 if (pEntry->bChecked)
172 return I_CHECKED_DISABLED;
173 else
175 }
176 else
177 {
178 if (pEntry->bChecked)
179 return I_CHECKED;
180 else
181 return I_UNCHECKED;
182 }
183
184 case AETYPE_RADIO:
185 if (pEntry->bGrayed)
186 {
187 if (pEntry->bChecked)
189 else
191 }
192 else
193 {
194 if (pEntry->bChecked)
195 return I_RADIO_CHECKED;
196 else
197 return I_RADIO_UNCHECKED;
198 }
199 }
200 return -1; // failure
201}
#define I_RADIO_UNCHECKED
Definition: view.cpp:35
#define I_CHECKED_DISABLED
Definition: view.cpp:32
#define I_RADIO_CHECKED_DISABLED
Definition: view.cpp:36
#define I_UNCHECKED
Definition: view.cpp:31
#define I_RADIO_UNCHECKED_DISABLED
Definition: view.cpp:37
#define I_UNCHECKED_DISABLED
Definition: view.cpp:33
#define I_CHECKED
Definition: view.cpp:30
#define I_RADIO_CHECKED
Definition: view.cpp:34

Referenced by ViewDlg_RestoreDefaults(), ViewDlg_ToggleCheckItem(), and ViewTree_InsertEntry().

◆ ViewTree_GetItem()

static PVIEWTREE_ENTRY ViewTree_GetItem ( DWORD  dwID)
static

Definition at line 146 of file view.cpp.

147{
148 if (dwID == DWORD(-1))
149 return NULL;
150
151 for (INT i = 0; i < s_ViewTreeEntryCount; ++i)
152 {
154 if (pEntry->dwID == dwID)
155 return pEntry;
156 }
157 return NULL; // failure
158}
#define DWORD
Definition: nt_native.h:44

Referenced by ViewDlg_OnTreeCustomDraw(), ViewDlg_ToggleCheckItem(), ViewTree_Compare(), and ViewTree_InsertEntry().

◆ ViewTree_InsertAll()

static VOID ViewTree_InsertAll ( HWND  hwndTreeView)
static

Definition at line 226 of file view.cpp.

227{
229
230 // insert the entries
232 for (INT i = 0; i < s_ViewTreeEntryCount; ++i)
233 {
236 }
237
238 // expand all
239 for (INT i = 0; i < s_ViewTreeEntryCount; ++i)
240 {
242 if (pEntry->dwType == AETYPE_GROUP)
243 {
245 }
246 }
247}
#define TreeView_DeleteAllItems(hwnd)
Definition: commctrl.h:3417
#define TreeView_Expand(hwnd, hitem, code)
Definition: commctrl.h:3420
#define TVE_EXPAND
Definition: commctrl.h:3423
static VOID ViewTree_InsertEntry(HWND hwndTreeView, PVIEWTREE_ENTRY pEntry)
Definition: view.cpp:204

Referenced by ViewDlg_OnInitDialog().

◆ ViewTree_InsertEntry()

static VOID ViewTree_InsertEntry ( HWND  hwndTreeView,
PVIEWTREE_ENTRY  pEntry 
)
static

Definition at line 204 of file view.cpp.

205{
207 HTREEITEM hParent = TVI_ROOT;
208 if (pParent)
209 hParent = pParent->hItem;
210
211 TV_INSERTSTRUCT Insertion;
212 ZeroMemory(&Insertion, sizeof(Insertion));
213 Insertion.hParent = hParent;
214 Insertion.hInsertAfter = TVI_LAST;
215 Insertion.item.mask =
217 Insertion.item.pszText = pEntry->szText;
218
219 INT iImage = ViewTree_GetImage(pEntry);
220 Insertion.item.iImage = Insertion.item.iSelectedImage = iImage;
221 Insertion.item.lParam = pEntry->dwID;
222 pEntry->hItem = TreeView_InsertItem(hwndTreeView, &Insertion);
223}
FxObject * pParent
Definition: fxdpcapi.cpp:86
#define TVI_LAST
Definition: commctrl.h:3370
#define TVIF_TEXT
Definition: commctrl.h:3266
#define TV_INSERTSTRUCT
Definition: commctrl.h:3377
#define TVI_ROOT
Definition: commctrl.h:3368
#define TreeView_InsertItem(hwnd, lpis)
Definition: commctrl.h:3412

Referenced by ViewTree_InsertAll().

◆ ViewTree_LoadAll()

static BOOL ViewTree_LoadAll ( VOID  )
static

Definition at line 442 of file view.cpp.

443{
444 // free if already existed
446 {
449 }
451
452 HKEY hKey;
454 L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
455 0, KEY_READ, &hKey) != ERROR_SUCCESS)
456 {
457 return FALSE; // failure
458 }
459
460 // load the children
461 WCHAR szKeyName[64];
462 DWORD dwIndex = 0;
463 while (RegEnumKeyW(hKey, dwIndex, szKeyName,
464 _countof(szKeyName)) == ERROR_SUCCESS)
465 {
466 HKEY hkeyChild;
467 if (RegOpenKeyExW(hKey, szKeyName, 0, KEY_READ,
468 &hkeyChild) != ERROR_SUCCESS)
469 {
470 ++dwIndex;
471 continue; // failure
472 }
473
474 ViewTree_LoadTree(hkeyChild, szKeyName, DWORD(-1));
475 RegCloseKey(hkeyChild);
476
477 ++dwIndex;
478 }
479
481
482 return TRUE; // success
483}
#define free
Definition: debug_ros.c:5
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
Definition: reg.c:2393
#define KEY_READ
Definition: nt_native.h:1023
static BOOL ViewTree_LoadTree(HKEY hKey, LPCWSTR pszKeyName, DWORD dwParentID)
Definition: view.cpp:250
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12

Referenced by ViewDlg_OnInitDialog().

◆ ViewTree_LoadTree()

static BOOL ViewTree_LoadTree ( HKEY  hKey,
LPCWSTR  pszKeyName,
DWORD  dwParentID 
)
static

Definition at line 250 of file view.cpp.

251{
252 DWORD dwIndex;
253 WCHAR szKeyName[64], szText[MAX_PATH], *pch;
255 PVIEWTREE_ENTRY pAllocated;
256
257 // resize s_ViewTreeEntries
258 Size = (s_ViewTreeEntryCount + 1) * sizeof(VIEWTREE_ENTRY);
260 if (pAllocated == NULL)
261 return FALSE; // failure
262 else
263 s_ViewTreeEntries = pAllocated;
264
266
267 // dwID, dwParentID, szKeyName
269 pEntry->dwParentID = dwParentID;
270 lstrcpynW(pEntry->szKeyName, pszKeyName, _countof(pEntry->szKeyName));
271
272 // Text, ResourceID
273 pEntry->szText[0] = 0;
274 pEntry->dwResourceID = 0;
275 szText[0] = 0;
276 Size = sizeof(szText);
277 RegQueryValueExW(hKey, L"Text", NULL, NULL, LPBYTE(szText), &Size);
278 if (szText[0] == L'@')
279 {
280 pch = wcsrchr(szText, L',');
281 if (pch)
282 {
283 *pch = 0;
284 dwIndex = abs(_wtoi(pch + 1));
285 pEntry->dwResourceID = dwIndex;
286 }
287 HINSTANCE hInst = LoadLibraryW(&szText[1]);
288 LoadStringW(hInst, dwIndex, szText, _countof(szText));
290 }
291 else
292 {
293 pEntry->dwResourceID = DWORD(-1);
294 }
295 lstrcpynW(pEntry->szText, szText, _countof(pEntry->szText));
296
297 // Type
298 szText[0] = 0;
299 RegQueryValueExW(hKey, L"Type", NULL, NULL, LPBYTE(szText), &Size);
300 if (lstrcmpiW(szText, L"checkbox") == 0)
301 pEntry->dwType = AETYPE_CHECKBOX;
302 else if (lstrcmpiW(szText, L"radio") == 0)
303 pEntry->dwType = AETYPE_RADIO;
304 else if (lstrcmpiW(szText, L"group") == 0)
305 pEntry->dwType = AETYPE_GROUP;
306 else
307 return FALSE; // failure
308
309 pEntry->nIconID = -1;
310 if (pEntry->dwType == AETYPE_GROUP)
311 {
312 // Bitmap (Icon)
313 UINT nIconIndex = 0;
314 Size = sizeof(szText);
315 szText[0] = 0;
316 RegQueryValueExW(hKey, L"Bitmap", NULL, NULL, LPBYTE(szText), &Size);
317
318 WCHAR szExpanded[MAX_PATH];
319 ExpandEnvironmentStringsW(szText, szExpanded, _countof(szExpanded));
320 pch = wcsrchr(szExpanded, L',');
321 if (pch)
322 {
323 *pch = 0;
324 nIconIndex = abs(_wtoi(pch + 1));
325 }
326 pEntry->nIconID = ViewTree_AddIcon(szExpanded, nIconIndex);
327 }
328
329 if (pEntry->dwType == AETYPE_GROUP)
330 {
331 pEntry->hkeyRoot = NULL;
332 pEntry->szRegPath[0] = 0;
333 pEntry->szValueName[0] = 0;
334 pEntry->dwCheckedValue = 0;
335 pEntry->bHasUncheckedValue = FALSE;
336 pEntry->dwUncheckedValue = 0;
337 pEntry->dwDefaultValue = 0;
338 pEntry->hItem = NULL;
339 pEntry->bGrayed = FALSE;
340 pEntry->bChecked = FALSE;
341 }
342 else
343 {
344 // HKeyRoot
345 HKEY HKeyRoot = HKEY_CURRENT_USER;
346 Size = sizeof(HKeyRoot);
347 RegQueryValueExW(hKey, L"HKeyRoot", NULL, NULL, LPBYTE(&HKeyRoot), &Size);
348 pEntry->hkeyRoot = HKeyRoot;
349
350 // RegPath
351 pEntry->szRegPath[0] = 0;
352 Size = sizeof(szText);
353 RegQueryValueExW(hKey, L"RegPath", NULL, NULL, LPBYTE(szText), &Size);
354 lstrcpynW(pEntry->szRegPath, szText, _countof(pEntry->szRegPath));
355
356 // ValueName
357 pEntry->szValueName[0] = 0;
358 Size = sizeof(szText);
359 RegQueryValueExW(hKey, L"ValueName", NULL, NULL, LPBYTE(szText), &Size);
360 lstrcpynW(pEntry->szValueName, szText, _countof(pEntry->szValueName));
361
362 // CheckedValue
363 Size = sizeof(Value);
364 Value = 0x00000001;
365 RegQueryValueExW(hKey, L"CheckedValue", NULL, NULL, LPBYTE(&Value), &Size);
366 pEntry->dwCheckedValue = Value;
367
368 // UncheckedValue
369 Size = sizeof(Value);
370 Value = 0x00000000;
371 pEntry->bHasUncheckedValue = TRUE;
372 if (RegQueryValueExW(hKey, L"UncheckedValue", NULL,
374 {
375 pEntry->bHasUncheckedValue = FALSE;
376 }
377 pEntry->dwUncheckedValue = Value;
378
379 // DefaultValue
380 Size = sizeof(Value);
381 Value = 0x00000001;
382 RegQueryValueExW(hKey, L"DefaultValue", NULL, NULL, LPBYTE(&Value), &Size);
383 pEntry->dwDefaultValue = Value;
384
385 // hItem
386 pEntry->hItem = NULL;
387
388 // bGrayed, bChecked
389 HKEY hkeyTarget;
390 Value = pEntry->dwDefaultValue;
391 pEntry->bGrayed = TRUE;
392 if (RegOpenKeyExW(HKEY(pEntry->hkeyRoot), pEntry->szRegPath, 0,
393 KEY_READ, &hkeyTarget) == ERROR_SUCCESS)
394 {
395 Size = sizeof(Value);
396 if (RegQueryValueExW(hkeyTarget, pEntry->szValueName, NULL, NULL,
398 {
399 pEntry->bGrayed = FALSE;
400 }
401 RegCloseKey(hkeyTarget);
402 }
403 pEntry->bChecked = (Value == pEntry->dwCheckedValue);
404 }
405
406 // Grayed (ReactOS extension)
407 Size = sizeof(Value);
408 Value = FALSE;
409 RegQueryValueExW(hKey, L"Grayed", NULL, NULL, LPBYTE(&Value), &Size);
410 if (!pEntry->bGrayed)
411 pEntry->bGrayed = Value;
412
413 BOOL bIsGroup = (pEntry->dwType == AETYPE_GROUP);
414 dwParentID = pEntry->dwID;
416
417 if (!bIsGroup)
418 return TRUE; // success
419
420 // load the children
421 dwIndex = 0;
422 while (RegEnumKeyW(hKey, dwIndex, szKeyName,
423 _countof(szKeyName)) == ERROR_SUCCESS)
424 {
425 HKEY hkeyChild;
426 if (RegOpenKeyExW(hKey, szKeyName, 0, KEY_READ,
427 &hkeyChild) != ERROR_SUCCESS)
428 {
429 ++dwIndex;
430 continue; // failure
431 }
432
433 ViewTree_LoadTree(hkeyChild, szKeyName, dwParentID);
434 RegCloseKey(hkeyChild);
435
436 ++dwIndex;
437 }
438
439 return TRUE; // success
440}
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#define wcsrchr
Definition: compat.h:16
#define FreeLibrary(x)
Definition: compat.h:748
#define MAX_PATH
Definition: compat.h:34
#define LoadLibraryW(x)
Definition: compat.h:747
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
Definition: environ.c:519
HINSTANCE hInst
Definition: dxdiag.c:13
#define abs(i)
Definition: fconv.c:206
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
#define pch(ap)
Definition: match.c:418
static INT ViewTree_AddIcon(LPCWSTR pszPath, UINT nIconIndex)
Definition: view.cpp:105
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
#define HKEY_CURRENT_USER
Definition: winreg.h:11
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)

Referenced by ViewTree_LoadAll(), and ViewTree_LoadTree().

◆ ViewTree_SortAll()

static VOID ViewTree_SortAll ( VOID  )
static

Definition at line 539 of file view.cpp.

540{
542}
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
static int ViewTree_Compare(const void *x, const void *y)
Definition: view.cpp:485

Referenced by ViewDlg_OnInitDialog().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( fprop  )

Variable Documentation

◆ s_hTreeImageList

HIMAGELIST s_hTreeImageList = NULL
static

Definition at line 87 of file view.cpp.

Referenced by ViewDlg_OnInitDialog(), and ViewTree_AddIcon().

◆ s_ViewTreeEntries

◆ s_ViewTreeEntryCount

◆ s_ViewTreeIconCount

INT s_ViewTreeIconCount = 0
static

Definition at line 86 of file view.cpp.

Referenced by ViewTree_AddIcon(), and ViewTree_FindIcon().

◆ s_ViewTreeIcons

PVIEWTREE_ICON s_ViewTreeIcons = NULL
static

Definition at line 85 of file view.cpp.

Referenced by ViewTree_AddIcon(), and ViewTree_FindIcon().

◆ ViewDlg_CreateTreeImageList

HIMAGELIST ViewDlg_CreateTreeImageList(VOID) ( VOID  )
static

Definition at line 548 of file view.cpp.

549{
550 HIMAGELIST hImageList;
551 hImageList = ImageList_Create(16, 16, ILC_COLOR24 | ILC_MASK, 9, 1);
552 if (hImageList == NULL)
553 return NULL; // failure
554
555 // free if existed
556 if (s_ViewTreeIcons)
557 {
560 }
562
563 // allocate now
564 PVIEWTREE_ICON pAllocated;
565 size_t Size = PREDEFINED_ICON_COUNT * sizeof(VIEWTREE_ICON);
566 pAllocated = (PVIEWTREE_ICON)calloc(1, Size);
567 if (pAllocated == NULL)
568 return NULL; // failure
569
571 s_ViewTreeIcons = pAllocated;
572
573 // add the predefined icons
574
576 HBITMAP hbmMask = CreateCheckMask(hDC);
577
578 HBITMAP hbmChecked, hbmUnchecked;
579
580 hbmChecked = CreateCheckImage(hDC, TRUE);
581 ImageList_Add(hImageList, hbmChecked, hbmMask);
582 DeleteObject(hbmChecked);
583
584 hbmUnchecked = CreateCheckImage(hDC, FALSE);
585 ImageList_Add(hImageList, hbmUnchecked, hbmMask);
586 DeleteObject(hbmUnchecked);
587
588 hbmChecked = CreateCheckImage(hDC, TRUE, FALSE);
589 ImageList_Add(hImageList, hbmChecked, hbmMask);
590 DeleteObject(hbmChecked);
591
592 hbmUnchecked = CreateCheckImage(hDC, FALSE, FALSE);
593 ImageList_Add(hImageList, hbmUnchecked, hbmMask);
594 DeleteObject(hbmUnchecked);
595
596 DeleteObject(hbmMask);
597 hbmMask = CreateRadioMask(hDC);
598
599 hbmChecked = CreateRadioImage(hDC, TRUE);
600 ImageList_Add(hImageList, hbmChecked, hbmMask);
601 DeleteObject(hbmChecked);
602
603 hbmUnchecked = CreateRadioImage(hDC, FALSE);
604 ImageList_Add(hImageList, hbmUnchecked, hbmMask);
605 DeleteObject(hbmUnchecked);
606
607 hbmChecked = CreateRadioImage(hDC, TRUE, FALSE);
608 ImageList_Add(hImageList, hbmChecked, hbmMask);
609 DeleteObject(hbmChecked);
610
611 hbmUnchecked = CreateRadioImage(hDC, FALSE, FALSE);
612 ImageList_Add(hImageList, hbmUnchecked, hbmMask);
613 DeleteObject(hbmUnchecked);
614
615 DeleteObject(hbmMask);
616
617 return hImageList;
618}
static HDC hDC
Definition: 3dtext.c:33
INT WINAPI ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask)
Definition: imagelist.c:448
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
Definition: imagelist.c:804
HBITMAP CreateRadioMask(HDC hDC)
HBITMAP CreateCheckMask(HDC hDC)
HBITMAP CreateRadioImage(HDC hDC, BOOL bCheck, BOOL bEnabled)
HBITMAP CreateCheckImage(HDC hDC, BOOL bCheck, BOOL bEnabled)
pKey DeleteObject()
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:92
#define ILC_MASK
Definition: commctrl.h:351
#define ILC_COLOR24
Definition: commctrl.h:357
#define calloc
Definition: rosglue.h:14
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)

Referenced by ViewDlg_OnInitDialog().