<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 8/21/2011 19:21, Jay Yang wrote:
<blockquote cite="mid:4E512261.1030205@gmail.com" type="cite">
<pre wrap="">+ 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));</pre>
</blockquote>
Why -A call here?<br>
<blockquote type="cite">
<pre wrap="">+ WCHAR count_str[64];
</pre>
</blockquote>
Again some magic.<br>
<br>
<blockquote type="cite">
<pre wrap="">+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;
+
+ /<b class="moz-txt-star"><span class="moz-txt-tag">*</span>set name<span class="moz-txt-tag">*</span></b>/
+ 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);
+ }
+ /<b class="moz-txt-star"><span class="moz-txt-tag">*</span>set readonly/hidden<span class="moz-txt-tag">*</span></b>/
+ 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);
+ }</pre>
</blockquote>
Missed 'break' probably?<br>
<blockquote type="cite">
<pre wrap="">
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}</pre>
</blockquote>
<br>
</body>
</html>