diff --git a/reactos/dll/cpl/desk/Fr.rc b/reactos/dll/cpl/desk/Fr.rc index 2219c5bdb4e..9423592e4ad 100644 --- a/reactos/dll/cpl/desk/Fr.rc +++ b/reactos/dll/cpl/desk/Fr.rc @@ -131,4 +131,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/It.rc b/reactos/dll/cpl/desk/It.rc index 07a75987fe1..1d7e37f9d15 100644 --- a/reactos/dll/cpl/desk/It.rc +++ b/reactos/dll/cpl/desk/It.rc @@ -125,4 +125,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/Ja.rc b/reactos/dll/cpl/desk/Ja.rc index 50900ebf95f..df2e329cbae 100644 --- a/reactos/dll/cpl/desk/Ja.rc +++ b/reactos/dll/cpl/desk/Ja.rc @@ -129,4 +129,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/Ru.rc b/reactos/dll/cpl/desk/Ru.rc index c00fcef1b26..a4d0931e0c1 100644 --- a/reactos/dll/cpl/desk/Ru.rc +++ b/reactos/dll/cpl/desk/Ru.rc @@ -151,4 +151,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/Uk.rc b/reactos/dll/cpl/desk/Uk.rc index d5e568f68c2..8c812e2b1ee 100644 --- a/reactos/dll/cpl/desk/Uk.rc +++ b/reactos/dll/cpl/desk/Uk.rc @@ -133,4 +133,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/cz.rc b/reactos/dll/cpl/desk/cz.rc index c05e5cfb134..0c4632b0b68 100644 --- a/reactos/dll/cpl/desk/cz.rc +++ b/reactos/dll/cpl/desk/cz.rc @@ -123,4 +123,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/de.rc b/reactos/dll/cpl/desk/de.rc index ded2505b6f0..c3dc2cc90bd 100644 --- a/reactos/dll/cpl/desk/de.rc +++ b/reactos/dll/cpl/desk/de.rc @@ -127,4 +127,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/desk.h b/reactos/dll/cpl/desk/desk.h index 1f275da8657..3c19499ed6b 100644 --- a/reactos/dll/cpl/desk/desk.h +++ b/reactos/dll/cpl/desk/desk.h @@ -33,6 +33,10 @@ extern HINSTANCE hApplet; PDIBITMAP DibLoadImage(LPTSTR lpFilename); VOID DibFreeImage(PDIBITMAP lpBitmap); +INT AllocAndLoadString(LPTSTR *lpTarget, + HINSTANCE hInst, + UINT uID); + DWORD DbgPrint(PCH Format,...); #endif /* __CPL_DESK_H__ */ diff --git a/reactos/dll/cpl/desk/desk.rc b/reactos/dll/cpl/desk/desk.rc index 393a7fb51a4..70f7c3e37a2 100644 --- a/reactos/dll/cpl/desk/desk.rc +++ b/reactos/dll/cpl/desk/desk.rc @@ -8,7 +8,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #define REACTOS_STR_INTERNAL_NAME "desk\0" #define REACTOS_STR_ORIGINAL_FILENAME "desk.cpl\0" -#include +//#include IDC_DESK_ICON ICON "resources/applet.ico" IDC_DESK_ICON2 ICON "resources/applet.ico" diff --git a/reactos/dll/cpl/desk/en.rc b/reactos/dll/cpl/desk/en.rc index c532a165c2e..48bc9c89b19 100644 --- a/reactos/dll/cpl/desk/en.rc +++ b/reactos/dll/cpl/desk/en.rc @@ -125,4 +125,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/es.rc b/reactos/dll/cpl/desk/es.rc index e3759274016..741c4924b56 100644 --- a/reactos/dll/cpl/desk/es.rc +++ b/reactos/dll/cpl/desk/es.rc @@ -130,4 +130,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/gr.rc b/reactos/dll/cpl/desk/gr.rc index 174d91360d1..c998196578c 100644 --- a/reactos/dll/cpl/desk/gr.rc +++ b/reactos/dll/cpl/desk/gr.rc @@ -129,4 +129,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/hu.rc b/reactos/dll/cpl/desk/hu.rc index 24b2d012f59..810dbd2e9fd 100644 --- a/reactos/dll/cpl/desk/hu.rc +++ b/reactos/dll/cpl/desk/hu.rc @@ -117,4 +117,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/misc.c b/reactos/dll/cpl/desk/misc.c new file mode 100644 index 00000000000..df35a3818f5 --- /dev/null +++ b/reactos/dll/cpl/desk/misc.c @@ -0,0 +1,63 @@ +#include "desk.h" + +static INT +LengthOfStrResource(IN HINSTANCE hInst, + IN UINT uID) +{ + HRSRC hrSrc; + HGLOBAL hRes; + LPWSTR lpName, lpStr; + + if (hInst == NULL) + { + return -1; + } + + /* There are always blocks of 16 strings */ + lpName = (LPWSTR)MAKEINTRESOURCE((uID >> 4) + 1); + + /* Find the string table block */ + if ((hrSrc = FindResourceW(hInst, lpName, (LPWSTR)RT_STRING)) && + (hRes = LoadResource(hInst, hrSrc)) && + (lpStr = LockResource(hRes))) + { + UINT x; + + /* Find the string we're looking for */ + uID &= 0xF; /* position in the block, same as % 16 */ + for (x = 0; x < uID; x++) + { + lpStr += (*lpStr) + 1; + } + + /* Found the string */ + return (int)(*lpStr); + } + return -1; +} + +INT +AllocAndLoadString(OUT LPTSTR *lpTarget, + IN HINSTANCE hInst, + IN UINT uID) +{ + INT ln; + + ln = LengthOfStrResource(hInst, + uID); + if (ln++ > 0) + { + (*lpTarget) = (LPTSTR)LocalAlloc(LMEM_FIXED, + ln * sizeof(TCHAR)); + if ((*lpTarget) != NULL) + { + INT Ret; + if (!(Ret = LoadString(hInst, uID, *lpTarget, ln))) + { + LocalFree((HLOCAL)(*lpTarget)); + } + return Ret; + } + } + return 0; +} diff --git a/reactos/dll/cpl/desk/nl.rc b/reactos/dll/cpl/desk/nl.rc index ac71dec46f3..10fff5a67e1 100644 --- a/reactos/dll/cpl/desk/nl.rc +++ b/reactos/dll/cpl/desk/nl.rc @@ -123,4 +123,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/pl.rc b/reactos/dll/cpl/desk/pl.rc index fa996a404c5..5fbcc8a5375 100644 --- a/reactos/dll/cpl/desk/pl.rc +++ b/reactos/dll/cpl/desk/pl.rc @@ -124,4 +124,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END diff --git a/reactos/dll/cpl/desk/preview.c b/reactos/dll/cpl/desk/preview.c index 6eb290de6c5..ae70cf36085 100644 --- a/reactos/dll/cpl/desk/preview.c +++ b/reactos/dll/cpl/desk/preview.c @@ -39,6 +39,16 @@ typedef struct _PREVIEW_DATA RECT rcDialogButton; + LPTSTR lpInAct; + LPTSTR lpAct; + LPTSTR lpWinTxt; + LPTSTR lpMessBox; + LPTSTR lpMessText; + LPTSTR lpButText; + LPTSTR lpMenNorm; + LPTSTR lpMenDis; + LPTSTR lpMenSel; + LOGFONT CaptionFont; LOGFONT DialogFont; LOGFONT MenuFont; @@ -46,6 +56,22 @@ typedef struct _PREVIEW_DATA } PREVIEW_DATA, *PPREVIEW_DATA; +/* HACK: fill the caption bar squares due to NULL text */ +static VOID +FillSquare(HDC hdc, PRECT rect) +{ + INT x, y, i; + + x = rect->left + 2; + y = rect->top + 2; + + for (i = 3; i < 12; i++) + { + BitBlt(hdc, x, y + i, 10, 1, hdc, x, y, SRCCOPY); + } +} + + static VOID DrawCaptionButtons(HDC hdc, LPRECT lpRect, BOOL bMinMax) { @@ -176,13 +202,6 @@ PreviewWndProc(HWND hwnd, HDC hdc; PAINTSTRUCT ps; RECT rc; - static NONCLIENTMETRICS NonClientMetrics; - static TCHAR szInAct[32]; - static TCHAR szAct[32]; - static TCHAR szWinTxt[32]; - static TCHAR szMessBox[32]; - static TCHAR szMessText[32]; - static TCHAR szButText[4]; pPreviewData = (PPREVIEW_DATA)GetWindowLongPtr(hwnd, GWLP_USERDATA); @@ -190,6 +209,8 @@ PreviewWndProc(HWND hwnd, { case WM_CREATE: { + NONCLIENTMETRICS NonClientMetrics; + pPreviewData = (PPREVIEW_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PREVIEW_DATA)); @@ -214,12 +235,15 @@ PreviewWndProc(HWND hwnd, pPreviewData->MenuFont = NonClientMetrics.lfMenuFont; pPreviewData->DialogFont = NonClientMetrics.lfMessageFont; - LoadString(hApplet, IDS_INACTWIN, szInAct, sizeof(szInAct)); - LoadString(hApplet, IDS_ACTWIN, szAct, sizeof(szAct)); - LoadString(hApplet, IDS_WINTEXT, szWinTxt, sizeof(szWinTxt)); - LoadString(hApplet, IDS_MESSBOX, szMessBox, sizeof(szMessBox)); - LoadString(hApplet, IDS_MESSTEXT, szMessText, sizeof(szMessText)); - LoadString(hApplet, IDS_BUTTEXT, szButText, sizeof(szButText)); + AllocAndLoadString(&pPreviewData->lpInAct, hApplet, IDS_INACTWIN); + AllocAndLoadString(&pPreviewData->lpAct, hApplet, IDS_ACTWIN); + AllocAndLoadString(&pPreviewData->lpWinTxt, hApplet, IDS_WINTEXT); + AllocAndLoadString(&pPreviewData->lpMessBox, hApplet, IDS_MESSBOX); + AllocAndLoadString(&pPreviewData->lpMessText, hApplet, IDS_MESSTEXT); + AllocAndLoadString(&pPreviewData->lpButText, hApplet, IDS_BUTTEXT); + AllocAndLoadString(&pPreviewData->lpMenNorm, hApplet, IDS_NORMAL); + AllocAndLoadString(&pPreviewData->lpMenDis, hApplet, IDS_DISABLED); + AllocAndLoadString(&pPreviewData->lpMenSel, hApplet, IDS_SELECTED); break; } @@ -241,25 +265,26 @@ PreviewWndProc(HWND hwnd, DrawEdge(hdc, &pPreviewData->rcInactiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE); DrawCaption(hwnd, hdc, &pPreviewData->rcInactiveCaption, DC_GRADIENT | DC_TEXT); DrawCaptionButtons(hdc, &pPreviewData->rcInactiveCaption, TRUE); - CopyMemory(&tmpRc, &pPreviewData->rcInactiveCaption, sizeof(RECT)); + FillSquare(hdc, &pPreviewData->rcInactiveCaption); + CopyRect(&tmpRc, &pPreviewData->rcInactiveCaption); tmpRc.left += 4; tmpRc.top += 2; SelectObject(hdc, CreateFontIndirect(&pPreviewData->CaptionFont)); SetTextColor(hdc, RGB(212,208,200)); - DrawText(hdc, szInAct, lstrlen(szInAct), &tmpRc, DT_LEFT); + DrawText(hdc, pPreviewData->lpInAct, lstrlen(pPreviewData->lpInAct), &tmpRc, DT_LEFT); DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT))); - /* Active Window */ DrawEdge(hdc, &pPreviewData->rcActiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE); DrawCaption(hwnd, hdc, &pPreviewData->rcActiveCaption, DC_ACTIVE | DC_GRADIENT | DC_TEXT); DrawCaptionButtons(hdc, &pPreviewData->rcActiveCaption, TRUE); - CopyMemory(&tmpRc, &pPreviewData->rcActiveCaption, sizeof(RECT)); + FillSquare(hdc, &pPreviewData->rcActiveCaption); + CopyRect(&tmpRc, &pPreviewData->rcActiveCaption); tmpRc.left += 4; tmpRc.top += 2; SetTextColor(hdc, RGB(255,255,255)); // FIXME: don't hardcode colors SelectObject(hdc, CreateFontIndirect(&pPreviewData->CaptionFont)); - DrawText(hdc, szAct, lstrlen(szAct), &tmpRc, DT_LEFT); + DrawText(hdc, pPreviewData->lpAct, lstrlen(pPreviewData->lpAct), &tmpRc, DT_LEFT); DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT))); /* FIXME: Draw the menu bar */ @@ -268,48 +293,47 @@ PreviewWndProc(HWND hwnd, FillRect(hdc, &rc, pPreviewData->hbrWindow); /* Draw the client text */ - CopyMemory(&tmpRc, &pPreviewData->rcActiveClient, sizeof(RECT)); + CopyRect(&tmpRc, &pPreviewData->rcActiveClient); tmpRc.left += 4; tmpRc.top += 2; SetTextColor(hdc, RGB(0,0,0)); SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont)); - DrawText(hdc, szWinTxt, lstrlen(szWinTxt), &tmpRc, DT_LEFT); + DrawText(hdc, pPreviewData->lpWinTxt, lstrlen(pPreviewData->lpWinTxt), &tmpRc, DT_LEFT); DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT))); /* Draw the scroll bar */ DrawScrollbar(hdc, &pPreviewData->rcActiveScroll); - /* Dialog Window */ DrawEdge(hdc, &pPreviewData->rcDialogFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE); DrawCaption(hwnd, hdc, &pPreviewData->rcDialogCaption, DC_ACTIVE | DC_GRADIENT | DC_TEXT); DrawCaptionButtons(hdc, &pPreviewData->rcDialogCaption, FALSE); - CopyMemory(&tmpRc, &pPreviewData->rcDialogCaption, sizeof(RECT)); + FillSquare(hdc, &pPreviewData->rcDialogCaption); + CopyRect(&tmpRc, &pPreviewData->rcDialogCaption); tmpRc.left += 4; tmpRc.top += 2; SetTextColor(hdc, RGB(255,255,255)); SelectObject(hdc, CreateFontIndirect(&pPreviewData->CaptionFont)); - DrawText(hdc, szMessBox, lstrlen(szMessBox), &tmpRc, DT_LEFT); + DrawText(hdc, pPreviewData->lpMessBox, lstrlen(pPreviewData->lpMessBox), &tmpRc, DT_LEFT); DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT))); /* draw the dialog text */ - CopyMemory(&tmpRc, &pPreviewData->rcDialogClient, sizeof(RECT)); + CopyRect(&tmpRc, &pPreviewData->rcDialogClient); tmpRc.left += 4; tmpRc.top += 2; SetTextColor(hdc, RGB(0,0,0)); SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont)); - DrawText(hdc, szMessText, lstrlen(szMessText), &tmpRc, DT_LEFT); + DrawText(hdc, pPreviewData->lpMessText, lstrlen(pPreviewData->lpMessText), &tmpRc, DT_LEFT); DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT))); /* Draw Button */ DrawFrameControl(hdc, &pPreviewData->rcDialogButton, DFC_BUTTON, DFCS_BUTTONPUSH); - CopyMemory(&tmpRc, &pPreviewData->rcDialogButton, sizeof(RECT)); + CopyRect(&tmpRc, &pPreviewData->rcDialogButton); tmpRc.top += 6; SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont)); - DrawText(hdc, szButText, lstrlen(szButText), &tmpRc, DT_CENTER); + DrawText(hdc, pPreviewData->lpButText, lstrlen(pPreviewData->lpButText), &tmpRc, DT_CENTER); DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT))); - EndPaint(hwnd, &ps); break; } @@ -318,6 +342,16 @@ PreviewWndProc(HWND hwnd, DeleteObject(pPreviewData->hbrDesktop); DeleteObject(pPreviewData->hbrWindow); + LocalFree((HLOCAL)pPreviewData->lpInAct); + LocalFree((HLOCAL)pPreviewData->lpAct); + LocalFree((HLOCAL)pPreviewData->lpWinTxt); + LocalFree((HLOCAL)pPreviewData->lpMessBox); + LocalFree((HLOCAL)pPreviewData->lpMessText); + LocalFree((HLOCAL)pPreviewData->lpButText); + LocalFree((HLOCAL)pPreviewData->lpMenNorm); + LocalFree((HLOCAL)pPreviewData->lpMenDis); + LocalFree((HLOCAL)pPreviewData->lpMenSel); + HeapFree(GetProcessHeap(), 0, pPreviewData); break; diff --git a/reactos/dll/cpl/desk/resource.h b/reactos/dll/cpl/desk/resource.h index bdc9f0c83c3..5277aec5a35 100644 --- a/reactos/dll/cpl/desk/resource.h +++ b/reactos/dll/cpl/desk/resource.h @@ -88,6 +88,9 @@ #define IDS_MESSBOX 1513 #define IDS_MESSTEXT 1514 #define IDS_BUTTEXT 1515 +#define IDS_NORMAL 1516 +#define IDS_DISABLED 1517 +#define IDS_SELECTED 1518 #endif /* __CPL_DESK_RESOURCE_H__ */ diff --git a/reactos/dll/cpl/desk/sv.rc b/reactos/dll/cpl/desk/sv.rc index 3a473d407bb..2f5447ea940 100644 --- a/reactos/dll/cpl/desk/sv.rc +++ b/reactos/dll/cpl/desk/sv.rc @@ -126,4 +126,7 @@ BEGIN IDS_MESSBOX "Message Box" IDS_MESSTEXT "Message Text" IDS_BUTTEXT "OK" + IDS_NORMAL "Normal" + IDS_DISABLED "Disabled" + IDS_SELECTED "Selected" END