* update comments

* remove unused members in ConsoleInfo struct
* update global struct on UDN_DELTAPOS events
* update WindowSize ScreenBuffer member when bigger / smaller on scroll events

svn path=/trunk/; revision=24151
This commit is contained in:
Johannes Anderwald 2006-09-16 21:41:57 +00:00
parent 5ed7c7746e
commit 5d0d792e67
4 changed files with 120 additions and 15 deletions

View file

@ -85,7 +85,7 @@ InitConsoleDefaults(PConsoleInfo pConInfo)
pConInfo->ScreenBuffer = MAKELONG(80, 300);
pConInfo->UseRasterFonts = TRUE;
pConInfo->FontSize = (DWORD)MAKELONG(8, 12);
pConInfo->FontWeight = FALSE;
pConInfo->FontWeight = FW_NORMAL;
memcpy(pConInfo->Colors, s_Colors, sizeof(s_Colors));
}
@ -162,19 +162,20 @@ ApplyConsoleInfo(HWND hwndDlg, PConsoleInfo pConInfo)
/* First Applet */
LONG APIENTRY
InitApplet(HWND hwnd, UINT uMsg, LONG wParam, LONG lParam)
InitApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
{
PROPSHEETPAGE psp[4];
PROPSHEETHEADER psh;
INT i=0;
PConsoleInfo pConInfo;
PConsoleInfo pSharedInfo = (PConsoleInfo)wParam;
UNREFERENCED_PARAMETER(uMsg);
/*
* console.dll shares information with win32csr with wParam, lParam
*
* wParam is a file handle to an unamed file object which contains the ConsoleInfo struct
* wParam is a pointer to an ConsoleInfo struct
* lParam is a boolean parameter which specifies wheter defaults should be shown
*/
@ -191,9 +192,6 @@ InitApplet(HWND hwnd, UINT uMsg, LONG wParam, LONG lParam)
}
else
{
/* use current info */
PConsoleInfo pSharedInfo = (PConsoleInfo)wParam;
if (IsBadReadPtr((const void *)pSharedInfo, sizeof(ConsoleInfo)))
{
/* use defaults */
@ -275,7 +273,7 @@ CPlApplet(
}
case CPL_DBLCLK:
{
Applets[0].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
InitApplet(hwndCPl, uMsg, lParam1, lParam2);
break;
}
}

View file

@ -21,9 +21,8 @@ typedef struct
typedef struct TAGConsoleInfo
{
HANDLE hFile;
HWND hConsoleWindow;
TCHAR szProcessName[MAX_PATH];
WCHAR szProcessName[MAX_PATH];
BOOLEAN AppliedConfig;
DWORD UseRasterFonts;
DWORD FontSize;

View file

@ -131,6 +131,8 @@ LayoutProc(
LPARAM lParam
)
{
LPNMUPDOWN lpnmud;
LPPSHNOTIFY lppsn;
PConsoleInfo pConInfo = (PConsoleInfo)GetWindowLongPtr(hwndDlg, DWLP_USER);
UNREFERENCED_PARAMETER(hwndDlg);
@ -148,10 +150,10 @@ LayoutProc(
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));
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_SCREEN_BUFFER_HEIGHT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_SCREEN_BUFFER_WIDTH), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_SIZE_HEIGHT), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WINDOW_SIZE_WIDTH), UDM_SETRANGE, 0, (LPARAM)MAKELONG(9999, 1));
hDC = GetDC(NULL);
xres = GetDeviceCaps(hDC, HORZRES);
@ -183,6 +185,112 @@ LayoutProc(
PaintConsole((LPDRAWITEMSTRUCT)lParam, pConInfo);
return TRUE;
}
case WM_NOTIFY:
{
lpnmud = (LPNMUPDOWN) lParam;
lppsn = (LPPSHNOTIFY) lParam;
if (lppsn->hdr.code == UDN_DELTAPOS)
{
DWORD wheight, wwidth;
DWORD sheight, swidth;
DWORD left, top;
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_WIDTH)
{
wwidth = lpnmud->iPos + lpnmud->iDelta;
}
else
{
wwidth = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, NULL, FALSE);
}
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_HEIGHT)
{
wheight = lpnmud->iPos + lpnmud->iDelta;
}
else
{
wheight = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, NULL, FALSE);
}
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_WIDTH)
{
swidth = lpnmud->iPos + lpnmud->iDelta;
}
else
{
swidth = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, NULL, FALSE);
}
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_HEIGHT)
{
sheight = lpnmud->iPos + lpnmud->iDelta;
}
else
{
sheight = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, NULL, FALSE);
}
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_POS_LEFT)
{
left = lpnmud->iPos + lpnmud->iDelta;
}
else
{
left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE);
}
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_POS_TOP)
{
top = lpnmud->iPos + lpnmud->iDelta;
}
else
{
top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE);
}
if (lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_WIDTH || lppsn->hdr.idFrom == IDC_UPDOWN_WINDOW_SIZE_HEIGHT)
{
/* automatically adjust screen buffer size when window size enlarges */
if (wwidth >= swidth)
{
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, wwidth, TRUE);
swidth = wwidth;
}
if (wheight >= sheight)
{
SetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, wheight, TRUE);
sheight = wheight;
}
}
swidth = max(swidth, 1);
sheight = max(sheight, 1);
if (lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_WIDTH || lppsn->hdr.idFrom == IDC_UPDOWN_SCREEN_BUFFER_HEIGHT)
{
/* automatically adjust window size when screen buffer decreases */
if (wwidth > swidth)
{
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, swidth, TRUE);
wwidth = swidth;
}
if (wheight > sheight)
{
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, sheight, TRUE);
wheight = sheight;
}
}
pConInfo->ScreenBuffer = MAKELONG(swidth, sheight);
pConInfo->WindowSize = MAKELONG(wwidth, wheight);
pConInfo->WindowPosition = MAKELONG(left, top);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
@ -205,7 +313,7 @@ LayoutProc(
}
else if (res == BST_UNCHECKED)
{
pConInfo->WindowPosition = -1;
pConInfo->WindowPosition = UINT_MAX;
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);

View file

@ -176,7 +176,7 @@ UpdateDialogElements(HWND hwndDlg, PConsoleInfo pConInfo)
TCHAR szBuffer[MAX_PATH];
/* update cursor size */
if ( pConInfo->CursorSize == 0 )
if ( pConInfo->CursorSize == 0)
{
/* small cursor */
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR);