Author: mkupfer Date: Sat Jul 19 12:20:20 2008 New Revision: 34588
URL: http://svn.reactos.org/svn/reactos?rev=34588&view=rev Log: Display of ReactOS bitmap implemented.
Modified: trunk/reactos/base/setup/reactos/lang/en-US.rc trunk/reactos/base/setup/reactos/reactos.c
Modified: trunk/reactos/base/setup/reactos/lang/en-US.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/reactos/lang/en-... ============================================================================== --- trunk/reactos/base/setup/reactos/lang/en-US.rc [iso-8859-1] (original) +++ trunk/reactos/base/setup/reactos/lang/en-US.rc [iso-8859-1] Sat Jul 19 12:20:20 2008 @@ -19,11 +19,11 @@ CAPTION "ReactOS Setup" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "IDB_LOGO", IDB_ROSLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE, 18, 7, 290, 74 - CONTROL "Setup language:", IDC_STATIC, "Static", WS_CHILD | WS_VISIBLE | WS_GROUP | SS_RIGHT, 20, 99, 106, 11 - CONTROL "", IDC_LANGUAGES,"ComboBox",WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST, 132, 97, 176, 142 - CONTROL "Keyboard or input method:", IDC_STATIC, "Static", WS_CHILD | WS_VISIBLE | WS_GROUP | SS_RIGHT, 20, 132, 106, 11 - CONTROL "", IDC_KEYLAYOUT, "ComboBox", WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST, 132, 131, 176, 81 + CONTROL "IDB_LOGO", IDB_ROSLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + CONTROL "Setup language:", IDC_STATIC, "Static", WS_CHILD | WS_VISIBLE | WS_GROUP | SS_RIGHT, 20, 109, 106, 11 + CONTROL "", IDC_LANGUAGES, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST, 132, 107, 176, 142 + CONTROL "Keyboard or input method:", IDC_STATIC, "Static", WS_CHILD | WS_VISIBLE | WS_GROUP | SS_RIGHT, 20, 142, 106, 11 + CONTROL "", IDC_KEYLAYOUT, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST, 132, 141, 176, 81 LTEXT "Click Next to select the setup type.", IDC_STATIC, 10, 180 ,297, 10 END
Modified: trunk/reactos/base/setup/reactos/reactos.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/reactos/reactos.... ============================================================================== --- trunk/reactos/base/setup/reactos/reactos.c [iso-8859-1] (original) +++ trunk/reactos/base/setup/reactos/reactos.c [iso-8859-1] Sat Jul 19 12:20:20 2008 @@ -51,7 +51,15 @@ BOOLEAN RepairUpdateFlag; // flag for update/repair an installed reactos } SetupData;
+typedef struct _IMGINFO +{ + HBITMAP hBitmap; + INT cxSource; + INT cySource; +} IMGINFO, *PIMGINFO; + TCHAR abort_msg[512],abort_title[64]; +HINSTANCE hInstance; BOOL isUnattend;
/* FUNCTIONS ****************************************************************/ @@ -102,6 +110,29 @@ ReleaseDC(NULL, hdc);
return hFont; +} + +static VOID +InitImageInfo(PIMGINFO ImgInfo) +{ + BITMAP bitmap; + + ZeroMemory(ImgInfo, sizeof(*ImgInfo)); + + ImgInfo->hBitmap = LoadImage(hInstance, + MAKEINTRESOURCE(IDB_ROSLOGO), + IMAGE_BITMAP, + 0, + 0, + LR_DEFAULTCOLOR); + + if (ImgInfo->hBitmap != NULL) + { + GetObject(ImgInfo->hBitmap, sizeof(BITMAP), &bitmap); + + ImgInfo->cxSource = bitmap.bmWidth; + ImgInfo->cySource = bitmap.bmHeight; + } }
static INT_PTR CALLBACK @@ -169,6 +200,8 @@ WPARAM wParam, LPARAM lParam) { + PIMGINFO pImgInfo; + pImgInfo = (PIMGINFO)GetWindowLongPtr(hwndDlg, DWLP_USER); switch (uMsg) { case WM_INITDIALOG: @@ -188,14 +221,55 @@ ShowWindow (hwndControl, SW_SHOW); EnableWindow (hwndControl, TRUE);
+ pImgInfo = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IMGINFO)); + if (pImgInfo == NULL) + { + EndDialog(hwndDlg, 0); + return FALSE; + } + + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pImgInfo); + + InitImageInfo(pImgInfo); + /* Set title font */ /*SendDlgItemMessage(hwndDlg, IDC_STARTTITLE, WM_SETFONT, (WPARAM)hTitleFont, (LPARAM)TRUE);*/ -} - break; + } + break; + case WM_DRAWITEM: + { + LPDRAWITEMSTRUCT lpDrawItem; + lpDrawItem = (LPDRAWITEMSTRUCT) lParam; + if (lpDrawItem->CtlID == IDB_ROSLOGO) + { + HDC hdcMem; + LONG left; + + /* position image in centre of dialog */ + left = (lpDrawItem->rcItem.right - pImgInfo->cxSource) / 2; + + hdcMem = CreateCompatibleDC(lpDrawItem->hDC); + if (hdcMem != NULL) + { + SelectObject(hdcMem, pImgInfo->hBitmap); + BitBlt(lpDrawItem->hDC, + left, + lpDrawItem->rcItem.top, + lpDrawItem->rcItem.right - lpDrawItem->rcItem.left, + lpDrawItem->rcItem.bottom - lpDrawItem->rcItem.top, + hdcMem, + 0, + 0, + SRCCOPY); + DeleteDC(hdcMem); + } + } + return TRUE; + } case WM_NOTIFY: { LPNMHDR lpnm = (LPNMHDR)lParam; @@ -551,6 +625,7 @@ HPROPSHEETPAGE ahpsp[7]; PROPSHEETPAGE psp = {0}; UINT nPages = 0; + hInstance = hInst; isUnattend = isUnattendSetup();
if (!isUnattend)