diff --git a/reactos/dll/win32/console/colors.c b/reactos/dll/win32/console/colors.c index ada0b6b9f57..087c9a06e3a 100644 --- a/reactos/dll/win32/console/colors.c +++ b/reactos/dll/win32/console/colors.c @@ -9,6 +9,80 @@ #include "console.h" + +static COLORREF s_Colors[] = +{ + RGB(0, 0, 0), + RGB(0, 0, 128), + RGB(0, 128, 0), + RGB(0, 128, 128), + RGB(128, 0, 0), + RGB(128, 0, 128), + RGB(128, 128, 0), + RGB(192, 192, 192), + RGB(128, 128, 128), + RGB(0, 0, 255), + RGB(0, 255, 0), + RGB(0, 255, 255), + RGB(255, 0, 0), + RGB(255, 0, 255), + RGB(255, 255, 0), + RGB(255, 255, 255) +}; + +static TCHAR szText[1024]; + + +static +BOOL +PaintStaticControls(HWND hwndDlg, PConsoleInfo pConInfo, LPDRAWITEMSTRUCT drawItem) +{ + HBRUSH hBrush; + DWORD index; + + if (drawItem->CtlID < IDC_STATIC_COLOR1 || drawItem->CtlID > IDC_STATIC_COLOR16) + { + COLORREF pbkColor, ptColor; + COLORREF nbkColor, ntColor; + /* draw static controls */ + if (drawItem->CtlID == IDC_STATIC_SCREEN_COLOR) + { + nbkColor = pConInfo->ScreenBackground; + hBrush = CreateSolidBrush(nbkColor); + ntColor = pConInfo->ScreenText; + } + else + { + nbkColor = pConInfo->PopupBackground; + hBrush = CreateSolidBrush(nbkColor); + ntColor = pConInfo->PopupText; + } + FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); + DeleteObject((HGDIOBJ)hBrush); + ptColor = SetTextColor(drawItem->hDC, ntColor); + pbkColor = SetBkColor(drawItem->hDC, nbkColor); + if (ntColor != nbkColor) + { + /* hide text when it has same background color as text color */ + DrawText(drawItem->hDC, szText, _tcslen(szText), &drawItem->rcItem, 0); + } + SetTextColor(drawItem->hDC, ptColor); + SetBkColor(drawItem->hDC, pbkColor); + return TRUE; + } + + index = drawItem->CtlID - IDC_STATIC_COLOR1; + hBrush = CreateSolidBrush(s_Colors[index]); + if (!hBrush) + { + return FALSE; + } + + FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); + DeleteObject((HGDIOBJ)hBrush); + return TRUE; +} + INT_PTR CALLBACK ColorsProc( @@ -18,14 +92,160 @@ ColorsProc( LPARAM lParam ) { - UNREFERENCED_PARAMETER(hwndDlg) - UNREFERENCED_PARAMETER(wParam) - UNREFERENCED_PARAMETER(lParam) + PConsoleInfo pConInfo; + LPNMUPDOWN lpnmud; + + pConInfo = (PConsoleInfo) GetWindowLongPtr(hwndDlg, DWLP_USER); switch(uMsg) { case WM_INITDIALOG: + { + pConInfo = (PConsoleInfo) ((LPPROPSHEETPAGE)lParam)->lParam; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo); + ZeroMemory(szText, sizeof(szText)); + LoadString(hApplet, IDS_SCREEN_TEXT, szText, sizeof(szText) / sizeof(TCHAR)); + SendMessage(GetDlgItem(hwndDlg, IDC_RADIO_SCREEN_BACKGROUND), BM_SETCHECK, BST_CHECKED, 0); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_RED), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0)); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_GREEN), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0)); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_BLUE), UDM_SETRANGE, 0, (LPARAM)MAKELONG(255, 0)); + InvalidateRect(hwndDlg, NULL, TRUE); return TRUE; + } + case WM_DRAWITEM: + { + return PaintStaticControls(hwndDlg, pConInfo, (LPDRAWITEMSTRUCT) lParam); + } + case WM_NOTIFY: + { + DWORD red = -1; + DWORD green = -1; + DWORD blue = -1; + + lpnmud = (LPNMUPDOWN) lParam; + + if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_RED) + { + red = lpnmud->iPos; + } + else if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_GREEN) + { + green = lpnmud->iPos; + } + else if (lpnmud->hdr.idFrom == IDC_UPDOWN_COLOR_BLUE) + { + blue = lpnmud->iPos; + } + + if (red == -1) + { + red = SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_RED), UDM_GETPOS, 0, 0); + if (HIWORD(red)) + { + //TODO: handle error + break; + } + red = LOBYTE(red); + } + + if (green == -1) + { + green = SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_GREEN), UDM_GETPOS, 0, 0); + if (HIWORD(green)) + { + //TODO: handle error + break; + } + green = LOBYTE(green); + } + + if (blue == -1) + { + blue = SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_COLOR_BLUE), UDM_GETPOS, 0, 0); + if (HIWORD(blue)) + { + //TODO: handle error + break; + } + blue = LOBYTE(blue); + } + s_Colors[pConInfo->ActiveStaticControl] = RGB(red, green, blue); + InvalidateRect(hwndDlg, NULL, TRUE); //FIXME + break; + } + case WM_COMMAND: + { + switch(LOWORD(wParam)) + { + case IDC_RADIO_SCREEN_TEXT: + { + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->ScreenText), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->ScreenText), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->ScreenText), FALSE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE); + break; + } + case IDC_RADIO_SCREEN_BACKGROUND: + { + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->ScreenBackground), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->ScreenBackground), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->ScreenBackground), FALSE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE); + break; + } + case IDC_RADIO_POPUP_TEXT: + { + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->PopupText), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->PopupText), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->PopupText), FALSE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE); + break; + } + case IDC_RADIO_POPUP_BACKGROUND: + { + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->PopupBackground), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->PopupBackground), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->PopupBackground), FALSE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE); + break; + } + } + if (HIWORD(wParam) == STN_CLICKED && LOWORD(wParam) >= IDC_STATIC_COLOR1 && LOWORD(wParam) <= IDC_STATIC_COLOR16) + { + DWORD index = LOWORD(wParam) - IDC_STATIC_COLOR1; + + pConInfo->ActiveStaticControl = index; + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(s_Colors[index]), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(s_Colors[index]), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(s_Colors[index]), FALSE); + + /* update global struct */ + if (SendMessage(GetDlgItem(hwndDlg, IDC_RADIO_SCREEN_TEXT), BM_GETCHECK, 0, 0) & BST_CHECKED) + { + pConInfo->ScreenText = s_Colors[index]; + } + else if (SendMessage(GetDlgItem(hwndDlg, IDC_RADIO_SCREEN_BACKGROUND), BM_GETCHECK, 0, 0) & BST_CHECKED) + { + pConInfo->ScreenBackground = s_Colors[index]; + } + else if (SendMessage(GetDlgItem(hwndDlg, IDC_RADIO_POPUP_TEXT), BM_GETCHECK, 0, 0) & BST_CHECKED) + { + pConInfo->PopupText = s_Colors[index]; + } + else if (SendMessage(GetDlgItem(hwndDlg, IDC_RADIO_POPUP_BACKGROUND), BM_GETCHECK, 0, 0) & BST_CHECKED) + { + pConInfo->PopupBackground = s_Colors[index]; + } + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE); + InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE); + break; + } + } + default: break; diff --git a/reactos/dll/win32/console/console.c b/reactos/dll/win32/console/console.c index f6023f60795..44a382d055f 100644 --- a/reactos/dll/win32/console/console.c +++ b/reactos/dll/win32/console/console.c @@ -26,7 +26,7 @@ APPLET Applets[NUM_APPLETS] = }; static void -InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc) +InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, LPARAM lParam) { ZeroMemory(psp, sizeof(PROPSHEETPAGE)); psp->dwSize = sizeof(PROPSHEETPAGE); @@ -34,10 +34,11 @@ InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc) psp->hInstance = hApplet; psp->pszTemplate = MAKEINTRESOURCE(idDlg); psp->pfnDlgProc = DlgProc; + psp->lParam = lParam; } -BOOL -InitConsoleInfo(HWND hwnd) +PConsoleInfo +InitConsoleInfo() { PConsoleInfo pConInfo; STARTUPINFO StartupInfo; @@ -46,15 +47,27 @@ InitConsoleInfo(HWND hwnd) pConInfo = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ConsoleInfo)); if (!pConInfo) - return FALSE; + { + return NULL; + } /* initialize struct */ pConInfo->InsertMode = TRUE; pConInfo->HistoryBufferSize = 50; pConInfo->NumberOfHistoryBuffers = 5; + pConInfo->ScreenText = RGB(192, 192, 192); + pConInfo->ScreenBackground = RGB(0, 0, 0); + pConInfo->PopupText = RGB(128, 0, 128); + pConInfo->PopupBackground = RGB(255, 255, 255); + + + GetModuleFileName(NULL, pConInfo->szProcessName, MAX_PATH); + //MessageBox(hwnd, pConInfo->szProcessName, _T("GetModuleFileName"), MB_OK); GetStartupInfo(&StartupInfo); + + if ( StartupInfo.lpTitle ) { if ( _tcslen(StartupInfo.lpTitle) ) @@ -89,11 +102,7 @@ InitConsoleInfo(HWND hwnd) { _tcscpy(pConInfo->szProcessName, _T("Console")); } - - SetWindowText(hwnd, pConInfo->szProcessName); - SetWindowLongPtr(hwnd, DWLP_USER , (LONG)pConInfo); - - return TRUE; + return pConInfo; } INT_PTR @@ -107,7 +116,7 @@ ApplyProc( { HWND hDlgCtrl; - UNREFERENCED_PARAMETER(lParam) + UNREFERENCED_PARAMETER(lParam); switch(uMsg) { @@ -168,7 +177,7 @@ PropSheetProc( LPARAM lParam ) { - PConsoleInfo pConInfo = (PConsoleInfo) GetWindowLongPtr(hwndDlg, DWLP_USER); + PConsoleInfo pConInfo = (PConsoleInfo) GetWindowLongPtr(GetParent(hwndDlg), DWLP_USER); switch(uMsg) { @@ -197,10 +206,7 @@ PropSheetProc( } break; } - case PSCB_INITIALIZED: - { - break; - } + default: break; } @@ -214,13 +220,14 @@ InitApplet(HWND hwnd, UINT uMsg, LONG wParam, LONG lParam) PROPSHEETPAGE psp[4]; PROPSHEETHEADER psh; INT i=0; + PConsoleInfo pConInfo; - UNREFERENCED_PARAMETER(hwnd) - UNREFERENCED_PARAMETER(uMsg) - UNREFERENCED_PARAMETER(wParam) - UNREFERENCED_PARAMETER(lParam) - + UNREFERENCED_PARAMETER(hwnd); + UNREFERENCED_PARAMETER(uMsg); + UNREFERENCED_PARAMETER(wParam); + UNREFERENCED_PARAMETER(lParam); + pConInfo = InitConsoleInfo(); ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); psh.dwSize = sizeof(PROPSHEETHEADER); @@ -234,10 +241,10 @@ InitApplet(HWND hwnd, UINT uMsg, LONG wParam, LONG lParam) psh.ppsp = psp; psh.pfnCallback = PropSheetProc; - InitPropSheetPage(&psp[i++], IDD_PROPPAGEOPTIONS, (DLGPROC) OptionsProc); - InitPropSheetPage(&psp[i++], IDD_PROPPAGEFONT, (DLGPROC) FontProc); - InitPropSheetPage(&psp[i++], IDD_PROPPAGELAYOUT, (DLGPROC) LayoutProc); - InitPropSheetPage(&psp[i++], IDD_PROPPAGECOLORS, (DLGPROC) ColorsProc); + InitPropSheetPage(&psp[i++], IDD_PROPPAGEOPTIONS, (DLGPROC) OptionsProc, (LPARAM)pConInfo); + InitPropSheetPage(&psp[i++], IDD_PROPPAGEFONT, (DLGPROC) FontProc, (LPARAM)pConInfo); + InitPropSheetPage(&psp[i++], IDD_PROPPAGELAYOUT, (DLGPROC) LayoutProc, (LPARAM)pConInfo); + InitPropSheetPage(&psp[i++], IDD_PROPPAGECOLORS, (DLGPROC) ColorsProc, (LPARAM)pConInfo); return (PropertySheet(&psh) != -1); } @@ -287,7 +294,7 @@ DllMain( DWORD dwReason, LPVOID lpvReserved) { - UNREFERENCED_PARAMETER(lpvReserved) + UNREFERENCED_PARAMETER(lpvReserved); switch(dwReason) { diff --git a/reactos/dll/win32/console/console.def b/reactos/dll/win32/console/console.def index 242d6e44708..c1622ec4db8 100644 --- a/reactos/dll/win32/console/console.def +++ b/reactos/dll/win32/console/console.def @@ -1,6 +1,6 @@ LIBRARY console.dll EXPORTS -CPlApplet@16 +CPlApplet ; EOF diff --git a/reactos/dll/win32/console/console.h b/reactos/dll/win32/console/console.h index d58807afb33..ec946e74ce6 100644 --- a/reactos/dll/win32/console/console.h +++ b/reactos/dll/win32/console/console.h @@ -29,9 +29,17 @@ typedef struct TAGConsoleInfo DWORD QuickEdit; DWORD InsertMode; + DWORD ActiveStaticControl; + COLORREF ScreenText; + COLORREF ScreenBackground; + COLORREF PopupText; + COLORREF PopupBackground; + } ConsoleInfo, *PConsoleInfo; BOOL WriteConsoleOptions(PConsoleInfo pConInfo); -BOOL InitConsoleInfo(HWND hwnd); + +//globals +extern HINSTANCE hApplet; #endif /* CONSOLE_H__ */ diff --git a/reactos/dll/win32/console/en.rc b/reactos/dll/win32/console/en.rc index e981ae80acf..a011d2ad800 100644 --- a/reactos/dll/win32/console/en.rc +++ b/reactos/dll/win32/console/en.rc @@ -7,6 +7,8 @@ * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@student.tugraz.at) */ +#include + LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 250, 220 @@ -24,10 +26,10 @@ CONTROL "F&ull Screen", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | W GROUPBOX "Command History:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT "&Buffer Size", -1, 25, 100, 60, 15 EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 30, 15, ES_RIGHT | WS_GROUP -CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 115, 100, 12, 12 +CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 115, 100, 12, 12 LTEXT "&Number of Buffers:", -1, 25, 120, 80, 15 EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | WS_GROUP -CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 115, 120, 12, 12 +CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 115, 120, 12, 12 CHECKBOX "&Discard Old Duplicates", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15 @@ -101,31 +103,31 @@ LTEXT "&Red:", -1, 125, 25, 30, 10 EDITTEXT IDC_EDIT_COLOR_RED, 150, 25, 30, 10, ES_RIGHT | WS_GROUP CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 25, 30, 10 LTEXT "&Green:", -1, 125, 35, 30, 10 -EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 35, 30, 10, ES_RIGHT | WS_GROUP +EDITTEXT IDC_EDIT_COLOR_GREEN, 150, 35, 30, 10, ES_RIGHT | WS_GROUP CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 35, 30, 10 LTEXT "&Blue:", -1, 125, 45, 30, 10 EDITTEXT IDC_EDIT_COLOR_BLUE, 150, 45, 30, 10, ES_RIGHT | WS_GROUP CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 165, 45, 30, 10 -CONTROL "", IDC_STATIC_COLOR1, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 15, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR2, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 27, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR3, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 39, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR4, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 51, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR5, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 63, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR6, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 75, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR7, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 87, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR8, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 99, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR9, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 111, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR10, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 123, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR11, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 135, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR12, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 147, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR13, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 159, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR14, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 171, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR15, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 183, 90, 10, 10 -CONTROL "", IDC_STATIC_COLOR16, "Static", SS_BLACKRECT | SS_NOTIFY | SS_SUNKEN, 195, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 15, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 27, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 39, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 51, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 63, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 75, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 99, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 111, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 123, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 135, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 147, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 159, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 183, 90, 10, 10 +CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 195, 90, 10, 10 GROUPBOX "Selected Screen Colors", -1, 10, 110, 200, 40 -CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_BLACKRECT | SS_SUNKEN, 15, 120, 180, 20 +CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 120, 180, 20 GROUPBOX "Selected Popup Colors", -1, 10, 155, 200, 40 -CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_BLACKRECT | SS_SUNKEN, 15, 165, 180, 20 +CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 180, 20 END IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 100 @@ -144,4 +146,5 @@ BEGIN IDS_CPLNAME "Console" IDS_CPLDESCRIPTION "Configures console properties." IDS_APPLY_SHORTCUT_ALL "Modify &shortcut that started this window" + IDS_SCREEN_TEXT "C:\ReactOS> dir\nSYSTEM 10-01-99 5:00\nSYSTEM32 10-01-99 5:00" END diff --git a/reactos/dll/win32/console/font.c b/reactos/dll/win32/console/font.c index 0bb7b401b09..7988b97b16a 100644 --- a/reactos/dll/win32/console/font.c +++ b/reactos/dll/win32/console/font.c @@ -19,9 +19,9 @@ FontProc( LPARAM lParam ) { - UNREFERENCED_PARAMETER(hwndDlg) - UNREFERENCED_PARAMETER(wParam) - UNREFERENCED_PARAMETER(lParam) + UNREFERENCED_PARAMETER(hwndDlg); + UNREFERENCED_PARAMETER(wParam); + switch(uMsg) { diff --git a/reactos/dll/win32/console/layout.c b/reactos/dll/win32/console/layout.c index 7a9294b2f65..08e9c84cbc9 100644 --- a/reactos/dll/win32/console/layout.c +++ b/reactos/dll/win32/console/layout.c @@ -18,15 +18,19 @@ LayoutProc( LPARAM lParam ) { - UNREFERENCED_PARAMETER(hwndDlg) - UNREFERENCED_PARAMETER(wParam) - UNREFERENCED_PARAMETER(lParam) + PConsoleInfo pConInfo = (PConsoleInfo)GetWindowLongPtr(hwndDlg, DWLP_USER); + + UNREFERENCED_PARAMETER(hwndDlg); + UNREFERENCED_PARAMETER(wParam); switch(uMsg) { case WM_INITDIALOG: + { + pConInfo = (PConsoleInfo) ((LPPROPSHEETPAGE)lParam)->lParam; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo); return TRUE; - + } default: break; } diff --git a/reactos/dll/win32/console/options.c b/reactos/dll/win32/console/options.c index aadcb61a30e..131621f7905 100644 --- a/reactos/dll/win32/console/options.c +++ b/reactos/dll/win32/console/options.c @@ -9,7 +9,13 @@ #include "console.h" -BOOLEAN InitializeOptionsDialog(); +static +void +UpdateDialogElements(HWND hwndDlg, PConsoleInfo pConInfo); + +static +BOOL +InitializeOptionsFromReg(TCHAR * Path, PConsoleInfo pConInfo); INT_PTR CALLBACK @@ -25,13 +31,17 @@ OptionsProc( HWND hDlgCtrl; LPPSHNOTIFY lppsn; - pConInfo = (PConsoleInfo) GetWindowLongPtr(GetParent(hwndDlg), DWLP_USER); + pConInfo = (PConsoleInfo) GetWindowLongPtr(hwndDlg, DWLP_USER); switch(uMsg) { case WM_INITDIALOG: { - return InitializeOptionsDialog(hwndDlg); + pConInfo = (PConsoleInfo) ((LPPROPSHEETPAGE)lParam)->lParam; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo); + InitializeOptionsFromReg(pConInfo->szProcessName, pConInfo); + UpdateDialogElements(hwndDlg, pConInfo); + return TRUE; } case WM_NOTIFY: { @@ -149,6 +159,7 @@ OptionsProc( return FALSE; } +static BOOL InitializeOptionsFromReg(TCHAR * Path, PConsoleInfo pConInfo) { HKEY hKey; @@ -157,7 +168,9 @@ BOOL InitializeOptionsFromReg(TCHAR * Path, PConsoleInfo pConInfo) DWORD dwIndex; DWORD dwValueName; DWORD dwValue; + DWORD dwType; TCHAR szValueName[MAX_PATH]; + TCHAR szValue[MAX_PATH]; DWORD Value; if ( RegOpenCurrentUser(KEY_READ, &hKey) != ERROR_SUCCESS ) @@ -170,26 +183,39 @@ BOOL InitializeOptionsFromReg(TCHAR * Path, PConsoleInfo pConInfo) return FALSE; } - RegQueryInfoKey(hKey, NULL, NULL, NULL, &dwNumSubKeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); + RegQueryInfoKey(hSubKey, NULL, NULL, NULL, &dwNumSubKeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); for (dwIndex = 0; dwIndex < dwNumSubKeys; dwIndex++) { dwValue = sizeof(Value); dwValueName = MAX_PATH; - if ( RegEnumValue(hSubKey, dwIndex, szValueName, &dwValueName, NULL, NULL, (BYTE*)&Value, &dwValue) != ERROR_SUCCESS) - break; + if ( RegEnumValue(hSubKey, dwIndex, szValueName, &dwValueName, NULL, &dwType, (BYTE*)&Value, &dwValue) != ERROR_SUCCESS) + { + if (dwType == REG_SZ) + { + /* + * retry in case of string value + */ + dwValue = sizeof(szValue); + dwValueName = MAX_PATH; + if (RegEnumValue(hSubKey, dwIndex, szValueName, &dwValueName, NULL, NULL, (BYTE*)szValue, &dwValue) != ERROR_SUCCESS) + break; + } + else + break; + } - if ( !_tcscmp(szValueName, _T("CursorSize")) ) + if ( !_tcscmp(szValueName, _T("CursorSize")) ) { - if ( Value == 0x32) - pConInfo->CursorSize = Value; - else if ( Value == 0x64 ) - pConInfo->CursorSize = Value; - } - else if ( !_tcscmp(szValueName, _T("NumberOfHistoryBuffers")) ) - { - pConInfo->NumberOfHistoryBuffers = Value; + if ( Value == 0x32) + pConInfo->CursorSize = Value; + else if ( Value == 0x64 ) + pConInfo->CursorSize = Value; + } + else if ( !_tcscmp(szValueName, _T("NumberOfHistoryBuffers")) ) + { + pConInfo->NumberOfHistoryBuffers = Value; } else if ( !_tcscmp(szValueName, _T("HistoryBufferSize")) ) { @@ -218,6 +244,7 @@ BOOL InitializeOptionsFromReg(TCHAR * Path, PConsoleInfo pConInfo) return TRUE; } +static void UpdateDialogElements(HWND hwndDlg, PConsoleInfo pConInfo) { @@ -321,8 +348,7 @@ BOOLEAN InitializeOptionsDialog(HWND hwndDlg) if (!pConInfo) return FALSE; - InitializeOptionsFromReg(pConInfo->szProcessName, pConInfo); - UpdateDialogElements(hwndDlg, pConInfo); + return TRUE; } diff --git a/reactos/dll/win32/console/resource.h b/reactos/dll/win32/console/resource.h index d07b97fb524..f718501760f 100644 --- a/reactos/dll/win32/console/resource.h +++ b/reactos/dll/win32/console/resource.h @@ -88,4 +88,8 @@ #define IDC_STATIC_COLOR15 626 #define IDC_STATIC_COLOR16 627 + +//string ids +#define IDS_SCREEN_TEXT 700 + #endif