xref: /reactos/dll/cpl/wined3dcfg/wined3dcfg.c (revision 4561998a)
1 #include "wined3dcfg.h"
2 
3 #include <cpl.h>
4 
5 HINSTANCE hApplet = 0;
6 
7 static int CALLBACK
8 PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
9 {
10     // NOTE: This callback is needed to set large icon correctly.
11     HICON hIcon;
12     switch (uMsg)
13     {
14         case PSCB_INITIALIZED:
15         {
16             hIcon = LoadIconW(hApplet, MAKEINTRESOURCEW(IDI_CPLICON));
17             SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
18             break;
19         }
20     }
21     return 0;
22 }
23 
24 LONG CALLBACK AppletInit(HWND hWnd)
25 {
26     PROPSHEETPAGEW psp;
27     PROPSHEETHEADERW psh;
28     WCHAR szCaption[1024];
29 
30     LoadStringW(hApplet, IDS_CPLNAME, szCaption, sizeof(szCaption) / sizeof(WCHAR));
31 
32     ZeroMemory(&psp, sizeof(PROPSHEETPAGE));
33     psp.dwSize = sizeof(PROPSHEETPAGE);
34     psp.dwFlags = PSP_DEFAULT;
35     psp.hInstance = hApplet;
36     psp.pszTemplate = MAKEINTRESOURCE(IDD_PROPPAGEGENERAL);
37     psp.pfnDlgProc = GeneralPageProc;
38 
39     ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
40     psh.dwSize = sizeof(PROPSHEETHEADER);
41     psh.dwFlags =  PSH_PROPSHEETPAGE | PSH_USEICONID | PSH_USECALLBACK;
42     psh.hwndParent = hWnd;
43     psh.hInstance = hApplet;
44     psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
45     psh.pszCaption = szCaption;
46     psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
47     psh.nStartPage = 0;
48     psh.ppsp = &psp;
49     psh.pfnCallback = PropSheetProc;
50 
51     return (LONG)(PropertySheet(&psh) != -1);
52 }
53 
54 LONG CALLBACK CPlApplet(HWND hWnd, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
55 {
56     switch (uMsg)
57     {
58         case CPL_INIT:
59             return TRUE;
60 
61         case CPL_GETCOUNT:
62             return 1;
63 
64         case CPL_INQUIRE:
65             {
66                 CPLINFO *CPlInfo = (CPLINFO*)lParam2;
67                 CPlInfo->lData = 0;
68                 CPlInfo->idIcon = IDI_CPLICON;
69                 CPlInfo->idInfo = IDS_CPLDESCRIPTION;
70                 CPlInfo->idName = IDS_CPLNAME;
71             }
72             break;
73 
74         case CPL_DBLCLK:
75             AppletInit(hWnd);
76             break;
77     }
78 
79     return FALSE;
80 }
81 
82 
83 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
84 {
85     UNREFERENCED_PARAMETER(lpvReserved);
86 
87     switch (dwReason)
88     {
89         case DLL_PROCESS_ATTACH:
90         case DLL_THREAD_ATTACH:
91             hApplet = hinstDLL;
92             break;
93     }
94 
95   return TRUE;
96 }
97