3 * PROJECT: ReactOS Console Configuration DLL
4 * LICENSE: GPL - See COPYING in the top level directory
5 * FILE: dll/win32/console/console.c
6 * PURPOSE: initialization of DLL
7 * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@student.tugraz.at)
12 #define NUM_APPLETS (1)
13 #define WM_SETCONSOLE (WM_USER+10)
16 LONG APIENTRY
InitApplet(HWND hwnd
, UINT uMsg
, LONG wParam
, LONG lParam
);
17 INT_PTR CALLBACK
OptionsProc(HWND hwndDlg
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
18 INT_PTR CALLBACK
FontProc(HWND hwndDlg
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
19 INT_PTR CALLBACK
LayoutProc(HWND hwndDlg
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
20 INT_PTR CALLBACK
ColorsProc(HWND hwndDlg
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
22 HINSTANCE hApplet
= 0;
25 APPLET Applets
[NUM_APPLETS
] =
27 {IDC_CPLICON
, IDS_CPLNAME
, IDS_CPLDESCRIPTION
, InitApplet
}
30 static COLORREF s_Colors
[] =
51 InitPropSheetPage(PROPSHEETPAGE
*psp
, WORD idDlg
, DLGPROC DlgProc
, LPARAM lParam
)
53 ZeroMemory(psp
, sizeof(PROPSHEETPAGE
));
54 psp
->dwSize
= sizeof(PROPSHEETPAGE
);
55 psp
->dwFlags
= PSP_DEFAULT
;
56 psp
->hInstance
= hApplet
;
57 psp
->pszTemplate
= MAKEINTRESOURCE(idDlg
);
58 psp
->pfnDlgProc
= DlgProc
;
65 PConsoleInfo pConInfo
;
67 pConInfo
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(ConsoleInfo
));
73 InitConsoleDefaults(PConsoleInfo pConInfo
)
75 /* initialize struct */
76 pConInfo
->InsertMode
= TRUE
;
77 pConInfo
->HistoryBufferSize
= 50;
78 pConInfo
->NumberOfHistoryBuffers
= 5;
79 pConInfo
->ScreenText
= RGB(192, 192, 192);
80 pConInfo
->ScreenBackground
= RGB(0, 0, 0);
81 pConInfo
->PopupText
= RGB(128, 0, 128);
82 pConInfo
->PopupBackground
= RGB(255, 255, 255);
83 pConInfo
->WindowSize
= (DWORD
)MAKELONG(80, 25);
84 pConInfo
->WindowPosition
= UINT_MAX
;
85 pConInfo
->ScreenBuffer
= MAKELONG(80, 300);
86 pConInfo
->UseRasterFonts
= TRUE
;
87 pConInfo
->FontSize
= (DWORD
)MAKELONG(8, 12);
88 pConInfo
->FontWeight
= FW_NORMAL
;
89 memcpy(pConInfo
->Colors
, s_Colors
, sizeof(s_Colors
));
104 UNREFERENCED_PARAMETER(lParam
);
110 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_APPLY_CURRENT
);
111 SendMessage(hDlgCtrl
, BM_SETCHECK
, BST_CHECKED
, 0);
116 if (LOWORD(wParam
) == IDOK
)
118 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_APPLY_CURRENT
);
119 if ( SendMessage(hDlgCtrl
, BM_GETCHECK
, 0, 0) == BST_CHECKED
)
120 EndDialog(hwndDlg
, IDC_RADIO_APPLY_CURRENT
);
122 EndDialog(hwndDlg
, IDC_RADIO_APPLY_ALL
);
124 else if (LOWORD(wParam
) == IDCANCEL
)
126 EndDialog(hwndDlg
, IDCANCEL
);
138 ApplyConsoleInfo(HWND hwndDlg
, PConsoleInfo pConInfo
)
142 res
= DialogBox(hApplet
, MAKEINTRESOURCE(IDD_APPLYOPTIONS
), hwndDlg
, ApplyProc
);
146 /* dont destroy when user presses cancel */
147 SetWindowLong(hwndDlg
, DWL_MSGRESULT
, PSNRET_INVALID_NOCHANGEPAGE
);
149 else if ( res
== IDC_RADIO_APPLY_ALL
)
151 pConInfo
->AppliedConfig
= TRUE
;
152 SetWindowLong(hwndDlg
, DWL_MSGRESULT
, PSNRET_NOERROR
);
153 SendMessage(pConInfo
->hConsoleWindow
, PM_APPLY_CONSOLE_INFO
, (WPARAM
)pConInfo
, (LPARAM
)TRUE
);
155 else if ( res
== IDC_RADIO_APPLY_CURRENT
)
157 pConInfo
->AppliedConfig
= TRUE
;
158 SetWindowLong(hwndDlg
, DWL_MSGRESULT
, PSNRET_NOERROR
);
159 SendMessage(pConInfo
->hConsoleWindow
, PM_APPLY_CONSOLE_INFO
, (WPARAM
)pConInfo
, (LPARAM
)TRUE
);
165 InitApplet(HWND hwnd
, UINT uMsg
, LPARAM wParam
, LPARAM lParam
)
167 PROPSHEETPAGE psp
[4];
170 PConsoleInfo pConInfo
;
171 PConsoleInfo pSharedInfo
= (PConsoleInfo
)wParam
;
173 UNREFERENCED_PARAMETER(uMsg
);
176 * console.dll shares information with win32csr with wParam, lParam
178 * wParam is a pointer to an ConsoleInfo struct
179 * lParam is a boolean parameter which specifies wheter defaults should be shown
182 pConInfo
= AllocConsoleInfo();
191 InitConsoleDefaults(pConInfo
);
195 if (IsBadReadPtr((const void *)pSharedInfo
, sizeof(ConsoleInfo
)))
198 InitConsoleDefaults(pConInfo
);
202 pConInfo
->InsertMode
= pSharedInfo
->InsertMode
;
203 pConInfo
->HistoryBufferSize
= pSharedInfo
->HistoryBufferSize
;
204 pConInfo
->NumberOfHistoryBuffers
= pSharedInfo
->NumberOfHistoryBuffers
;
205 pConInfo
->ScreenText
= pSharedInfo
->ScreenText
;
206 pConInfo
->ScreenBackground
= pSharedInfo
->ScreenBackground
;
207 pConInfo
->PopupText
= pSharedInfo
->PopupText
;
208 pConInfo
->PopupBackground
= pSharedInfo
->PopupBackground
;
209 pConInfo
->WindowSize
= pSharedInfo
->WindowSize
;
210 pConInfo
->WindowPosition
= pSharedInfo
->WindowPosition
;
211 pConInfo
->ScreenBuffer
= pSharedInfo
->ScreenBuffer
;
212 pConInfo
->UseRasterFonts
= pSharedInfo
->UseRasterFonts
;
213 pConInfo
->FontSize
= pSharedInfo
->FontSize
;
214 pConInfo
->FontWeight
= pSharedInfo
->FontWeight
;
215 memcpy(pConInfo
->Colors
, pSharedInfo
->Colors
, sizeof(s_Colors
));
219 /* console window -> is notified on a property change event */
220 pConInfo
->hConsoleWindow
= hwnd
;
222 ZeroMemory(&psh
, sizeof(PROPSHEETHEADER
));
223 psh
.dwSize
= sizeof(PROPSHEETHEADER
);
224 psh
.dwFlags
= PSH_PROPSHEETPAGE
| PSH_NOAPPLYNOW
;
226 if(_tcslen(pConInfo
->szProcessName
))
228 psh
.dwFlags
|= PSH_PROPTITLE
;
229 psh
.pszCaption
= pConInfo
->szProcessName
;
232 psh
.hwndParent
= hwnd
;
233 psh
.hInstance
= hApplet
;
234 psh
.hIcon
= LoadIcon(hApplet
, MAKEINTRESOURCE(IDC_CPLICON
));
240 InitPropSheetPage(&psp
[i
++], IDD_PROPPAGEOPTIONS
, (DLGPROC
) OptionsProc
, (LPARAM
)pConInfo
);
241 InitPropSheetPage(&psp
[i
++], IDD_PROPPAGEFONT
, (DLGPROC
) FontProc
, (LPARAM
)pConInfo
);
242 InitPropSheetPage(&psp
[i
++], IDD_PROPPAGELAYOUT
, (DLGPROC
) LayoutProc
, (LPARAM
)pConInfo
);
243 InitPropSheetPage(&psp
[i
++], IDD_PROPPAGECOLORS
, (DLGPROC
) ColorsProc
, (LPARAM
)pConInfo
);
245 return (PropertySheet(&psh
) != -1);
248 /* Control Panel Callback */
268 CPLINFO
*CPlInfo
= (CPLINFO
*)lParam2
;
269 CPlInfo
->idIcon
= Applets
[0].idIcon
;
270 CPlInfo
->idName
= Applets
[0].idName
;
271 CPlInfo
->idInfo
= Applets
[0].idDescription
;
276 InitApplet(hwndCPl
, uMsg
, lParam1
, lParam2
);
291 UNREFERENCED_PARAMETER(lpvReserved
);
295 case DLL_PROCESS_ATTACH
:
296 case DLL_THREAD_ATTACH
: