shell32: Use a listview for the control panel.
diff --git a/dlls/shell32/control.c b/dlls/shell32/control.c
index 58516bb..89a790a 100644
--- a/dlls/shell32/control.c
+++ b/dlls/shell32/control.c
@@ -34,6 +34,7 @@
 #include "wine/debug.h"
 #include "cpl.h"
 #include "wine/unicode.h"
+#include "commctrl.h"
 
 #define NO_SHLWAPI_REG
 #include "shlwapi.h"
@@ -164,18 +165,87 @@
     return NULL;
 }
 
+#define IDC_LISTVIEW        1000
+
+#define NUM_COLUMNS            2
+#define LISTVIEW_DEFSTYLE   (WS_CHILD | WS_VISIBLE | WS_TABSTOP |\
+                             LVS_SORTASCENDING | LVS_AUTOARRANGE | LVS_SINGLESEL)
+
+static BOOL Control_CreateListView (CPanel *panel)
+{
+    RECT ws;
+    WCHAR empty_string[] = {0};
+    WCHAR buf[MAX_STRING_LEN];
+    LVCOLUMNW lvc;
+
+    /* Create list view */
+    GetClientRect(panel->hWnd, &ws);
+
+    panel->hWndListView = CreateWindowExW(WS_EX_CLIENTEDGE, WC_LISTVIEWW,
+                          empty_string, LISTVIEW_DEFSTYLE | LVS_ICON,
+                          0, 0, ws.right - ws.left, ws.bottom - ws.top,
+                          panel->hWnd, (HMENU) IDC_LISTVIEW, panel->hInst, NULL);
+
+    if (!panel->hWndListView)
+        return FALSE;
+
+    /* Create image lists for list view */
+    panel->hImageListSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON),
+        GetSystemMetrics(SM_CYSMICON), ILC_MASK, 1, 1);
+    panel->hImageListLarge = ImageList_Create(GetSystemMetrics(SM_CXICON),
+        GetSystemMetrics(SM_CYICON), ILC_MASK, 1, 1);
+
+    (void) ListView_SetImageList(panel->hWndListView, panel->hImageListSmall, LVSIL_SMALL);
+    (void) ListView_SetImageList(panel->hWndListView, panel->hImageListLarge, LVSIL_NORMAL);
+
+    /* Create columns for list view */
+    lvc.mask = LVCF_FMT | LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH;
+    lvc.pszText = buf;
+    lvc.fmt = LVCFMT_LEFT;
+
+    /* Name column */
+    lvc.iSubItem = 0;
+    lvc.cx = (ws.right - ws.left) / 3;
+    LoadStringW(shell32_hInstance, IDS_CPANEL_NAME, buf, sizeof(buf) / sizeof(buf[0]));
+
+    if (ListView_InsertColumnW(panel->hWndListView, 0, &lvc) == -1)
+        return FALSE;
+
+    /* Description column */
+    lvc.iSubItem = 1;
+    lvc.cx = ((ws.right - ws.left) / 3) * 2;
+    LoadStringW(shell32_hInstance, IDS_CPANEL_DESCRIPTION, buf, sizeof(buf) /
+        sizeof(buf[0]));
+
+    if (ListView_InsertColumnW(panel->hWndListView, 1, &lvc) == -1)
+        return FALSE;
+
+    return(TRUE);
+}
+
 static void 	 Control_WndProc_Create(HWND hWnd, const CREATESTRUCTW* cs)
 {
    CPanel*	panel = (CPanel*)cs->lpCreateParams;
    HMENU hMenu, hSubMenu;
    CPlApplet*	applet;
    MENUITEMINFOW mii;
-   int menucount, i;
+   int menucount, i, index;
    CPlItem *item;
+   LVITEMW lvItem;
+   INITCOMMONCONTROLSEX icex;
 
    SetWindowLongPtrW(hWnd, 0, (LONG_PTR)panel);
    panel->hWnd = hWnd;
 
+   /* Initialise common control DLL */
+   icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
+   icex.dwICC = ICC_LISTVIEW_CLASSES;
+   InitCommonControlsEx(&icex);
+
+   /* create the list view */
+   if (!Control_CreateListView(panel))
+       return;
+
    hMenu = LoadMenuW(shell32_hInstance, MAKEINTRESOURCEW(MENU_CPANEL));
 
    /* insert menu items for applets */
@@ -204,8 +274,26 @@
          mii.dwItemData = (DWORD) item;
 
          if (InsertMenuItemW(hSubMenu, menucount, TRUE, &mii)) {
-             DrawMenuBar(hWnd);
-             menucount++;
+            /* add the list view item */
+            index = ImageList_AddIcon(panel->hImageListLarge, applet->info[i].hIcon);
+            ImageList_AddIcon(panel->hImageListSmall, applet->info[i].hIcon);
+
+            lvItem.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM;
+            lvItem.iItem = menucount;
+            lvItem.iSubItem = 0;
+            lvItem.pszText = applet->info[i].szName;
+            lvItem.iImage = index;
+            lvItem.lParam = (LPARAM) item;
+
+            ListView_InsertItemW(panel->hWndListView, &lvItem);
+
+            /* add the description */
+            ListView_SetItemTextW(panel->hWndListView, menucount, 1,
+                applet->info[i].szInfo);
+
+            /* update menu bar, increment count */
+            DrawMenuBar(hWnd);
+            menucount++;
          }
       }
    }
