3 * FILE: dll/cpl/input/input.c
5 * PROGRAMMER: Dmitry Chapyshev (lentind@yandex.ru)
13 #define NUM_APPLETS (1)
15 static LONG CALLBACK
SystemApplet(HWND hwnd
, UINT uMsg
, LPARAM lParam1
, LPARAM lParam2
);
17 HINSTANCE hApplet
= NULL
;
20 static APPLET Applets
[NUM_APPLETS
] =
22 {IDI_CPLSYSTEM
, IDS_CPLSYSTEMNAME
, IDS_CPLSYSTEMDESCRIPTION
, SystemApplet
}
27 InitPropSheetPage(PROPSHEETPAGEW
*page
, WORD idDlg
, DLGPROC DlgProc
)
29 ZeroMemory(page
, sizeof(*page
));
31 page
->dwSize
= sizeof(*page
);
32 page
->dwFlags
= PSP_DEFAULT
;
33 page
->hInstance
= hApplet
;
34 page
->pszTemplate
= MAKEINTRESOURCEW(idDlg
);
35 page
->pfnDlgProc
= DlgProc
;
39 PropSheetProc(HWND hwndDlg
, UINT uMsg
, LPARAM lParam
)
41 // NOTE: This callback is needed to set large icon correctly.
45 case PSCB_INITIALIZED
:
47 hIcon
= LoadIconW(hApplet
, MAKEINTRESOURCEW(IDI_KEY_SHORT_ICO
));
48 SendMessageW(hwndDlg
, WM_SETICON
, ICON_BIG
, (LPARAM
)hIcon
);
57 SystemApplet(HWND hwnd
, UINT uMsg
, LPARAM lParam1
, LPARAM lParam2
)
59 PROPSHEETPAGEW page
[2];
60 PROPSHEETHEADERW header
;
61 WCHAR szCaption
[MAX_STR_LEN
];
63 LoadStringW(hApplet
, IDS_CPLSYSTEMNAME
, szCaption
, ARRAYSIZE(szCaption
));
65 ZeroMemory(&header
, sizeof(header
));
67 header
.dwSize
= sizeof(header
);
68 header
.dwFlags
= PSH_PROPSHEETPAGE
| PSH_USEICONID
| PSH_USECALLBACK
;
69 header
.hwndParent
= hwnd
;
70 header
.hInstance
= hApplet
;
71 header
.pszIcon
= MAKEINTRESOURCEW(IDI_KEY_SHORT_ICO
);
72 header
.pszCaption
= szCaption
;
73 header
.nPages
= ARRAYSIZE(page
);
74 header
.nStartPage
= 0;
76 header
.pfnCallback
= PropSheetProc
;
79 InitPropSheetPage(&page
[0], IDD_PROPPAGESETTINGS
, SettingsPageProc
);
81 /* Advanced Settings */
82 InitPropSheetPage(&page
[1], IDD_PROPPAGEADVANCEDSETTINGS
, AdvancedSettingsPageProc
);
84 return (LONG
)(PropertySheetW(&header
) != -1);
88 /* Control Panel Callback */
90 CPlApplet(HWND hwndCPl
, UINT uMsg
, LPARAM lParam1
, LPARAM lParam2
)
106 CPlInfo
= (CPLINFO
*)lParam2
;
108 CPlInfo
->idIcon
= Applets
[i
].idIcon
;
109 CPlInfo
->idName
= Applets
[i
].idName
;
110 CPlInfo
->idInfo
= Applets
[i
].idDescription
;
114 Applets
[i
].AppletProc(hwndCPl
, uMsg
, lParam1
, lParam2
);
123 DllMain(HINSTANCE hinstDLL
, DWORD dwReason
, LPVOID lpvReserved
)
125 UNREFERENCED_PARAMETER(lpvReserved
);
129 case DLL_PROCESS_ATTACH
:
130 case DLL_THREAD_ATTACH
: