[LOGONUI]
authorGed Murphy <gedmurphy@reactos.org>
Wed, 25 May 2011 17:13:54 +0000 (17:13 +0000)
committerGed Murphy <gedmurphy@reactos.org>
Wed, 25 May 2011 17:13:54 +0000 (17:13 +0000)
- Start to put together the logon / logoff user interface process
- It currently paints an exact pixel replica of WinXP's welcome screen in a logging off state
- Just a bit of fun at the moment, but will be part of the UI revamp we're all working towards.

svn path=/trunk/; revision=51906

15 files changed:
reactos/base/system/logonui/NT5design.c [new file with mode: 0644]
reactos/base/system/logonui/NT6design.c [new file with mode: 0644]
reactos/base/system/logonui/lang/en-US.rc [new file with mode: 0644]
reactos/base/system/logonui/logonui.c [new file with mode: 0644]
reactos/base/system/logonui/logonui.h [new file with mode: 0644]
reactos/base/system/logonui/logonui.rbuild [new file with mode: 0644]
reactos/base/system/logonui/logonui.rc [new file with mode: 0644]
reactos/base/system/logonui/res/100.bmp [new file with mode: 0644]
reactos/base/system/logonui/res/123.bmp [new file with mode: 0644]
reactos/base/system/logonui/res/125.bmp [new file with mode: 0644]
reactos/base/system/logonui/res/126.bmp [new file with mode: 0644]
reactos/base/system/logonui/res/unknown.bmp [new file with mode: 0644]
reactos/base/system/logonui/res/unknown2.bmp [new file with mode: 0644]
reactos/base/system/logonui/resource.h [new file with mode: 0644]
reactos/base/system/logonui/rsrc.rc [new file with mode: 0644]

