* store static colors in global struct to make it thread-safe

svn path=/trunk/; revision=23737
This commit is contained in:
Johannes Anderwald 2006-08-27 09:50:29 +00:00
parent adcaf80140
commit 8895520e58
3 changed files with 31 additions and 31 deletions

View file

@ -9,28 +9,6 @@
#include "console.h" #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 static
BOOL BOOL
PaintStaticControls(HWND hwndDlg, PConsoleInfo pConInfo, LPDRAWITEMSTRUCT drawItem) PaintStaticControls(HWND hwndDlg, PConsoleInfo pConInfo, LPDRAWITEMSTRUCT drawItem)
@ -39,7 +17,7 @@ PaintStaticControls(HWND hwndDlg, PConsoleInfo pConInfo, LPDRAWITEMSTRUCT drawIt
DWORD index; DWORD index;
index = drawItem->CtlID - IDC_STATIC_COLOR1; index = drawItem->CtlID - IDC_STATIC_COLOR1;
hBrush = CreateSolidBrush(s_Colors[index]); hBrush = CreateSolidBrush(pConInfo->Colors[index]);
if (!hBrush) if (!hBrush)
{ {
return FALSE; return FALSE;
@ -171,7 +149,7 @@ ColorsProc(
} }
blue = LOBYTE(blue); blue = LOBYTE(blue);
} }
s_Colors[pConInfo->ActiveStaticControl] = RGB(red, green, blue); pConInfo->Colors[pConInfo->ActiveStaticControl] = RGB(red, green, blue);
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
@ -228,26 +206,26 @@ ColorsProc(
break; break;
} }
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(s_Colors[index]), FALSE); SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_RED, GetRValue(pConInfo->Colors[index]), FALSE);
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(s_Colors[index]), FALSE); SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_GREEN, GetGValue(pConInfo->Colors[index]), FALSE);
SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(s_Colors[index]), FALSE); SetDlgItemInt(hwndDlg, IDC_EDIT_COLOR_BLUE, GetBValue(pConInfo->Colors[index]), FALSE);
/* update global struct */ /* update global struct */
if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_SCREEN_TEXT)) if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_SCREEN_TEXT))
{ {
pConInfo->ScreenText = s_Colors[index]; pConInfo->ScreenText = pConInfo->Colors[index];
} }
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_SCREEN_BACKGROUND)) else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_SCREEN_BACKGROUND))
{ {
pConInfo->ScreenBackground = s_Colors[index]; pConInfo->ScreenBackground = pConInfo->Colors[index];
} }
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_POPUP_TEXT)) else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_POPUP_TEXT))
{ {
pConInfo->PopupText = s_Colors[index]; pConInfo->PopupText = pConInfo->Colors[index];
} }
else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_POPUP_BACKGROUND)) else if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_POPUP_BACKGROUND))
{ {
pConInfo->PopupBackground = s_Colors[index]; pConInfo->PopupBackground = pConInfo->Colors[index];
} }
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + pConInfo->ActiveStaticControl), NULL, TRUE);
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + index), NULL, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_COLOR1 + index), NULL, TRUE);

View file

@ -27,6 +27,26 @@ APPLET Applets[NUM_APPLETS] =
{IDC_CPLICON, IDS_CPLNAME, IDS_CPLDESCRIPTION, InitApplet} {IDC_CPLICON, IDS_CPLNAME, IDS_CPLDESCRIPTION, InitApplet}
}; };
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 void static void
InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, LPARAM lParam) InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, LPARAM lParam)
{ {
@ -67,6 +87,7 @@ InitConsoleInfo()
pConInfo->UseRasterFonts = TRUE; pConInfo->UseRasterFonts = TRUE;
pConInfo->FontSize = (DWORD)MAKELONG(8, 12); pConInfo->FontSize = (DWORD)MAKELONG(8, 12);
pConInfo->FontWeight = FALSE; pConInfo->FontWeight = FALSE;
memcpy(pConInfo->Colors, s_Colors, sizeof(s_Colors));
GetModuleFileName(NULL, pConInfo->szProcessName, MAX_PATH); GetModuleFileName(NULL, pConInfo->szProcessName, MAX_PATH);
GetStartupInfo(&StartupInfo); GetStartupInfo(&StartupInfo);

View file

@ -41,6 +41,7 @@ typedef struct TAGConsoleInfo
COLORREF ScreenBackground; COLORREF ScreenBackground;
COLORREF PopupText; COLORREF PopupText;
COLORREF PopupBackground; COLORREF PopupBackground;
COLORREF Colors[16];
} ConsoleInfo, *PConsoleInfo; } ConsoleInfo, *PConsoleInfo;
BOOL WriteConsoleOptions(PConsoleInfo pConInfo); BOOL WriteConsoleOptions(PConsoleInfo pConInfo);