diff --git a/reactos/dll/win32/msgina/en.rc b/reactos/dll/win32/msgina/en.rc
new file mode 100644
index 00000000000..287680434e0
--- /dev/null
+++ b/reactos/dll/win32/msgina/en.rc
@@ -0,0 +1,50 @@
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+IDD_STATUSWINDOW_DLG DIALOGEX 0,0,274,26
+STYLE NOT WS_VISIBLE | DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
+CAPTION "Please wait..."
+FONT 8,"MS Shell Dlg 2",400,0,1
+BEGIN
+ LTEXT "",IDC_STATUSLABEL,7,8,234,12,SS_WORDELLIPSIS
+END
+
+IDD_NOTICE_DLG DIALOGEX 0,0,186,59
+STYLE NOT WS_VISIBLE | DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
+CAPTION "Welcome to ReactOS"
+FONT 8,"MS Shell Dlg 2",400,0,1
+BEGIN
+ LTEXT "Press Control-Alt-Delete key combination",IDC_STATIC,16,18,144,14
+END
+
+IDD_LOGGEDOUT_DLG DIALOGEX 0,0,275,147
+STYLE NOT WS_VISIBLE | DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
+CAPTION "Logon"
+FONT 8,"MS Shell Dlg 2",400,0,1
+BEGIN
+ PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
+ PUSHBUTTON "Cancel",IDCANCEL,115,122,50,14
+ PUSHBUTTON "Shutdown",IDC_SHUTDOWN,179,122,50,14
+ LTEXT "Username:",IDC_STATIC,36,75,40,8
+ LTEXT "Password:",IDC_STATIC,36,93,42,8
+ EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
+ EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
+END
+
+IDD_LOGGEDON_DLG DIALOGEX 0,0,186,52
+STYLE NOT WS_VISIBLE | DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
+CAPTION "Security"
+FONT 8,"MS Shell Dlg 2",400,0,1
+BEGIN
+ PUSHBUTTON "Cancel",IDCANCEL,125,31,50,14
+ PUSHBUTTON "Log off",IDC_LOGOFF,11,31,50,14
+ PUSHBUTTON "Shutdown",IDC_SHUTDOWN,69,31,50,14
+ LTEXT "What do you want to do?",IDC_STATIC,50,18,87,8
+END
+
+STRINGTABLE
+BEGIN
+ IDS_PRESSCTRLALTDELETE "Press CONTROL+ALT+DELETE key combination\n"
+ IDS_ASKFORUSER "User name: "
+ IDS_ASKFORPASSWORD "Password: "
+END
+
diff --git a/reactos/dll/win32/msgina/gui.c b/reactos/dll/win32/msgina/gui.c
index 488122dcbc5..cfb92d26f34 100644
--- a/reactos/dll/win32/msgina/gui.c
+++ b/reactos/dll/win32/msgina/gui.c
@@ -14,6 +14,9 @@
#undef DPRINT
#undef DPRINT1
+static HBITMAP hBitmap = NULL;
+static int cxSource, cySource;
+
typedef struct _DISPLAYSTATUSMSG
{
PGINA_CONTEXT Context;
@@ -46,7 +49,7 @@ StatusMessageWindowProc(
PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lParam;
if (!msg)
return FALSE;
-
+
msg->Context->hStatusWindow = hwndDlg;
if (msg->pTitle)
@@ -207,6 +210,8 @@ LoggedOutWindowProc(
IN WPARAM wParam,
IN LPARAM lParam)
{
+ BITMAP bitmap;
+
switch (uMsg)
{
case WM_INITDIALOG:
@@ -214,6 +219,31 @@ LoggedOutWindowProc(
/* FIXME: take care of DontDisplayLastUserName, NoDomainUI, ShutdownWithoutLogon */
SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)lParam);
SetFocus(GetDlgItem(hwndDlg, IDC_USERNAME));
+
+ hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDC_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
+ if (hBitmap != NULL)
+ {
+ GetObject(hBitmap, sizeof(BITMAP), &bitmap);
+ cxSource = bitmap.bmWidth;
+ cySource = bitmap.bmHeight;
+ }
+ break;
+ }
+ case WM_PAINT:
+ {
+ PAINTSTRUCT ps;
+ HDC hdc, hdcMem;
+ hdc = BeginPaint(hwndDlg, &ps);
+ hdcMem = CreateCompatibleDC(hdc);
+ SelectObject(hdcMem, hBitmap);
+ BitBlt(hdc, 0, 0, cxSource, cySource, hdcMem, 0, 0, SRCCOPY);
+ DeleteDC(hdcMem);
+ EndPaint(hwndDlg, &ps);
+ break;
+ }
+ case WM_DESTROY:
+ {
+ DeleteObject(hBitmap);
break;
}
case WM_COMMAND:
diff --git a/reactos/dll/win32/msgina/msgina.rbuild b/reactos/dll/win32/msgina/msgina.rbuild
index cc68c806dee..dc6e7f524f4 100644
--- a/reactos/dll/win32/msgina/msgina.rbuild
+++ b/reactos/dll/win32/msgina/msgina.rbuild
@@ -10,6 +10,7 @@
kernel32
advapi32
user32
+ gdi32
gui.c
msgina.c
stubs.c
diff --git a/reactos/dll/win32/msgina/msgina.rc b/reactos/dll/win32/msgina/msgina.rc
index b00b1811e58..567fb7a7dd3 100644
--- a/reactos/dll/win32/msgina/msgina.rc
+++ b/reactos/dll/win32/msgina/msgina.rc
@@ -7,53 +7,8 @@
#define REACTOS_STR_ORIGINAL_FILENAME "msgina.dll\0"
#include
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-IDD_STATUSWINDOW_DLG DIALOGEX 0,0,274,26
-STYLE NOT WS_VISIBLE | DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
-CAPTION "Please wait..."
-FONT 8,"MS Shell Dlg 2",400,0,1
-BEGIN
- LTEXT "",IDC_STATUSLABEL,7,8,234,12,SS_WORDELLIPSIS
-END
+IDC_ROSLOGO BITMAP "resources/reactos.bmp"
-IDD_NOTICE_DLG DIALOGEX 0,0,186,59
-STYLE NOT WS_VISIBLE | DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
-CAPTION "Welcome to ReactOS"
-FONT 8,"MS Shell Dlg 2",400,0,1
-BEGIN
- LTEXT "Press Control-Alt-Delete key combination",IDC_STATIC,16,18,144,14
-END
-
-IDD_LOGGEDOUT_DLG DIALOGEX 0,0,245,77
-STYLE NOT WS_VISIBLE | DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
-CAPTION "Logon"
-FONT 8,"MS Shell Dlg 2",400,0,1
-BEGIN
- PUSHBUTTON "OK",IDOK,31,52,50,14,BS_DEFPUSHBUTTON
- PUSHBUTTON "Cancel",IDCANCEL,95,52,50,14
- PUSHBUTTON "Shutdown",IDC_SHUTDOWN,159,52,50,14
- LTEXT "User name:",IDC_STATIC,16,15,40,8
- LTEXT "Password:",IDC_STATIC,16,33,42,8
- EDITTEXT IDC_USERNAME,64,12,169,14,ES_AUTOHSCROLL
- EDITTEXT IDC_PASSWORD,64,31,169,14,ES_AUTOHSCROLL | ES_PASSWORD
-END
-
-IDD_LOGGEDON_DLG DIALOGEX 0,0,186,52
-STYLE NOT WS_VISIBLE | DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
-CAPTION "Security"
-FONT 8,"MS Shell Dlg 2",400,0,1
-BEGIN
- PUSHBUTTON "Cancel",IDCANCEL,125,31,50,14
- PUSHBUTTON "Log off",IDC_LOGOFF,11,31,50,14
- PUSHBUTTON "Shutdown",IDC_SHUTDOWN,69,31,50,14
- LTEXT "What do you want to do?",IDC_STATIC,50,18,87,8
-END
-
-STRINGTABLE
-BEGIN
- IDS_PRESSCTRLALTDELETE "Press CONTROL+ALT+DELETE key combination\n"
- IDS_ASKFORUSER "User name: "
- IDS_ASKFORPASSWORD "Password: "
-END
+#include "En.rc"
diff --git a/reactos/dll/win32/msgina/resource.h b/reactos/dll/win32/msgina/resource.h
index 558e29116e3..36b936868c1 100644
--- a/reactos/dll/win32/msgina/resource.h
+++ b/reactos/dll/win32/msgina/resource.h
@@ -11,6 +11,7 @@
#define IDC_PASSWORD 1003
#define IDC_SHUTDOWN 1004
#define IDC_STATUSLABEL 1005
+#define IDC_ROSLOGO 1006
#define IDS_ASKFORUSER 40000
#define IDS_PRESSCTRLALTDELETE 40001
#define IDS_ASKFORPASSWORD 40002
diff --git a/reactos/dll/win32/msgina/resources/reactos.bmp b/reactos/dll/win32/msgina/resources/reactos.bmp
new file mode 100644
index 00000000000..b5775aebecc
Binary files /dev/null and b/reactos/dll/win32/msgina/resources/reactos.bmp differ
diff --git a/reactos/dll/win32/msgina/tui.c b/reactos/dll/win32/msgina/tui.c
index d2cb15c2362..62c5f72f09c 100644
--- a/reactos/dll/win32/msgina/tui.c
+++ b/reactos/dll/win32/msgina/tui.c
@@ -88,7 +88,7 @@ ReadString(
IN OUT PWSTR Buffer,
IN DWORD BufferLength,
IN BOOL ShowString)
-{
+{
WCHAR Prompt[256];
DWORD count, i;