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;
+}