@@ -250,6 +338,65 @@
     }
 }
 
+static void Control_UpdateListViewStyle(CPanel *panel, UINT style, UINT id)
+{
+    HMENU hMenu, hSubMenu;
+
+    SetWindowLongW(panel->hWndListView, GWL_STYLE, LISTVIEW_DEFSTYLE | style);
+
+    /* update the menu */
+    hMenu = GetMenu(panel->hWnd);
+    hSubMenu = GetSubMenu(hMenu, 1);
+
+    CheckMenuRadioItem(hSubMenu, FCIDM_SHVIEW_BIGICON, FCIDM_SHVIEW_REPORTVIEW,
+        id, MF_BYCOMMAND);
+}
+
+static CPlItem* Control_GetCPlItem_From_MenuID(HWND hWnd, UINT id)
+{
+    HMENU hMenu, hSubMenu;
+    MENUITEMINFOW mii;
+
+    /* retrieve the CPlItem structure from the menu item data */
+    hMenu = GetMenu(hWnd);
+
+    if (!hMenu)
+        return NULL;
+
+    hSubMenu = GetSubMenu(hMenu, 0);
+
+    if (!hSubMenu)
+        return NULL;
+
+    mii.cbSize = sizeof(MENUITEMINFOW);
+    mii.fMask = MIIM_DATA;
+
+    if (!GetMenuItemInfoW(hSubMenu, id, FALSE, &mii))
+        return NULL;
+
+    return (CPlItem *) mii.dwItemData;
+}
+
+static CPlItem* Control_GetCPlItem_From_ListView(CPanel *panel)
+{
+    LVITEMW lvItem;
+    int selitem;
+
+    selitem = SendMessageW(panel->hWndListView, LVM_GETNEXTITEM, -1, LVNI_FOCUSED
+        | LVNI_SELECTED);
+
+    if (selitem != -1)
+    {
+        lvItem.iItem = selitem;
+        lvItem.mask = LVIF_PARAM;
+
+        if (SendMessageW(panel->hWndListView, LVM_GETITEMW, 0, (LPARAM) &lvItem))
+            return (CPlItem *) lvItem.lParam;
+    }
+
+    return NULL;
+}
+
 static LRESULT WINAPI	Control_WndProc(HWND hWnd, UINT wMsg,
 					WPARAM lParam1, LPARAM lParam2)
 {
@@ -288,9 +435,19 @@
                  }
 
              case FCIDM_SHVIEW_BIGICON:
+                 Control_UpdateListViewStyle(panel, LVS_ICON, FCIDM_SHVIEW_BIGICON);
+                 return 0;
+
              case FCIDM_SHVIEW_SMALLICON:
+                 Control_UpdateListViewStyle(panel, LVS_SMALLICON, FCIDM_SHVIEW_SMALLICON);
+                 return 0;
+
              case FCIDM_SHVIEW_LISTVIEW:
+                 Control_UpdateListViewStyle(panel, LVS_LIST, FCIDM_SHVIEW_LISTVIEW);
+                 return 0;
+
              case FCIDM_SHVIEW_REPORTVIEW:
+                 Control_UpdateListViewStyle(panel, LVS_REPORT, FCIDM_SHVIEW_REPORTVIEW);
                  return 0;
 
              default:
