Commit 6d4f3d5d authored by Owen Rudge's avatar Owen Rudge Committed by Alexandre Julliard

appwiz.cpl: Display Add/Remove Programs dialog.

parent f4e6489e
...@@ -27,3 +27,21 @@ STRINGTABLE ...@@ -27,3 +27,21 @@ STRINGTABLE
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"
} }
/* 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... */
IDD_MAIN DIALOG 0, 0, 320, 220
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Install/Uninstall"
FONT 8, "MS Sans Serif"
{
CONTROL "To install a new program from a floppy disk, CD-ROM drive, or your hard drive, click Install.", 1000, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 7, 270, 20
CONTROL "&Install...", IDC_INSTALL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 246, 26, 64, 14
CONTROL "", -1, "STATIC", SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 7, 46, 303, 1
CONTROL 2, 1001, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 7, 21, 20
CONTROL "The following software can be automatically removed. To remove a program or to modify its installed components, select it from the list and click Add/Remove.", 1002, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 57, 270, 36
CONTROL "", IDL_PROGRAMS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SORTASCENDING | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 90, 303, 100
CONTROL "Add/&Remove...", IDC_ADDREMOVE, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 246, 198, 64, 14
CONTROL "&Support Info...", IDC_SUPPORT_INFO, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 176, 198, 64, 14
CONTROL 3, 1003, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 57, 21, 20
}
...@@ -38,12 +38,16 @@ ...@@ -38,12 +38,16 @@
#include <wingdi.h> #include <wingdi.h>
#include <winreg.h> #include <winreg.h>
#include <shellapi.h> #include <shellapi.h>
#include <commctrl.h>
#include <cpl.h> #include <cpl.h>
#include "res.h" #include "res.h"
WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl); WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl);
/* define a maximum length for various buffers we use */
#define MAX_STRING_LEN 1024
static HINSTANCE hInst; static HINSTANCE hInst;
/****************************************************************************** /******************************************************************************
...@@ -65,6 +69,61 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, ...@@ -65,6 +69,61 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
} }
/****************************************************************************** /******************************************************************************
* Name : MainDlgProc
* Description: Callback procedure for main tab
* Parameters : hWnd - hWnd of the window
* msg - reason for calling function
* wParam - additional parameter
* lParam - additional parameter
* Returns : Dependant on message
*/
static BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
return FALSE;
}
/******************************************************************************
* Name : StartApplet
* Description: Main routine for applet
* Parameters : hWnd - hWnd of the Control Panel
*/
static void StartApplet(HWND hWnd)
{
PROPSHEETPAGEW psp;
PROPSHEETHEADERW psh;
WCHAR tab_title[MAX_STRING_LEN], app_title[MAX_STRING_LEN];
/* Load the strings we will use */
LoadStringW(hInst, IDS_TAB1_TITLE, tab_title, sizeof(tab_title) / sizeof(tab_title[0]));
LoadStringW(hInst, IDS_CPL_TITLE, app_title, sizeof(app_title) / sizeof(app_title[0]));
/* Fill out the PROPSHEETPAGE */
psp.dwSize = sizeof (PROPSHEETPAGEW);
psp.dwFlags = PSP_USETITLE;
psp.hInstance = hInst;
psp.pszTemplate = MAKEINTRESOURCEW (IDD_MAIN);
psp.pszIcon = NULL;
psp.pfnDlgProc = (DLGPROC) MainDlgProc;
psp.pszTitle = tab_title;
psp.lParam = 0;
/* Fill out the PROPSHEETHEADER */
psh.dwSize = sizeof (PROPSHEETHEADERW);
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_USEICONID;
psh.hwndParent = hWnd;
psh.hInstance = hInst;
psh.pszIcon = NULL;
psh.pszCaption = app_title;
psh.nPages = 1;
psh.ppsp = &psp;
psh.pfnCallback = NULL;
psh.nStartPage = 0;
/* Display the property sheet */
PropertySheetW (&psh);
}
/******************************************************************************
* Name : CPlApplet * Name : CPlApplet
* Description: Entry point for Control Panel applets * Description: Entry point for Control Panel applets
* Parameters : hwndCPL - hWnd of the Control Panel * Parameters : hwndCPL - hWnd of the Control Panel
...@@ -75,9 +134,16 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, ...@@ -75,9 +134,16 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
*/ */
LONG CALLBACK CPlApplet(HWND hwndCPL, UINT message, LPARAM lParam1, LPARAM lParam2) LONG CALLBACK CPlApplet(HWND hwndCPL, UINT message, LPARAM lParam1, LPARAM lParam2)
{ {
INITCOMMONCONTROLSEX iccEx;
switch (message) switch (message)
{ {
case CPL_INIT: case CPL_INIT:
iccEx.dwSize = sizeof(iccEx);
iccEx.dwICC = ICC_LISTVIEW_CLASSES | ICC_TAB_CLASSES;
InitCommonControlsEx(&iccEx);
return TRUE; return TRUE;
case CPL_GETCOUNT: case CPL_GETCOUNT:
...@@ -94,6 +160,10 @@ LONG CALLBACK CPlApplet(HWND hwndCPL, UINT message, LPARAM lParam1, LPARAM lPara ...@@ -94,6 +160,10 @@ LONG CALLBACK CPlApplet(HWND hwndCPL, UINT message, LPARAM lParam1, LPARAM lPara
break; break;
} }
case CPL_DBLCLK:
StartApplet(hwndCPL);
break;
} }
return FALSE; return FALSE;
......
...@@ -19,6 +19,17 @@ ...@@ -19,6 +19,17 @@
* *
*/ */
/* Dialogs */
#define IDD_MAIN 1
#define IDD_INFO 2
/* Dialog controls */
#define IDC_INSTALL 1010
#define IDL_PROGRAMS 1011
#define IDC_ADDREMOVE 1012
#define IDC_SUPPORT_INFO 1013
/* Icons */ /* Icons */
#define ICO_MAIN 1 #define ICO_MAIN 1
......
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