ReactOS  0.4.15-dev-1392-g3014417
joy.c
Go to the documentation of this file.
1 /*
2  * ReactOS
3  * Copyright (C) 2004 ReactOS Team
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 /*
20  *
21  * PROJECT: ReactOS Software Control Panel
22  * FILE: dll/cpl/joy/joy.c
23  * PURPOSE: ReactOS Software Control Panel
24  * PROGRAMMER: Dmitry Chapyshev (lentind@yandex.ru)
25  * UPDATE HISTORY:
26  * 10-18-2007 Created
27  * 05-18-2020 Updated (init of dialog and combobox)
28  */
29 
30 #include "joy.h"
31 
32 #define NUM_APPLETS (1)
33 
34 LONG CALLBACK SystemApplet(HWND hwnd, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
36 
37 /* Applets */
38 
40 {
42 };
43 
44 VOID
46 {
48  RECT rect;
49  int Size;
50  TCHAR szBuf[256];
51 
53  Size = rect.right - rect.left - 250;
54 
55  LoadString(hApplet, IDS_STATUS, szBuf, sizeof(szBuf) / sizeof(TCHAR));
56 
57  ZeroMemory(&dummy, sizeof(LV_COLUMN));
59  dummy.iSubItem = 0;
60  dummy.pszText = (LPTSTR)szBuf;
61  dummy.cx = Size;
63 
65 
66  LoadString(hApplet, IDS_CONTROLLER, szBuf, sizeof(szBuf) / sizeof(TCHAR));
67 
68  ZeroMemory(&dummy, sizeof(LV_COLUMN));
70  dummy.iSubItem = 0;
71  dummy.pszText = (LPTSTR)szBuf;
72  dummy.cx = rect.right - rect.left - Size;
74 }
75 
78 {
80 
81  switch (uMsg)
82  {
83  case WM_INITDIALOG:
84  {
85  WCHAR szBuf[256];
86  HWND hComboHwnd = GetDlgItem(hwndDlg,IDC_PREFERRED_DEV_COMBO);
87 
88  LoadStringW(hApplet, IDS_NONE, szBuf, _countof(szBuf));
89  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
90  SendMessageW(hComboHwnd, CB_SETCURSEL, 0, (LPARAM)NULL);
91  break;
92  }
93 
94  case WM_COMMAND:
95  switch (LOWORD(wParam))
96  {
97  case IDOK:
98  EndDialog(hwndDlg,LOWORD(wParam));
99  break;
100 
101  case IDCANCEL:
102  EndDialog(hwndDlg,LOWORD(wParam));
103  break;
104  }
105  break;
106 
107  case WM_NOTIFY:
108  break;
109 
110  case WM_SYSCOMMAND:
111  switch (LOWORD(wParam))
112  {
113  case SC_CONTEXTHELP:
114  // Not implemented yet
115  break;
116  }
117  break;
118  }
119  return 0;
120 }
121 
124 {
126 
127  switch (uMsg)
128  {
129  case WM_INITDIALOG:
130  {
131  WCHAR szBuf[2];
132  HWND hComboHwnd;
133  szBuf[1] = UNICODE_NULL;
134 
136 
137  hComboHwnd = GetDlgItem(hwndDlg, IDC_AXES_COMBO);
138  szBuf[0] = L'2';
139  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
140  szBuf[0] = L'3';
141  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
142  szBuf[0] = L'4';
143  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
144  SendMessageW(hComboHwnd, CB_SETCURSEL, 0, 0);
145 
146  hComboHwnd = GetDlgItem(hwndDlg, IDC_BUTTONS_COMBO);
147  szBuf[0] = L'0';
148  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
149  szBuf[0] = L'1';
150  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
151  szBuf[0] = L'2';
152  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
153  szBuf[0] = L'3';
154  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
155  szBuf[0] = L'4';
156  SendMessageW(hComboHwnd, CB_ADDSTRING, 0, (LPARAM)szBuf);
157  SendMessageW(hComboHwnd, CB_SETCURSEL, 4, 0);
158 
159  break;
160  }
161 
162  case WM_COMMAND:
163  switch (LOWORD(wParam))
164  {
165  case IDOK:
166  EndDialog(hwndDlg,LOWORD(wParam));
167  break;
168 
169  case IDCANCEL:
170  EndDialog(hwndDlg,LOWORD(wParam));
171  break;
172  }
173  break;
174 
175  case WM_NOTIFY:
176  break;
177 
178  case WM_SYSCOMMAND:
179  switch (LOWORD(wParam))
180  {
181  case SC_CONTEXTHELP:
182  // Not implemented yet
183  break;
184  }
185  break;
186  }
187  return 0;
188 }
189 
192 {
194 
195  switch (uMsg)
196  {
197  case WM_INITDIALOG:
198  break;
199 
200  case WM_COMMAND:
201  switch (LOWORD(wParam))
202  {
203  case IDC_CUSTOM_BUTTON:
206  hwndDlg,
208  break;
209 
210  case IDOK:
211  EndDialog(hwndDlg,LOWORD(wParam));
212  break;
213 
214  case IDCANCEL:
215  EndDialog(hwndDlg,LOWORD(wParam));
216  break;
217  }
218  break;
219 
220  case WM_NOTIFY:
221  break;
222 
223  case WM_SYSCOMMAND:
224  switch (LOWORD(wParam))
225  {
226  case SC_CONTEXTHELP:
227  // Not implemented yet
228  break;
229  }
230  break;
231  }
232  return 0;
233 }
234 
235 /* Property page dialog callback */
238 {
239  static HICON s_hIcon = NULL, s_hIconSm = NULL;
241 
242  switch (uMsg)
243  {
244  case WM_INITDIALOG:
248  IMAGE_ICON,
251  SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)s_hIcon);
252  SendMessageW(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)s_hIconSm);
253  break;
254 
255  case WM_COMMAND:
256  switch (LOWORD(wParam))
257  {
258  case IDC_ADD_BUTTON:
261  hwndDlg,
262  AddPageProc);
263  break;
264 
265  case IDC_ADVANCED_BUTTON:
268  hwndDlg,
270  break;
271 
272  case IDOK:
273  DestroyIcon(s_hIcon);
274  DestroyIcon(s_hIconSm);
275  EndDialog(hwndDlg,LOWORD(wParam));
276  break;
277  }
278  break;
279 
280  case WM_NOTIFY:
281  break;
282 
283  case WM_SYSCOMMAND:
284  switch (LOWORD(wParam))
285  {
286  case SC_CLOSE:
287  DestroyIcon(s_hIcon);
288  DestroyIcon(s_hIconSm);
289  EndDialog(hwndDlg,LOWORD(wParam));
290  break;
291 
292  case SC_CONTEXTHELP:
293  // Not implemented yet
294  break;
295  }
296  break;
297  }
298  return 0;
299 }
300 
301 /* First Applet */
303 SystemApplet(HWND hwnd, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
304 {
306  UNREFERENCED_PARAMETER(lParam1);
307  UNREFERENCED_PARAMETER(lParam2);
308 
311  hwnd,
312  MainPageProc);
313 
314  return (LONG)TRUE;
315 }
316 
317 /* Control Panel Callback */
319 CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
320 {
321  CPLINFO *CPlInfo;
322  DWORD i;
323 
324  UNREFERENCED_PARAMETER(hwndCPl);
325 
326  i = (DWORD)lParam1;
327  switch (uMsg)
328  {
329  case CPL_INIT:
330  return TRUE;
331 
332  case CPL_GETCOUNT:
333  return NUM_APPLETS;
334 
335  case CPL_INQUIRE:
336  CPlInfo = (CPLINFO*)lParam2;
337  CPlInfo->lData = 0;
338  CPlInfo->idIcon = Applets[i].idIcon;
339  CPlInfo->idName = Applets[i].idName;
340  CPlInfo->idInfo = Applets[i].idDescription;
341  break;
342 
343  case CPL_DBLCLK:
344  Applets[i].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
345  break;
346  }
347 
348  return FALSE;
349 }
350 
351 BOOL WINAPI
353 {
355 
356  switch (dwReason)
357  {
358  case DLL_PROCESS_ATTACH:
359  case DLL_THREAD_ATTACH:
361  hApplet = hinstDLL;
362  break;
363  }
364 
365  return TRUE;
366 }
#define IDC_CONTROLLER_LIST
Definition: resource.h:20
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define MAKEINTRESOURCE
Definition: winuser.h:591
BOOL WINAPI CheckDlgButton(_In_ HWND, _In_ int, _In_ UINT)
static HICON
Definition: imagelist.c:84
#define IDOK
Definition: winuser.h:824
#define IMAGE_ICON
Definition: winuser.h:212
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define LVCF_WIDTH
Definition: commctrl.h:2583
HINSTANCE hApplet
Definition: joy.c:35
Definition: cpl.h:24
#define IDS_STATUS
Definition: resource.h:22
#define LVCF_TEXT
Definition: commctrl.h:2584
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2022
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define DLL_THREAD_ATTACH
Definition: compat.h:132
#define IDC_ADVANCED_BUTTON
Definition: resource.h:24
#define IDI_CPLSYSTEM
Definition: resource.h:4
#define IDC_ADD_BUTTON
Definition: resource.h:22
#define LV_COLUMN
Definition: commctrl.h:2543
#define IDS_NONE
Definition: resource.h:123
int idName
Definition: hotplug.h:36
int idIcon
Definition: hotplug.h:35
#define CALLBACK
Definition: compat.h:35
int idInfo
Definition: cpl.h:27
#define IDD_ADD
Definition: resource.h:16
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
#define ZeroMemory
Definition: winbase.h:1648
#define SM_CYSMICON
Definition: winuser.h:1003
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
UINT_PTR WPARAM
Definition: windef.h:207
int32_t INT_PTR
Definition: typedefs.h:64
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define DWORD
Definition: nt_native.h:44
& rect
Definition: startmenu.cpp:1413
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
Definition: joy.c:352
CHAR * LPTSTR
Definition: xmlstorage.h:192
static IN DWORD IN LPVOID lpvReserved
VOID AddColumns(HWND hList)
Definition: joy.c:45
int idIcon
Definition: cpl.h:25
#define ICON_SMALL
Definition: tnclass.cpp:48
int idDescription
Definition: hotplug.h:37
#define CPL_DBLCLK
Definition: cpl.h:16
#define LVCF_SUBITEM
Definition: commctrl.h:2585
DWORD dwReason
Definition: misc.cpp:154
#define DialogBox
Definition: winuser.h:5736
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2632
#define FALSE
Definition: types.h:117
#define UNICODE_NULL
unsigned int BOOL
Definition: ntddk_ex.h:94
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2172
long LONG
Definition: pedump.c:60
#define CB_ADDSTRING
Definition: winuser.h:1918
#define IDC_AXES_COMBO
Definition: resource.h:34
#define SC_CONTEXTHELP
Definition: winuser.h:2579
INT_PTR CALLBACK MainPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: joy.c:237
#define IDC_BUTTONS_COMBO
Definition: resource.h:37
#define IDC_PREFERRED_DEV_COMBO
Definition: resource.h:40
LONG_PTR LPARAM
Definition: windef.h:208
#define NUM_APPLETS
Definition: joy.c:32
LONG CALLBACK SystemApplet(HWND hwnd, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
Definition: joy.c:303
#define IDS_CPLSYSTEMNAME
Definition: resource.h:23
#define IDC_JOYSTICK_RADIO
Definition: resource.h:30
char TCHAR
Definition: xmlstorage.h:189
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
INT_PTR CALLBACK AddPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: joy.c:191
#define IDD_CUSTOM
Definition: resource.h:9
APPLET_PROC AppletProc
Definition: hotplug.h:38
#define _countof(array)
Definition: sndvol32.h:68
#define WINAPI
Definition: msvc.h:6
int WINAPI GetSystemMetrics(_In_ int)
unsigned long DWORD
Definition: ntddk_ex.h:95
#define IDD_PROPPAGEMAIN
Definition: resource.h:7
#define CPL_INIT
Definition: cpl.h:12
#define SM_CXSMICON
Definition: winuser.h:1002
#define CPL_INQUIRE
Definition: cpl.h:14
static const WCHAR L[]
Definition: oid.c:1250
#define CB_SETCURSEL
Definition: winuser.h:1943
LONG_PTR lData
Definition: cpl.h:28
#define WM_COMMAND
Definition: winuser.h:1722
int idName
Definition: cpl.h:26
HWND hList
Definition: livecd.c:10
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned char dummy
Definition: maze.c:118
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IDS_CPLSYSTEMDESCRIPTION
Definition: resource.h:24
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
LONG CALLBACK CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
Definition: joy.c:319
#define BST_CHECKED
Definition: winuser.h:197
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
#define SC_CLOSE
Definition: winuser.h:2567
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
INT_PTR CALLBACK CustomPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: joy.c:123
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
INT_PTR CALLBACK AdvancedPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: joy.c:77
#define IDCANCEL
Definition: winuser.h:825
APPLET Applets[NUM_APPLETS]
Definition: joy.c:39
#define IDD_ADVANCED
Definition: resource.h:10
#define WM_SYSCOMMAND
Definition: winuser.h:1723
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define CPL_GETCOUNT
Definition: cpl.h:13
#define LoadString
Definition: winuser.h:5794
#define IDC_CUSTOM_BUTTON
Definition: resource.h:26
#define WM_NOTIFY
Definition: richedit.h:61
#define ICON_BIG
Definition: tnclass.cpp:51
Definition: hotplug.h:33
#define IDS_CONTROLLER
Definition: resource.h:15