diff --git a/reactos/base/system/logonui/NT5design.c b/reactos/base/system/logonui/NT5design.c
new file mode 100644 (file)
index 0000000..6c4ff37
--- /dev/null
@@ -0,0 +1,354 @@
+/*
+ * COPYRIGHT:   See COPYING in the top level directory
+ * PROJECT:     ReactOS Logon User Interface Host
+ * FILE:        subsys/system/logonui/NT5design.c
+ * PROGRAMMERS: Ged Murphy (gedmurphy@reactos.org)
+ */
+
+#include "logonui.h"
+
+
+/* GLOBALS ******************************************************************/
+
+#define NT5_TOP_BORDER_HEIGHT       80
+#define NT5_BOTTOM_BORDER_HEIGHT    96
+
+
+/* FUNCTIONS ****************************************************************/
+
+static VOID
+NT5_DrawLogoffCaptionText(LPWSTR lpText,
+                          HDC hdcMem)
+{
+    HFONT hFont;
+    LOGFONTW LogFont;
+    RECT TextRect;
+    INT PrevBkMode;
+
+    /* Setup the font we'll use */
+    ZeroMemory(&LogFont, sizeof(LOGFONTW));
+    LogFont.lfCharSet = DEFAULT_CHARSET;
+    LogFont.lfHeight = 22;
+    LogFont.lfWeight = 109; // From WinXP disassembly
+    wcscpy_s(LogFont.lfFaceName, LF_FACESIZE, L"Arial");
+
+    /* Create it */
+    hFont = CreateFontIndirectW(&LogFont);
+    if (hFont)
+    {
+        /* Set the font and font colour */
+        SelectObject(hdcMem, hFont);
+        SetTextColor(hdcMem, RGB(255, 255, 255));
+
+        /* Create the text rect */
+        TextRect.top = (g_pInfo->cy / 2) + 34;
+        TextRect.bottom = (g_pInfo->cy / 2) + 34 + (GetDeviceCaps(hdcMem, LOGPIXELSY));
+        TextRect.left = g_pInfo->cx / 3;
+        TextRect.right = (g_pInfo->cx / 2) + 35 + 137;
+
+        /* Set the background mode to transparent */
+        PrevBkMode = SetBkMode(hdcMem, TRANSPARENT);
+
+        /* Draw the text to the mem DC */
+        DrawTextW(hdcMem,
+                  lpText,
+                  -1,
+                  &TextRect,
+                  DT_NOPREFIX | DT_WORDBREAK | DT_RIGHT); // WinXP disassembly uses 0x812
+
+        /* Set the previous background mode */
+        SetBkMode(hdcMem, PrevBkMode);
+
+        /* Delete the font */
+        DeleteObject(hFont);
+    }
+}
+
+static VOID
+NT5_DrawLogoffIcon(HDC hdcMem)
+{
+    HBITMAP hBitmap;
+    BITMAP bitmap;
+    HDC hTempDC;
+
+    /* Load the XP logo */
+    hBitmap = (HBITMAP)LoadImageW(g_pInfo->hInstance,
+                                  MAKEINTRESOURCEW(IDB_MAIN_ROS_LOGO),
+                                  IMAGE_BITMAP,
+                                  0,
+                                  0,
+                                  LR_DEFAULTCOLOR);
+    if (hBitmap)
+    {
+        /* Get the bitmap dimensions */
+        GetObjectW(hBitmap, sizeof(BITMAP), &bitmap);
+
+        /* Create a temp DC for the bitmap */
+        hTempDC = CreateCompatibleDC(hdcMem);
+        if (hTempDC)
+        {
+            /* Select the bitmap onto the temp DC */
+            SelectObject(hTempDC, hBitmap);
+
+            /* Paint it onto the centre block */
+            BitBlt(hdcMem,
+                   (g_pInfo->cx / 2) + 35,
+                   (g_pInfo->cy / 2) - 72,
+                   bitmap.bmWidth,
+                   bitmap.bmHeight,
+                   hTempDC,
+                   0,
+                   0,
+                   SRCCOPY);
+
+            /* Delete the DC */
+            DeleteDC(hTempDC);
+        }
+
+        /* Delete the bitmap */
+        DeleteObject(hBitmap);
+    }
+}
+
+VOID
+NT5_RefreshLogoffScreenText(LPWSTR lpText,
+                            HDC hdcMem)
+{
+    /* FIXME: clear previous text */
+
+    /* Draw the new text */
+    NT5_DrawLogoffCaptionText(lpText, hdcMem);
+}
+
+VOID
+NT5_CreateLogoffScreen(LPWSTR lpText,
+                       HDC hdcMem)
+{
+    /* Draw the reactos logo */
+    NT5_DrawLogoffIcon(hdcMem);
+
+    /* Draw the first text string */
+    NT5_DrawLogoffCaptionText(lpText, hdcMem);
+}
+
+HDC
+NT5_DrawBaseBackground(HDC hdcDesktop)
+{
+    HBITMAP hBitmap = NULL;
+    HDC hdcMem = NULL;
+    BOOL bRet = FALSE;
+
+
+    /* Create an an off screen DC to match the desktop DC */
+    hdcMem = CreateCompatibleDC(hdcDesktop);
+    if (hdcMem)
+    {
+        /* Create a bitmap to draw the logoff screen onto */
+        hBitmap = CreateCompatibleBitmap(hdcDesktop, g_pInfo->cx, g_pInfo->cy);
+        if (hBitmap)
+        {
+            /* Select it onto our off screen DC*/
+            SelectObject(hdcMem, hBitmap);
+
+            /* Draw the centre block */
+            {
+                HBITMAP hTempBitmap;
+                HBRUSH hBrush;
+                BITMAP bitmap;
+                HDC hTempDC;
+
+                /* Paint the blue centre block */
+                hBrush = CreateSolidBrush(RGB(90, 126, 220));
+                SelectObject(hdcMem, hBrush);
+                PatBlt(hdcMem,
+                        0,
+                        NT5_TOP_BORDER_HEIGHT,
+                        g_pInfo->cx,
+                        g_pInfo->cy - NT5_TOP_BORDER_HEIGHT - NT5_BOTTOM_BORDER_HEIGHT,
+                        PATCOPY);
+                DeleteObject(hBrush);
+
+                /* Load the shine effect */
+                hTempBitmap = (HBITMAP)LoadImageW(g_pInfo->hInstance,
+                                                    MAKEINTRESOURCEW(IDB_MAIN_PANEL_SHINE),
+                                                    IMAGE_BITMAP,
+                                                    0,
+                                                    0,
+                                                    LR_DEFAULTCOLOR);
+                if (hTempBitmap)
+                {
+                    /* Get the bitmap dimensions */
+                    GetObjectW(hTempBitmap, sizeof(BITMAP), &bitmap);
+
+                    /* Create a temp DC for the bitmap */
+                    hTempDC = CreateCompatibleDC(hdcDesktop);
+                    if (hTempDC)
+                    {
+                        /* Select the bitmap onto the temp DC */
+                        SelectObject(hTempDC, hTempBitmap);
+
+                        /* Paint it onto the top left of the centre block */
+                        BitBlt(hdcMem,
+                                0,
+                                NT5_TOP_BORDER_HEIGHT,
+                                bitmap.bmWidth,
+                                bitmap.bmHeight,
+                                hTempDC,
+                                0,
+                                0,
+                                SRCCOPY);
+
+                        /* Delete the DC */
+                        DeleteDC(hTempDC);
+                    }
+
+                    /* Delete the bitmap */
+                    DeleteObject(hTempBitmap);
+                }
+            }
+
+            /* Draw the top border */
+            {
+                HBITMAP hTempBitmap;
+                HBRUSH hBrush;
+                BITMAP bitmap;
+                HDC hTempDC;
+
+                /* Create the blue brush and paint the top bar */
+                hBrush = CreateSolidBrush(RGB(0, 48, 156));
+                SelectObject(hdcMem, hBrush);
+                PatBlt(hdcMem, 0, 0, g_pInfo->cx, NT5_TOP_BORDER_HEIGHT, PATCOPY);
+                DeleteObject(hBrush);
+
+                /* Load the top divider strip */
+                hTempBitmap = (HBITMAP)LoadImageW(g_pInfo->hInstance,
+                                                    MAKEINTRESOURCEW(IDB_TOP_DIVIDER_STRIP),
+                                                    IMAGE_BITMAP,
+                                                    0,
+                                                    0,
+                                                    LR_DEFAULTCOLOR);
+                if (hTempBitmap)
+                {
+                    /* Get the bitmap dimensions */
+                    GetObjectW(hTempBitmap, sizeof(BITMAP), &bitmap);
+
+                    /* Create a temp DC for the bitmap */
+                    hTempDC = CreateCompatibleDC(hdcDesktop);
+                    if (hTempDC)
+                    {
+                        /* Select the bitmap onto the temp DC */
+                        SelectObject(hTempDC, hTempBitmap);
+
+                        /* Paint the bitmap */
+                        StretchBlt(hdcMem,
+                                    0,
+                                    NT5_TOP_BORDER_HEIGHT - bitmap.bmHeight,
+                                    g_pInfo->cx,
+                                    NT5_TOP_BORDER_HEIGHT,
+                                    hTempDC,
+                                    0,
+                                    0,
+                                    bitmap.bmWidth,
+                                    NT5_TOP_BORDER_HEIGHT,
+                                    SRCCOPY);
+
+                        /* Delete the DC */
+                        DeleteDC(hTempDC);
+                    }
+
+                    /* Delete the bitmap */
+                    DeleteObject(hTempBitmap);
+                }
+            }
+
+            /* Draw the bottom border */
+            {
+                HBITMAP hTempBitmap;
+                TRIVERTEX vertex[2];
+                GRADIENT_RECT gRect;
+                BITMAP bitmap;
+                HDC hTempDC;
+
+                /*
+                 * We paint the divider strip first as it's 3
+                 * pixels high but MS only show 2 of them.
+                 */
+
+                /* Load the bottom divider strip */
+                hTempBitmap = (HBITMAP)LoadImage(g_pInfo->hInstance,
+                                                    MAKEINTRESOURCE(IDB_BOTTOM_DIVIDER_STRIP),
+                                                    IMAGE_BITMAP,
+                                                    0,
+                                                    0,
+                                                    LR_DEFAULTCOLOR);
+                if (hTempBitmap)
+                {
+                    /* Get the bitmap dimensions */
+                    GetObjectW(hTempBitmap, sizeof(BITMAP), &bitmap);
+
+                    /* Create a temp DC for the bitmap */
+                    hTempDC = CreateCompatibleDC(hdcDesktop);
+                    if (hTempDC)
+                    {
+                        /* Select the bitmap onto the temp DC */
+                        SelectObject(hTempDC, hTempBitmap);
+
+                        /* Paint the bitmap */
+                        StretchBlt(hdcMem,
+                                    0,
+                                    g_pInfo->cy - NT5_BOTTOM_BORDER_HEIGHT,
+                                    g_pInfo->cx,
+                                    g_pInfo->cy - NT5_BOTTOM_BORDER_HEIGHT + bitmap.bmHeight,
+                                    hTempDC,
+                                    0,
+                                    0,
+                                    bitmap.bmWidth,
+                                    g_pInfo->cy - NT5_BOTTOM_BORDER_HEIGHT + bitmap.bmHeight,
+                                    SRCCOPY);
+
+                        /* Delete the DC */
+                        DeleteDC(hTempDC);
+                    }
+
+                    /* Delete the bitmap */
+                    DeleteObject(hTempBitmap);
+                }
+
+                /* Setup the left hand vertex */
+                vertex[0].x     = 0;
+                vertex[0].y     = g_pInfo->cy - NT5_BOTTOM_BORDER_HEIGHT + 2; // paint over 1 pixel of the bitmap
+                vertex[0].Red   = 0x3900;
+                vertex[0].Green = 0x3400;
+                vertex[0].Blue  = 0xAE00;
+                vertex[0].Alpha = 0x0000;
+
+                /* Setup the right hand vertex */
+                vertex[1].x     = g_pInfo->cx;
+                vertex[1].y     = g_pInfo->cy;
+                vertex[1].Red   = 0x0000;
+                vertex[1].Green = 0x3000;
+                vertex[1].Blue  = 0x9600;
+                vertex[1].Alpha = 0x0000;
+
+                /* Set the vertex structs */
+                gRect.UpperLeft  = 0;
+                gRect.LowerRight = 1;
+
+                /* Paint the gradient across the bottom */
+                GradientFill(hdcMem,
+                                vertex,
+                                2,
+                                &gRect,
+                                1,
+                                GRADIENT_FILL_RECT_H);
+            }
+
+            /* Delete the bitmap */
+            DeleteObject(hBitmap);
+        }
+    }
+
+    return hdcMem;
+}
+
+/* EOF */
diff --git a/reactos/base/system/logonui/NT6design.c b/reactos/base/system/logonui/NT6design.c
new file mode 100644 (file)
index 0000000..3278278
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * COPYRIGHT:   See COPYING in the top level directory
+ * PROJECT:     ReactOS Logon User Interface Host
+ * FILE:        subsys/system/logonui/NT6design.c
+ * PROGRAMMERS: Ged Murphy (gedmurphy@reactos.org)
+ */
+
+#include "logonui.h"
+
+/* DATA *********************************************************************/
+
+#define LOGONUI_KEY L"SOFTWARE\\Microsoft\\Windows\CurrentVersion\\Authentication\\LogonUI"
+
+
+/* GLOBALS ******************************************************************/
+
+/* FUNCTIONS ****************************************************************/
+
+
+
+/* EOF */
diff --git a/reactos/base/system/logonui/lang/en-US.rc b/reactos/base/system/logonui/lang/en-US.rc
new file mode 100644 (file)
index 0000000..77cc408
--- /dev/null
@@ -0,0 +1,3 @@
+#include "resource.h"
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
diff --git a/reactos/base/system/logonui/logonui.c b/reactos/base/system/logonui/logonui.c
new file mode 100644 (file)
index 0000000..1f5cb1e
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * COPYRIGHT:   See COPYING in the top level directory
+ * PROJECT:     ReactOS Logon User Interface Host
+ * FILE:        subsys/system/logonui/logonui.c
+ * PROGRAMMERS: Ged Murphy (gedmurphy@reactos.org)
+ */
+
+#include "logonui.h"
+
+/* DATA **********************************************************************/
+
+
+
+
+/* GLOBALS ******************************************************************/
+
+PINFO g_pInfo = NULL;
+
+
+/* FUNCTIONS ****************************************************************/
+
+
+static HDC
+DrawBaseBackground(HDC hdcDesktop)
+{
+    HDC hdcMem;
+
+    hdcMem = NT5_DrawBaseBackground(hdcDesktop);
+
+    return hdcMem;
+}
+
+static VOID
+DrawLogoffScreen(HDC hdcMem)
+{
+    /* Draw the logoff icon */
+    NT5_CreateLogoffScreen(L"Saving your settings...", hdcMem);
+}
+
+static ULONG
+GetULONG(LPWSTR String)
+{
+    UINT i, Length;
+    ULONG Value;
+    LPWSTR StopString;
+
+    i = 0;
+    /* Get the string length */
+    Length = (UINT)wcslen(String);
+
+    /* Check the string only consists of numbers */
+    while ((i < Length) && ((String[i] < L'0') || (String[i] > L'9'))) i++;
+    if ((i >= Length) || ((String[i] < L'0') || (String[i] > L'9')))
+    {
+        return (ULONG)-1;
+    }
+
+    /* Convert it */
+    Value = wcstoul(&String[i], &StopString, 10);
+
+    return Value;
+}
+
+static ULONG
+GetULONG2(LPWSTR String1, LPWSTR String2, PINT i)
+{
+    ULONG Value;
+
+    /* Check the first string value */
+    Value = GetULONG(String1);
+    if (Value == (ULONG)-1)
+    {
+        /* Check the second string value isn't a switch */
+        if (String2[0] != L'-')
+        {
+            /* Check the value */
+            Value = GetULONG(String2);
+            *i += 1;
+        }
+    }
+
+    return Value;
+}
+
+static BOOL
+ParseCmdline(int argc, WCHAR* argv[])
+{
+    return TRUE;
+}
+
+static VOID
+Run()
+{
+    HWND hDesktopWnd;
+    HDC hdcDesktop, hdcMem;
+
+    /* Get the screen size */
+    g_pInfo->cx = GetSystemMetrics(SM_CXSCREEN);
+    g_pInfo->cy = GetSystemMetrics(SM_CYSCREEN);
+
+    hDesktopWnd = GetDesktopWindow();
+
+    /* Get the DC for the desktop */
+    hdcDesktop = GetDCEx(hDesktopWnd, NULL, DCX_CACHE);
+    if (hdcDesktop)
+    {
+        /* Initialize the base background onto a DC */
+        hdcMem = DrawBaseBackground(hdcDesktop);
+        if (hdcMem)
+        {
+            /* TEST : Draw logoff screen */
+            DrawLogoffScreen(hdcMem);
+
+            /* Blit the off-screen DC to the desktop */
+            BitBlt(hdcDesktop,
+                   0,
+                   0,
+                   g_pInfo->cx,
+                   g_pInfo->cy,
+                   hdcMem,
+                   0,
+                   0,
+                   SRCCOPY);
+
+            /* Delete the memory DC */
+            DeleteDC(hdcMem);
+        }
+
+        /* Release the desktop DC */
+        ReleaseDC(hDesktopWnd, hdcDesktop);
+    }
+}
+
+int WINAPI
+wWinMain(IN HINSTANCE hInst,
+         IN HINSTANCE hPrevInstance,
+         IN LPWSTR lpszCmdLine,
+         IN int nCmdShow)
+{
+    LPWSTR *lpArgs;
+    INT NumArgs;
+
+    /* Allocate memory for the data */
+    g_pInfo = (PINFO)HeapAlloc(GetProcessHeap(),
+                               HEAP_ZERO_MEMORY,
+                               sizeof(INFO));
+    if (!g_pInfo) return -1;
+
+    g_pInfo->hInstance = hInst;
+
+    /* Get the command line args */
+    lpArgs = CommandLineToArgvW(lpszCmdLine, &NumArgs);
+    if (lpArgs)
+    {
+        /* Parse the command line */
+        if (ParseCmdline(NumArgs, lpArgs))
+        {
+            /* Start the main routine */
+            Run();
+        }
+    }
+
+    /* Free the data */
+    HeapFree(GetProcessHeap(),
+             0,
+             g_pInfo);
+
+    return 0;
+}
+
+/* EOF */
diff --git a/reactos/base/system/logonui/logonui.h b/reactos/base/system/logonui/logonui.h
new file mode 100644 (file)
index 0000000..b0e36bf
--- /dev/null
@@ -0,0 +1,20 @@
+#pragma once
+
+#include <windows.h>
+#include "resource.h"
+
+typedef struct _INFO
+{
+    HINSTANCE hInstance;
+    INT cx;
+    INT cy;
+
+} INFO, *PINFO;
+
+extern PINFO g_pInfo;
+
+
+
+HDC NT5_DrawBaseBackground(HDC hdcDesktop);
+VOID NT5_CreateLogoffScreen(LPWSTR lpText, HDC hdcMem);
+VOID NT5_RefreshLogoffScreenText(LPWSTR lpText, HDC hdcMem);
diff --git a/reactos/base/system/logonui/logonui.rbuild b/reactos/base/system/logonui/logonui.rbuild
new file mode 100644 (file)
index 0000000..cd7dfc0
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
+<module name="logonui" type="win32gui" installbase="system32" installname="LogonUI.exe" unicode="yes">
+       <include base="logonui">.</include>
+       <library>user32</library>
+       <library>gdi32</library>
+       <file>logonui.c</file>
+       <file>NT5design.c</file>
+       <file>NT6design.c</file>
+       <file>logonui.rc</file>
+</module>
diff --git a/reactos/base/system/logonui/logonui.rc b/reactos/base/system/logonui/logonui.rc
new file mode 100644 (file)
index 0000000..4b2ca74
--- /dev/null
@@ -0,0 +1,8 @@
+#include <windows.h>
+
+#define REACTOS_STR_FILE_DESCRIPTION   "ReactOS Logon User Interface Host\0"
+#define REACTOS_STR_INTERNAL_NAME      "LogonUI\0"
+#define REACTOS_STR_ORIGINAL_FILENAME  "LogonUI.exe\0"
+//#include <reactos/version.rc>
+
+#include "rsrc.rc"
diff --git a/reactos/base/system/logonui/res/100.bmp b/reactos/base/system/logonui/res/100.bmp
new file mode 100644 (file)
index 0000000..09fd34b
Binary files /dev/null and b/reactos/base/system/logonui/res/100.bmp differ
diff --git a/reactos/base/system/logonui/res/123.bmp b/reactos/base/system/logonui/res/123.bmp
new file mode 100644 (file)
index 0000000..eb967d0
Binary files /dev/null and b/reactos/base/system/logonui/res/123.bmp differ
diff --git a/reactos/base/system/logonui/res/125.bmp b/reactos/base/system/logonui/res/125.bmp
new file mode 100644 (file)
index 0000000..ae6ea10
Binary files /dev/null and b/reactos/base/system/logonui/res/125.bmp differ
diff --git a/reactos/base/system/logonui/res/126.bmp b/reactos/base/system/logonui/res/126.bmp
new file mode 100644 (file)
index 0000000..05e6ce7
Binary files /dev/null and b/reactos/base/system/logonui/res/126.bmp differ
diff --git a/reactos/base/system/logonui/res/unknown.bmp b/reactos/base/system/logonui/res/unknown.bmp
new file mode 100644 (file)
index 0000000..67410c6
Binary files /dev/null and b/reactos/base/system/logonui/res/unknown.bmp differ
diff --git a/reactos/base/system/logonui/res/unknown2.bmp b/reactos/base/system/logonui/res/unknown2.bmp
new file mode 100644 (file)
index 0000000..d73e722
Binary files /dev/null and b/reactos/base/system/logonui/res/unknown2.bmp differ
diff --git a/reactos/base/system/logonui/resource.h b/reactos/base/system/logonui/resource.h
new file mode 100644 (file)
index 0000000..da8c4e7
--- /dev/null
@@ -0,0 +1,5 @@
+
+#define IDB_MAIN_PANEL_SHINE            100
+#define IDB_MAIN_ROS_LOGO               123
+#define IDB_TOP_DIVIDER_STRIP           125
+#define IDB_BOTTOM_DIVIDER_STRIP        126
diff --git a/reactos/base/system/logonui/rsrc.rc b/reactos/base/system/logonui/rsrc.rc
new file mode 100644 (file)
index 0000000..f2521e7
--- /dev/null
@@ -0,0 +1,14 @@
+
+#include <windows.h>
+#include "resource.h"
+
+LANGUAGE LANG_NEUTRAL,SUBLANG_NEUTRAL
+
+IDB_MAIN_PANEL_SHINE        BITMAP DISCARDABLE "res/100.bmp"
+IDB_MAIN_ROS_LOGO           BITMAP DISCARDABLE "res/123.bmp"
+IDB_TOP_DIVIDER_STRIP       BITMAP DISCARDABLE "res/125.bmp"
+IDB_BOTTOM_DIVIDER_STRIP    BITMAP DISCARDABLE "res/126.bmp"
+
+
+//#include "lang/en-US.rc"
+