@@ -298,28 +455,7 @@
                  if ((LOWORD(lParam1) >= IDM_CPANEL_APPLET_BASE) &&
                      (LOWORD(lParam1) <= IDM_CPANEL_APPLET_BASE + panel->total_subprogs))
                  {
-                     CPlItem *item;
-                     HMENU hMenu, hSubMenu;
-                     MENUITEMINFOW mii;
-
-                     /* retrieve the CPlItem structure from the menu item data */
-                     hMenu = GetMenu(hWnd);
-
-                     if (!hMenu)
-                         break;
-
-                     hSubMenu = GetSubMenu(hMenu, 0);
-
-                     if (!hSubMenu)
-                         break;
-
-                     mii.cbSize = sizeof(MENUITEMINFOW);
-                     mii.fMask = MIIM_DATA;
-
-                     if (!GetMenuItemInfoW(hSubMenu, LOWORD(lParam1), FALSE, &mii))
-                         break;
-
-                     item = (CPlItem *) mii.dwItemData;
+                     CPlItem *item = Control_GetCPlItem_From_MenuID(hWnd, LOWORD(lParam1));
 
                      /* execute the applet if item is valid */
                      if (item)
@@ -333,7 +469,46 @@
          }
 
          break;
+
+      case WM_NOTIFY:
+      {
+          LPNMHDR nmh = (LPNMHDR) lParam2;
+
+          switch (nmh->idFrom)
+          {
+              case IDC_LISTVIEW:
+                  switch (nmh->code)
+                  {
+                      case NM_RETURN:
+                      case NM_DBLCLK:
+                      {
+                          CPlItem *item = Control_GetCPlItem_From_ListView(panel);
+
+                          /* execute the applet if item is valid */
+                          if (item)
+                              item->applet->proc(item->applet->hWnd, CPL_DBLCLK,
+                                  item->id, item->applet->info[item->id].lData);
+
+                          return 0;
+                      }
+                  }
+
+                  break;
+          }
+
+          break;
       }
+
+      case WM_SIZE:
+      {
+          RECT rect;
+
+          GetClientRect(hWnd, &rect);
+          MoveWindow(panel->hWndListView, 0, 0, rect.right, rect.bottom, TRUE);
+
+          return 0;
+      }
+     }
    }
 
    return DefWindowProcW(hWnd, wMsg, lParam1, lParam2);
@@ -353,7 +528,7 @@
     wc.lpfnWndProc = Control_WndProc;
     wc.cbClsExtra = 0;
     wc.cbWndExtra = sizeof(CPlApplet*);
-    wc.hInstance = hInst;
+    wc.hInstance = panel->hInst = hInst;
     wc.hIcon = 0;
     wc.hCursor = LoadCursorW( 0, (LPWSTR)IDC_ARROW );
     wc.hbrBackground = GetStockObject(WHITE_BRUSH);
diff --git a/dlls/shell32/cpanel.h b/dlls/shell32/cpanel.h
index 219d7d0..b52ad97 100644
--- a/dlls/shell32/cpanel.h
+++ b/dlls/shell32/cpanel.h
@@ -34,9 +34,13 @@
 } CPlApplet;
 
 typedef struct CPanel {
-    CPlApplet*		first;		/* linked list */
-    HWND		hWnd;
-    unsigned total_subprogs;
+    CPlApplet*  first;
+    HWND        hWnd;
+    HINSTANCE   hInst;
+    unsigned    total_subprogs;
+    HWND        hWndListView;
+    HIMAGELIST  hImageListLarge;
+    HIMAGELIST  hImageListSmall;
 } CPanel;
 
 /* structure to reference an individual control panel item */
diff --git a/dlls/shell32/cpanelfolder.c b/dlls/shell32/cpanelfolder.c
index 93a79c5..d3934a0 100644
--- a/dlls/shell32/cpanelfolder.c
+++ b/dlls/shell32/cpanelfolder.c
@@ -40,6 +40,7 @@
 #include "ole2.h"
 #include "shlguid.h"
 
+#include "commctrl.h"
 #include "cpanel.h"
 #include "enumidlist.h"
 #include "pidl.h"
