<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-&gt;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-&gt;lParam;
+
+            /<b class="moz-txt-star"><span class="moz-txt-tag">*</span>set name<span class="moz-txt-tag">*</span></b>/
+            if(propsheet-&gt;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-&gt;folder_pidl,propsheet-&gt;apidl[0]);
+                is_folder = _ILIsFolder(pidl);
+                temp = ILClone(pidl);
+                ILRemoveLastID(temp);
+                SHBindToParent(pidl,&amp;IID_IShellFolder,(void**)&amp;folder,&amp;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,&amp;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&lt;propsheet-&gt;cidl;i++)
+            {
+                LPITEMIDLIST pidl;
+                WCHAR path[MAX_PATH];
+                DWORD attributes;
+                pidl = ILCombine(propsheet-&gt;folder_pidl,propsheet-&gt;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 &amp;= ~FILE_ATTRIBUTE_READONLY;
+                    break;
+                }
+                switch(hidden_state)
+                {
+                case BST_CHECKED:
+                    attributes |= FILE_ATTRIBUTE_HIDDEN;
+                    break;
+                case BST_UNCHECKED:
+                    attributes &amp;= ~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-&gt;lParam);
+            IShellPropSheetExt_Release(&amp;propsheet-&gt;IShellPropSheetExt_iface);
+        }</pre>
    </blockquote>
    Missed 'break' probably?<br>
    <blockquote type="cite">
      <pre wrap="">
+    default:
+        return FALSE;
+    }
+    return TRUE;
+}</pre>
    </blockquote>
    <br>
  </body>
</html>