On 8/21/2011 19:21, Jay Yang wrote:
- LoadStringA(shell32_hInstance,IDS_PROPSHEET_VARIOUS,
various_str,sizeof(various_str));
- LoadStringW(shell32_hInstance,IDS_PROPSHEET_COUNT_FORMAT,
count_format,sizeof(count_format)/sizeof(WCHAR));
Why -A call here?
WCHAR count_str[64];
Again some magic.
+static INT_PTR DefaultPropSheet_OnNotify(HWND hwndDlg,WPARAM wParam, NMHDR *header) +{
- switch(header->code)
- {
- case PSN_APPLY:
{
UINT index;
PROPSHEETPAGEW *page;
DefaultPropSheet *propsheet;
WCHAR name[MAX_PATH];
UINT readonly_state, hidden_state;
UINT i;
index = SendMessageW(GetParent(hwndDlg),PSM_HWNDTOINDEX,(WPARAM)hwndDlg,0);
page = (PROPSHEETPAGEW*)SendMessageW(GetParent(hwndDlg),PSM_INDEXTOPAGE,index,0);
propsheet = (DefaultPropSheet*)page->lParam;
/*set name*/
if(propsheet->cidl==1)
{
BOOL is_folder;
LPCITEMIDLIST pidl_child;
LPITEMIDLIST pidl,pidl_new,pidl_child_new,temp;
IShellFolder *folder;
WCHAR old_name[MAX_PATH];
GetDlgItemTextW(hwndDlg,IDC_PROPSHEET_NAME,name,sizeof(name)/sizeof(WCHAR));
pidl = ILCombine(propsheet->folder_pidl,propsheet->apidl[0]);
is_folder = _ILIsFolder(pidl);
temp = ILClone(pidl);
ILRemoveLastID(temp);
SHBindToParent(pidl,&IID_IShellFolder,(void**)&folder,&pidl_child);
ILGetDisplayNameExW(folder, pidl_child, old_name,SHGDN_NORMAL);
if(strcmpW(old_name,name)!=0)
{
if(SUCCEEDED(IShellFolder_SetNameOf(folder,hwndDlg,pidl_child,name,SHGDN_NORMAL,&pidl_child_new)))
{
pidl_new = ILCombine(temp,pidl_child_new);
SHChangeNotify(is_folder ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM,SHCNF_IDLIST,pidl,pidl_new);
ILFree(pidl_child_new);
ILFree(pidl_new);
}
}
ILFree(temp);
ILFree(pidl);
IShellFolder_Release(folder);
}
/*set readonly/hidden*/
readonly_state = IsDlgButtonChecked(hwndDlg,IDC_PROPSHEET_READONLY);
hidden_state = IsDlgButtonChecked(hwndDlg,IDC_PROPSHEET_HIDDEN);
for(i=0;i<propsheet->cidl;i++)
{
LPITEMIDLIST pidl;
WCHAR path[MAX_PATH];
DWORD attributes;
pidl = ILCombine(propsheet->folder_pidl,propsheet->apidl[0]);
SHGetPathFromIDListW(pidl,path);
ILFree(pidl);
attributes = GetFileAttributesW(path);
switch(readonly_state)
{
case BST_CHECKED:
attributes |= FILE_ATTRIBUTE_READONLY;
break;
case BST_UNCHECKED:
attributes&= ~FILE_ATTRIBUTE_READONLY;
break;
}
switch(hidden_state)
{
case BST_CHECKED:
attributes |= FILE_ATTRIBUTE_HIDDEN;
break;
case BST_UNCHECKED:
attributes&= ~FILE_ATTRIBUTE_HIDDEN;
break;
}
SetFileAttributesW(path,attributes);
}
break;
}
- case PSN_RESET:
{
UINT index;
PROPSHEETPAGEW *page;
DefaultPropSheet *propsheet;
index = SendMessageW(GetParent(hwndDlg),PSM_HWNDTOINDEX,(WPARAM)hwndDlg,0);
page = (PROPSHEETPAGEW*)SendMessageW(GetParent(hwndDlg),PSM_INDEXTOPAGE,index,0);
propsheet = ((DefaultPropSheet*)page->lParam);
IShellPropSheetExt_Release(&propsheet->IShellPropSheetExt_iface);
}
Missed 'break' probably?
- default:
return FALSE;
- }
- return TRUE;
+}