diff --git a/dlls/shell32/shell32_Bg.rc b/dlls/shell32/shell32_Bg.rc
index 2b72c59..8624231 100644
--- a/dlls/shell32/shell32_Bg.rc
+++ b/dlls/shell32/shell32_Bg.rc
@@ -242,5 +242,7 @@
 
 	IDS_NEWFOLDER		"New Folder"
 
-	IDS_CPANEL_TITLE             "Wine Control Panel"
+	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Ca.rc b/dlls/shell32/shell32_Ca.rc
index 95186dc..930d6a9 100644
--- a/dlls/shell32/shell32_Ca.rc
+++ b/dlls/shell32/shell32_Ca.rc
@@ -95,4 +95,6 @@
 STRINGTABLE
 {
     IDS_CPANEL_TITLE            "Wine Control Panel"
+    IDS_CPANEL_NAME             "Name"
+    IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Cn.rc b/dlls/shell32/shell32_Cn.rc
index 00a0e93..3c65a63 100644
--- a/dlls/shell32/shell32_Cn.rc
+++ b/dlls/shell32/shell32_Cn.rc
@@ -106,6 +106,8 @@
 	IDS_SHV_COLUMN9		"Comments" /*FIXME*/
 
 	IDS_CPANEL_TITLE	"Wine Control Panel"
+	IDS_CPANEL_NAME		"Name"
+	IDS_CPANEL_DESCRIPTION	"Description"
 END
 
 #pragma code_page(default)
diff --git a/dlls/shell32/shell32_Cs.rc b/dlls/shell32/shell32_Cs.rc
index 1081011..90b32ae 100644
--- a/dlls/shell32/shell32_Cs.rc
+++ b/dlls/shell32/shell32_Cs.rc
@@ -213,4 +213,6 @@
 	IDS_NEWFOLDER		"New Folder"
 
 	IDS_CPANEL_TITLE	"Wine Control Panel"
+	IDS_CPANEL_NAME		"Name"
+	IDS_CPANEL_DESCRIPTION	"Description"
 }
diff --git a/dlls/shell32/shell32_Da.rc b/dlls/shell32/shell32_Da.rc
index 84e57af..49e7b2b 100644
--- a/dlls/shell32/shell32_Da.rc
+++ b/dlls/shell32/shell32_Da.rc
@@ -275,6 +275,8 @@
         IDS_NEWFOLDER           "Ny Folder"
 
         IDS_CPANEL_TITLE            "Wine Control Panel"
+        IDS_CPANEL_NAME             "Name"
+        IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_De.rc b/dlls/shell32/shell32_De.rc
index 6e36b1a..afe7534 100644
--- a/dlls/shell32/shell32_De.rc
+++ b/dlls/shell32/shell32_De.rc
@@ -274,6 +274,8 @@
 	IDS_NEWFOLDER		"Neuer Ordner"
 
 	IDS_CPANEL_TITLE	"Wine Control Panel"
+	IDS_CPANEL_NAME		"Name"
+	IDS_CPANEL_DESCRIPTION	"Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_En.rc b/dlls/shell32/shell32_En.rc
index 6e766a9..f752e6d 100644
--- a/dlls/shell32/shell32_En.rc
+++ b/dlls/shell32/shell32_En.rc
@@ -280,6 +280,8 @@
 	IDS_NEWFOLDER		"New Folder"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_Eo.rc b/dlls/shell32/shell32_Eo.rc
index 075a393..40c503a 100644
--- a/dlls/shell32/shell32_Eo.rc
+++ b/dlls/shell32/shell32_Eo.rc
@@ -260,4 +260,6 @@
 	IDS_NEWFOLDER		"New Folder"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Es.rc b/dlls/shell32/shell32_Es.rc
index 301e7ee..17773fc 100644
--- a/dlls/shell32/shell32_Es.rc
+++ b/dlls/shell32/shell32_Es.rc
@@ -275,6 +275,8 @@
 	IDS_NEWFOLDER		"Nueva carpeta"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_Fi.rc b/dlls/shell32/shell32_Fi.rc
index 86734c1..f0a1b5a 100644
--- a/dlls/shell32/shell32_Fi.rc
+++ b/dlls/shell32/shell32_Fi.rc
@@ -242,4 +242,6 @@
 	IDS_NEWFOLDER		"New Folder"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Fr.rc b/dlls/shell32/shell32_Fr.rc
