Owen Rudge : appwiz.cpl: Add column headers to listview.
Alexandre Julliard
julliard at winehq.org
Fri Jul 25 08:13:42 CDT 2008
Module: wine
Branch: master
Commit: 2812a9ecefb547b931c8b953934fe86ab5335f5c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2812a9ecefb547b931c8b953934fe86ab5335f5c
Author: Owen Rudge <owen at owenrudge.net>
Date: Mon Jul 21 19:42:12 2008 +0100
appwiz.cpl: Add column headers to listview.
---
dlls/appwiz.cpl/En.rc | 4 ++
dlls/appwiz.cpl/appwiz.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++
dlls/appwiz.cpl/res.h | 3 ++
3 files changed, 87 insertions(+), 0 deletions(-)
diff --git a/dlls/appwiz.cpl/En.rc b/dlls/appwiz.cpl/En.rc
index ad477e3..1abc788 100644
--- a/dlls/appwiz.cpl/En.rc
+++ b/dlls/appwiz.cpl/En.rc
@@ -26,6 +26,10 @@ STRINGTABLE
IDS_CPL_TITLE, "Add/Remove Programs"
IDS_CPL_DESC, "Allows you to install new software, or remove existing software from your computer."
IDS_TAB1_TITLE, "Applications"
+
+ IDS_COLUMN_NAME, "Name"
+ IDS_COLUMN_PUBLISHER, "Publisher"
+ IDS_COLUMN_VERSION, "Version"
}
/* TODO: it's best to use the constant WC_LISTVIEW instead of SysListView32 directly, but the Wine resource compiler doesn't seem to like that... */
diff --git a/dlls/appwiz.cpl/appwiz.c b/dlls/appwiz.cpl/appwiz.c
index fd06371..b07c2a7 100644
--- a/dlls/appwiz.cpl/appwiz.c
+++ b/dlls/appwiz.cpl/appwiz.c
@@ -68,6 +68,76 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
return TRUE;
}
+/* Definition of column headers for AddListViewColumns function */
+typedef struct AppWizColumn {
+ int width;
+ int fmt;
+ int title;
+} AppWizColumn;
+
+AppWizColumn columns[] = {
+ {200, LVCFMT_LEFT, IDS_COLUMN_NAME},
+ {150, LVCFMT_LEFT, IDS_COLUMN_PUBLISHER},
+ {100, LVCFMT_LEFT, IDS_COLUMN_VERSION},
+};
+
+/******************************************************************************
+ * Name : AddListViewColumns
+ * Description: Adds column headers to the list view control.
+ * Parameters : hWnd - Handle of the list view control.
+ * Returns : TRUE if completed successfully, FALSE otherwise.
+ */
+static BOOL AddListViewColumns(HWND hWnd)
+{
+ WCHAR buf[MAX_STRING_LEN];
+ LVCOLUMNW lvc;
+ int i;
+
+ lvc.mask = LVCF_FMT | LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH;
+
+ /* Add the columns */
+ for (i = 0; i < sizeof(columns) / sizeof(columns[0]); i++)
+ {
+ lvc.iSubItem = i;
+ lvc.pszText = buf;
+
+ /* set width and format */
+ lvc.cx = columns[i].width;
+ lvc.fmt = columns[i].fmt;
+
+ LoadStringW(hInst, columns[i].title, buf, sizeof(buf) / sizeof(buf[0]));
+
+ if (ListView_InsertColumnW(hWnd, i, &lvc) == -1)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/******************************************************************************
+ * Name : ResetApplicationList
+ * Description: Empties the app list, if need be, and recreates it.
+ * Parameters : bFirstRun - TRUE if this is the first time this is run, FALSE otherwise
+ * hWnd - handle of the dialog box
+ * hImageList - handle of the image list
+ * Returns : New handle of the image list.
+ */
+static HIMAGELIST ResetApplicationList(BOOL bFirstRun, HWND hWnd, HIMAGELIST hImageList)
+{
+ HWND hWndListView;
+
+ hWndListView = GetDlgItem(hWnd, IDL_PROGRAMS);
+
+ /* if first run, create the image list and add the listview columns */
+ if (bFirstRun)
+ {
+ if (!AddListViewColumns(hWndListView))
+ return NULL;
+ }
+
+ return(hImageList);
+}
+
/******************************************************************************
* Name : MainDlgProc
* Description: Callback procedure for main tab
@@ -79,6 +149,16 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
*/
static BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
+ static HIMAGELIST hImageList;
+
+ switch(msg)
+ {
+ case WM_INITDIALOG:
+ hImageList = ResetApplicationList(TRUE, hWnd, hImageList);
+
+ return TRUE;
+ }
+
return FALSE;
}
diff --git a/dlls/appwiz.cpl/res.h b/dlls/appwiz.cpl/res.h
index ff23bcb..64b4a5b 100644
--- a/dlls/appwiz.cpl/res.h
+++ b/dlls/appwiz.cpl/res.h
@@ -38,3 +38,6 @@
#define IDS_CPL_TITLE 1
#define IDS_CPL_DESC 2
#define IDS_TAB1_TITLE 3
+#define IDS_COLUMN_NAME 6
+#define IDS_COLUMN_PUBLISHER 7
+#define IDS_COLUMN_VERSION 8
More information about the wine-cvs
mailing list