Sync with trunk r63502.
[reactos.git] / dll / cpl / appwiz / createlink.c
index 609eb23..361ca15 100644 (file)
@@ -1,17 +1,18 @@
-/* $Id: appwiz.c 29364 2007-10-02 23:34:00Z janderwald $
- *
- * PROJECT:                    ReactOS Software Control Panel
- * FILE:                       dll/cpl/appwiz/createlink.c
- * PURPOSE:                    ReactOS Software Control Panel
- * PROGRAMMER:         Gero Kuehn (reactos.filter@gkware.com)
- *                             Dmitry Chapyshev (lentind@yandex.ru)
- *                             Johannes Anderwald
+/*
+ * PROJECT:         ReactOS Software Control Panel
+ * FILE:            dll/cpl/appwiz/createlink.c
+ * PURPOSE:         ReactOS Software Control Panel
+ * PROGRAMMER:      Gero Kuehn (reactos.filter@gkware.com)
+ *                  Dmitry Chapyshev (lentind@yandex.ru)
+ *                  Johannes Anderwald
  * UPDATE HISTORY:
  *      06-17-2004  Created
  */
 
 #include "appwiz.h"
 
+#include <tchar.h>
+
 BOOL
 IsShortcut(HKEY hKey)
 {
@@ -82,7 +83,7 @@ CreateShortcut(PCREATE_LINK_CONTEXT pContext)
 
     if (IsExtensionAShortcut(lpExtension))
     {
-        hr = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_ALL, &IID_IShellLink, (void**)&pSourceShellLink);
+        hr = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_ALL, &IID_IShellLinkW, (void**)&pSourceShellLink);
 
         if (hr != S_OK)
             return FALSE;
@@ -117,7 +118,7 @@ CreateShortcut(PCREATE_LINK_CONTEXT pContext)
     }
 
     hr = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_ALL,
-                   &IID_IShellLink, (void**)&pShellLink);
+                   &IID_IShellLinkW, (void**)&pShellLink);
 
     if (hr != S_OK)
         return FALSE;
@@ -190,11 +191,11 @@ WelcomeDlgProc(HWND hwndDlg,
                     brws.pszDisplayName = szPath;
                     brws.ulFlags = BIF_BROWSEINCLUDEFILES;
                     brws.lpfn = NULL;
-                    pidllist = SHBrowseForFolder(&brws);
+                    pidllist = SHBrowseForFolderW(&brws);
                     if (!pidllist)
                         break;
 
-                    if (SHGetPathFromIDList(pidllist, szPath))
+                    if (SHGetPathFromIDListW(pidllist, szPath))
                         SendDlgItemMessage(hwndDlg, IDC_SHORTCUT_LOCATION, WM_SETTEXT, 0, (LPARAM)szPath);
 
                     /* Free memory, if possible */
@@ -225,11 +226,7 @@ WelcomeDlgProc(HWND hwndDlg,
                         LoadStringW(hApplet, IDS_ERROR_NOT_FOUND, szPath, MAX_PATH) < MAX_PATH)
                     {
                         WCHAR szError[MAX_PATH + 100];
-#ifdef _MSC_VER
-                        _swprintf(szError, szPath, pContext->szTarget);
-#else
                         swprintf(szError, szPath, pContext->szTarget);
-#endif
                         MessageBoxW(hwndDlg, szError, szDesc, MB_ICONERROR);
                     }
                     SendDlgItemMessage(hwndDlg, IDC_SHORTCUT_LOCATION, EM_SETSEL, 0, -1);
@@ -335,13 +332,17 @@ ShowCreateShortcutWizard(HWND hwndCPl, LPWSTR szPath)
     nLength = wcslen(szPath);
     if (!nLength)
     {
+        HeapFree(GetProcessHeap(), 0, pContext);
+
         /* no directory given */
         return FALSE;
     }
 
     attrs = GetFileAttributesW(szPath);
-    if (attrs == INVALID_FILE_ATTRIBUTES || (attrs & FILE_ATTRIBUTE_DIRECTORY))
+    if (attrs == INVALID_FILE_ATTRIBUTES)
     {
+        HeapFree(GetProcessHeap(), 0, pContext);
+
         /* invalid path */
         return FALSE;
     }
@@ -359,14 +360,14 @@ ShowCreateShortcutWizard(HWND hwndCPl, LPWSTR szPath)
     psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
     psp.hInstance = hApplet;
     psp.pfnDlgProc = WelcomeDlgProc;
-    psp.pszTemplate = MAKEINTRESOURCE(IDD_SHORTCUT_LOCATION);
+    psp.pszTemplate = MAKEINTRESOURCEW(IDD_SHORTCUT_LOCATION);
     psp.lParam = (LPARAM)pContext;
     ahpsp[nPages++] = CreatePropertySheetPage(&psp);
 
     /* Create the Finish page */
     psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
     psp.pfnDlgProc = FinishDlgProc;
-    psp.pszTemplate = MAKEINTRESOURCE(IDD_SHORTCUT_FINISH);
+    psp.pszTemplate = MAKEINTRESOURCEW(IDD_SHORTCUT_FINISH);
     ahpsp[nPages++] = CreatePropertySheetPage(&psp);
 
 
@@ -378,7 +379,7 @@ ShowCreateShortcutWizard(HWND hwndCPl, LPWSTR szPath)
     psh.nPages = nPages;
     psh.nStartPage = 0;
     psh.phpage = ahpsp;
-    psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
+    psh.pszbmWatermark = MAKEINTRESOURCEW(IDB_WATERMARK);
 
     /* Display the wizard */
     PropertySheet(&psh);
@@ -386,21 +387,6 @@ ShowCreateShortcutWizard(HWND hwndCPl, LPWSTR szPath)
     return TRUE;
 }
 
-
-LONG
-CALLBACK
-NewLinkHere(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
-{
-    WCHAR szFile[MAX_PATH];
-
-    if (MultiByteToWideChar(CP_ACP, 0, (LPSTR) lParam1, -1, szFile, MAX_PATH))
-    {
-        return ShowCreateShortcutWizard(hwndCPl, szFile);
-    }
-    return -1;
-}
-
-
 LONG
 CALLBACK
 NewLinkHereW(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)