index a088940..4b23580 100644
--- a/dlls/shell32/shell32_Fr.rc
+++ b/dlls/shell32/shell32_Fr.rc
@@ -280,6 +280,8 @@
  IDS_NEWFOLDER		"Nouveau dossier"
 
  IDS_CPANEL_TITLE            "Wine Control Panel"
+ IDS_CPANEL_NAME             "Name"
+ IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_Hu.rc b/dlls/shell32/shell32_Hu.rc
index b823873..814e0c6 100644
--- a/dlls/shell32/shell32_Hu.rc
+++ b/dlls/shell32/shell32_Hu.rc
@@ -94,4 +94,6 @@
 STRINGTABLE
 {
     IDS_CPANEL_TITLE            "Wine Control Panel"
+    IDS_CPANEL_NAME             "Name"
+    IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_It.rc b/dlls/shell32/shell32_It.rc
index e9fdda6..baa0077 100644
--- a/dlls/shell32/shell32_It.rc
+++ b/dlls/shell32/shell32_It.rc
@@ -244,4 +244,6 @@
 	IDS_NEWFOLDER		"New Folder"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Ja.rc b/dlls/shell32/shell32_Ja.rc
index 9edf159..281f30f 100644
--- a/dlls/shell32/shell32_Ja.rc
+++ b/dlls/shell32/shell32_Ja.rc
@@ -137,6 +137,8 @@
 	IDS_OPEN		"ŠJ‚­"
 
 	IDS_CPANEL_TITLE	"Wine Control Panel"
+	IDS_CPANEL_NAME		"Name"
+	IDS_CPANEL_DESCRIPTION	"Description"
 }
 
 SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152
diff --git a/dlls/shell32/shell32_Ko.rc b/dlls/shell32/shell32_Ko.rc
index a41a1c6..de3cf61 100644
--- a/dlls/shell32/shell32_Ko.rc
+++ b/dlls/shell32/shell32_Ko.rc
@@ -285,6 +285,8 @@
 IDS_NEWFOLDER		"»õ Æú´õ"
 
 IDS_CPANEL_TITLE            "Wine Control Panel"
+IDS_CPANEL_NAME             "Name"
+IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_Nl.rc b/dlls/shell32/shell32_Nl.rc
index 91e84e6..ac3f18b 100644
--- a/dlls/shell32/shell32_Nl.rc
+++ b/dlls/shell32/shell32_Nl.rc
@@ -282,6 +282,8 @@
 	IDS_NEWFOLDER		"Nieuwe Map"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_No.rc b/dlls/shell32/shell32_No.rc
index 0be120d..0a8fc20 100644
--- a/dlls/shell32/shell32_No.rc
+++ b/dlls/shell32/shell32_No.rc
@@ -280,6 +280,8 @@
 	IDS_NEWFOLDER		"Ny mappe"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_Pl.rc b/dlls/shell32/shell32_Pl.rc
index 3df0d58..420c167 100644
--- a/dlls/shell32/shell32_Pl.rc
+++ b/dlls/shell32/shell32_Pl.rc
@@ -281,6 +281,8 @@
 	IDS_NEWFOLDER		"Nowy Folder"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_Pt.rc b/dlls/shell32/shell32_Pt.rc
index 9c437c4..ed8b529 100644
--- a/dlls/shell32/shell32_Pt.rc
+++ b/dlls/shell32/shell32_Pt.rc
@@ -361,6 +361,8 @@
 	IDS_NEWFOLDER               "Nova Pasta"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
@@ -450,4 +452,6 @@
 	IDS_NEWFOLDER               "Nova Pasta"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Ro.rc b/dlls/shell32/shell32_Ro.rc
index 584d1e2..25b4565 100644
--- a/dlls/shell32/shell32_Ro.rc
+++ b/dlls/shell32/shell32_Ro.rc
@@ -233,6 +233,8 @@
         IDS_FAVORITES           "Favorite"
 
         IDS_CPANEL_TITLE        "Wine Control Panel"
+        IDS_CPANEL_NAME         "Name"
+        IDS_CPANEL_DESCRIPTION  "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_Ru.rc b/dlls/shell32/shell32_Ru.rc
index b473bf5..b643cac 100644
--- a/dlls/shell32/shell32_Ru.rc
+++ b/dlls/shell32/shell32_Ru.rc
@@ -275,4 +275,6 @@
     IDS_NEWFOLDER		"New Folder"
 
     IDS_CPANEL_TITLE            "Wine Control Panel"
