Commit 2812a9ec authored by Owen Rudge's avatar Owen Rudge Committed by Alexandre Julliard

appwiz.cpl: Add column headers to listview.

parent 6d4f3d5d
...@@ -26,6 +26,10 @@ STRINGTABLE ...@@ -26,6 +26,10 @@ STRINGTABLE
IDS_CPL_TITLE, "Add/Remove Programs" IDS_CPL_TITLE, "Add/Remove Programs"
IDS_CPL_DESC, "Allows you to install new software, or remove existing software from your computer." IDS_CPL_DESC, "Allows you to install new software, or remove existing software from your computer."
IDS_TAB1_TITLE, "Applications" 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... */ /* 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... */
......
...@@ -68,6 +68,76 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, ...@@ -68,6 +68,76 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
return TRUE; 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 * Name : MainDlgProc
* Description: Callback procedure for main tab * Description: Callback procedure for main tab
...@@ -79,6 +149,16 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, ...@@ -79,6 +149,16 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
*/ */
static BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) 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; return FALSE;
} }
......
...@@ -38,3 +38,6 @@ ...@@ -38,3 +38,6 @@
#define IDS_CPL_TITLE 1 #define IDS_CPL_TITLE 1
#define IDS_CPL_DESC 2 #define IDS_CPL_DESC 2
#define IDS_TAB1_TITLE 3 #define IDS_TAB1_TITLE 3
#define IDS_COLUMN_NAME 6
#define IDS_COLUMN_PUBLISHER 7
#define IDS_COLUMN_VERSION 8
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment