From 043df7bed98b6d3bc9a23958b82411354bcb0086 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Mon, 21 Aug 2006 10:57:14 +0000 Subject: [PATCH] * colors.c: add error checking * console.c: add defaults * layout: halfplement layout dialog svn path=/trunk/; revision=23641 --- reactos/dll/win32/console/colors.c | 6 ++ reactos/dll/win32/console/console.c | 4 +- reactos/dll/win32/console/console.h | 6 ++ reactos/dll/win32/console/en.rc | 16 +++--- reactos/dll/win32/console/layout.c | 86 +++++++++++++++++++++++++++++ 5 files changed, 109 insertions(+), 9 deletions(-) diff --git a/reactos/dll/win32/console/colors.c b/reactos/dll/win32/console/colors.c index 087c9a06e3a..53f9f5b34a7 100644 --- a/reactos/dll/win32/console/colors.c +++ b/reactos/dll/win32/console/colors.c @@ -57,6 +57,12 @@ PaintStaticControls(HWND hwndDlg, PConsoleInfo pConInfo, LPDRAWITEMSTRUCT drawIt hBrush = CreateSolidBrush(nbkColor); ntColor = pConInfo->PopupText; } + + if (!hBrush) + { + return FALSE; + } + FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); DeleteObject((HGDIOBJ)hBrush); ptColor = SetTextColor(drawItem->hDC, ntColor); diff --git a/reactos/dll/win32/console/console.c b/reactos/dll/win32/console/console.c index 44a382d055f..b0b1639f438 100644 --- a/reactos/dll/win32/console/console.c +++ b/reactos/dll/win32/console/console.c @@ -59,7 +59,9 @@ InitConsoleInfo() pConInfo->ScreenBackground = RGB(0, 0, 0); pConInfo->PopupText = RGB(128, 0, 128); pConInfo->PopupBackground = RGB(255, 255, 255); - + pConInfo->WindowSize = (DWORD)MAKELONG(80, 25); + pConInfo->WindowPosition = -1; + pConInfo->ScreenBuffer = MAKELONG(80, 300); GetModuleFileName(NULL, pConInfo->szProcessName, MAX_PATH); //MessageBox(hwnd, pConInfo->szProcessName, _T("GetModuleFileName"), MB_OK); diff --git a/reactos/dll/win32/console/console.h b/reactos/dll/win32/console/console.h index ec946e74ce6..c7484acb953 100644 --- a/reactos/dll/win32/console/console.h +++ b/reactos/dll/win32/console/console.h @@ -29,6 +29,12 @@ typedef struct TAGConsoleInfo DWORD QuickEdit; DWORD InsertMode; + DWORD ScreenBuffer; + DWORD WindowSize; + DWORD WindowPosition; + + + DWORD ActiveStaticControl; COLORREF ScreenText; COLORREF ScreenBackground; diff --git a/reactos/dll/win32/console/en.rc b/reactos/dll/win32/console/en.rc index a011d2ad800..8c5a53a8883 100644 --- a/reactos/dll/win32/console/en.rc +++ b/reactos/dll/win32/console/en.rc @@ -64,21 +64,21 @@ CAPTION "Layout" FONT 8, "MS Shell Dlg" BEGIN LTEXT "Window Preview", -1, 10, 10, 65, 10 -CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_BLACKRECT | SS_SUNKEN, 10, 20, 100, 70 +CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 10, 20, 100, 70 GROUPBOX "Screen Buffer Size", -1, 115, 15, 115, 40 LTEXT "&Width:", -1, 120, 30, 25, 10 LTEXT "&Height:", -1, 120, 40, 25, 10 -EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 30, 10, ES_RIGHT | WS_GROUP -CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 170, 30, 30, 10 -EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 30, 10, ES_RIGHT | WS_GROUP -CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 170, 30, 30, 10 +EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 165, 30, 35, 10, ES_RIGHT | WS_GROUP +CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 185, 30, 30, 10 +EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 165, 40, 35, 10, ES_RIGHT | WS_GROUP +CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 185, 30, 30, 10 GROUPBOX "Window Size", -1, 115, 60, 115, 40 LTEXT "&W&idth:", -1, 120, 70, 25, 10 LTEXT "&H&eight:", -1, 120, 80, 25, 10 EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 165, 70, 30, 10, ES_RIGHT | WS_GROUP -CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 170, 30, 30, 10 +CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 185, 30, 30, 10 EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 165, 80, 30, 10, ES_RIGHT | WS_GROUP -CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 170, 30, 30, 10 +CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 185, 30, 30, 10 GROUPBOX "Window Position", -1, 115, 105, 115, 55 LTEXT "&Left:", -1, 120, 120, 25, 10 LTEXT "&Top:", -1, 120, 130, 25, 10 @@ -146,5 +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" + 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/layout.c b/reactos/dll/win32/console/layout.c index 08e9c84cbc9..fae53b5ddc9 100644 --- a/reactos/dll/win32/console/layout.c +++ b/reactos/dll/win32/console/layout.c @@ -27,10 +27,96 @@ LayoutProc( { case WM_INITDIALOG: { + DWORD xres, yres; + HDC hDC; pConInfo = (PConsoleInfo) ((LPPROPSHEETPAGE)lParam)->lParam; SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pConInfo); + SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, HIWORD(pConInfo->ScreenBuffer), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, LOWORD(pConInfo->ScreenBuffer), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, HIWORD(pConInfo->WindowSize), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, LOWORD(pConInfo->WindowSize), FALSE); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_SCREEN_BUFFER_HEIGHT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 0)); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_SCREEN_BUFFER_WIDTH), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 0)); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_SIZE_HEIGHT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 0)); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_SIZE_WIDTH), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 0)); + + hDC = GetDC(NULL); + xres = GetDeviceCaps(hDC, HORZRES); + yres = GetDeviceCaps(hDC, VERTRES); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(xres, 0)); + SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), UDM_SETRANGE, 0, (LPARAM)MAKELONG(yres, 0)); + + if (pConInfo->WindowPosition != -1) + { + SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, LOWORD(pConInfo->WindowPosition), FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, HIWORD(pConInfo->WindowPosition), FALSE); + } + else + { + //FIXME calculate window pos from xres, yres + SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, 88, FALSE); + SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, 88, FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), FALSE); + SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_SYSTEM_POS_WINDOW), BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + } + return TRUE; } + case WM_DRAWITEM: + { + COLORREF bkColor; + HBRUSH hBrush; + LPDRAWITEMSTRUCT drawItem; + + bkColor = GetSysColor(COLOR_BACKGROUND); + hBrush = CreateSolidBrush(bkColor); + drawItem = (LPDRAWITEMSTRUCT) lParam; + + FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); + //TODO draw console image +// MoveToEx(drawItem->hDC, 0, 0, NULL); +// LineTo(drawItem->hDC, 10, 10); +// MoveToEx(drawItem->hDC, 30, 30, NULL); +// LineTo(drawItem->hDC, 40, 40); + + DeleteObject((HGDIOBJ)hBrush); + return TRUE; + } + case WM_COMMAND: + { + switch(LOWORD(wParam)) + { + case IDC_CHECK_SYSTEM_POS_WINDOW: + { + LONG res = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0); + if (res == BST_CHECKED) + { + ULONG left, top; + + left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE); + top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE); + pConInfo->WindowPosition = MAKELONG(left, top); + SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), TRUE); + } + else if (res == BST_UNCHECKED) + { + pConInfo->WindowPosition = -1; + SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_WINDOW_POS_TOP), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_LEFT), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_POS_TOP), FALSE); + } + } + } + } default: break; }