+    IDS_CPANEL_NAME             "Name"
+    IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Si.rc b/dlls/shell32/shell32_Si.rc
index e20c8b8..b7a9137 100644
--- a/dlls/shell32/shell32_Si.rc
+++ b/dlls/shell32/shell32_Si.rc
@@ -275,6 +275,8 @@
 	IDS_NEWFOLDER		"Nova mapa"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
 
 STRINGTABLE
diff --git a/dlls/shell32/shell32_Sk.rc b/dlls/shell32/shell32_Sk.rc
index 66ea78e..2df139d 100644
--- a/dlls/shell32/shell32_Sk.rc
+++ b/dlls/shell32/shell32_Sk.rc
@@ -105,4 +105,6 @@
 	IDS_SHV_COLUMN9		"Comments" /*FIXME*/
 
 	IDS_CPANEL_TITLE	"Wine Control Panel"
+	IDS_CPANEL_NAME		"Name"
+	IDS_CPANEL_DESCRIPTION	"Description"
 END
diff --git a/dlls/shell32/shell32_Sv.rc b/dlls/shell32/shell32_Sv.rc
index 7e63b55..c65af34 100644
--- a/dlls/shell32/shell32_Sv.rc
+++ b/dlls/shell32/shell32_Sv.rc
@@ -94,4 +94,6 @@
 STRINGTABLE
 {
     IDS_CPANEL_TITLE            "Wine Control Panel"
+    IDS_CPANEL_NAME             "Name"
+    IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Tr.rc b/dlls/shell32/shell32_Tr.rc
index fe4df8f..dc2ea30 100644
--- a/dlls/shell32/shell32_Tr.rc
+++ b/dlls/shell32/shell32_Tr.rc
@@ -243,4 +243,6 @@
 	IDS_NEWFOLDER		"New Folder"
 
 	IDS_CPANEL_TITLE            "Wine Control Panel"
+	IDS_CPANEL_NAME             "Name"
+	IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Uk.rc b/dlls/shell32/shell32_Uk.rc
index c3d5637..624368a 100644
--- a/dlls/shell32/shell32_Uk.rc
+++ b/dlls/shell32/shell32_Uk.rc
@@ -209,4 +209,6 @@
 	IDS_NEWFOLDER		"New Folder"
 
 	IDS_CPANEL_TITLE	"Wine Control Panel"
+	IDS_CPANEL_NAME		"Name"
+	IDS_CPANEL_DESCRIPTION	"Description"
 }
diff --git a/dlls/shell32/shell32_Wa.rc b/dlls/shell32/shell32_Wa.rc
index 3bacc45..393d65d 100644
--- a/dlls/shell32/shell32_Wa.rc
+++ b/dlls/shell32/shell32_Wa.rc
@@ -99,4 +99,6 @@
 STRINGTABLE
 {
     IDS_CPANEL_TITLE            "Wine Control Panel"
+    IDS_CPANEL_NAME             "Name"
+    IDS_CPANEL_DESCRIPTION      "Description"
 }
diff --git a/dlls/shell32/shell32_Zh.rc b/dlls/shell32/shell32_Zh.rc
index 980321f..cb3839a 100644
--- a/dlls/shell32/shell32_Zh.rc
+++ b/dlls/shell32/shell32_Zh.rc
@@ -106,6 +106,8 @@
 	IDS_SHV_COLUMN9		"Comments" /*FIXME*/
 
 	IDS_CPANEL_TITLE	"Wine Control Panel"
+	IDS_CPANEL_NAME		"Name"
+	IDS_CPANEL_DESCRIPTION	"Description"
 END
 
 #pragma code_page(default)
diff --git a/dlls/shell32/shresdef.h b/dlls/shell32/shresdef.h
index 8a18ff4..c6df462 100644
--- a/dlls/shell32/shresdef.h
+++ b/dlls/shell32/shresdef.h
@@ -98,6 +98,8 @@
 #define IDS_NEWFOLDER 142
 
 #define IDS_CPANEL_TITLE            143
+#define IDS_CPANEL_NAME             144
+#define IDS_CPANEL_DESCRIPTION      145
 
 #define IDS_RUNDLG_ERROR            160
 #define IDS_RUNDLG_BROWSE_ERROR     161