Author: mpiulachs
Date: Thu Feb 21 20:07:01 2008
New Revision: 32442
URL:
http://svn.reactos.org/svn/reactos?rev=32442&view=rev
Log:
- Modified to use the screensaver library
- Reduce the amount of code to minimum
- Remove unneeded resources
Added:
trunk/reactos/base/applications/screensavers/logon/logon.def (with props)
Modified:
trunk/reactos/base/applications/screensavers/logon/lang/bg-BG.rc
trunk/reactos/base/applications/screensavers/logon/lang/de-DE.rc
trunk/reactos/base/applications/screensavers/logon/lang/el-GR.rc
trunk/reactos/base/applications/screensavers/logon/lang/en-US.rc
trunk/reactos/base/applications/screensavers/logon/lang/es-ES.rc
trunk/reactos/base/applications/screensavers/logon/lang/fr-FR.rc
trunk/reactos/base/applications/screensavers/logon/lang/it-IT.rc
trunk/reactos/base/applications/screensavers/logon/lang/lt-LT.rc
trunk/reactos/base/applications/screensavers/logon/lang/nl-NL.rc
trunk/reactos/base/applications/screensavers/logon/lang/pl-PL.rc
trunk/reactos/base/applications/screensavers/logon/lang/ru-RU.rc
trunk/reactos/base/applications/screensavers/logon/lang/sk-SK.rc
trunk/reactos/base/applications/screensavers/logon/lang/uk-UA.rc
trunk/reactos/base/applications/screensavers/logon/logon.c
trunk/reactos/base/applications/screensavers/logon/logon.rbuild
trunk/reactos/base/applications/screensavers/logon/logon.rc
trunk/reactos/base/applications/screensavers/logon/resource.h
Modified: trunk/reactos/base/applications/screensavers/logon/lang/bg-BG.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/bg-BG.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/bg-BG.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Âõîäåí åêðàíåí ïðåäïàçèòåë"
- IDS_TITLE "Çà"
IDS_TEXT "Íÿìà âúçìîæíîñò çà íàñòðîéêè."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/de-DE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/de-DE.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/de-DE.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Logon Bildschirmschoner"
- IDS_TITLE "Über"
IDS_TEXT "Keinerlei Einstellungen notwendig."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/el-GR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/el-GR.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/el-GR.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Ðñïöýëáîç ïèüíçò Logon"
- IDS_TITLE "Ðåñß"
IDS_TEXT "ÁõôÞ ç ðñïöýëáîç ïèüíçò äå äéáèÝôåé åðéëïãÝò ôéò ïðïßåò
ìðïñåßôå íá ïñßóåôå."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/en-US.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/en-US.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Logon ScreenSaver"
- IDS_TITLE "About"
IDS_TEXT "No options need to be set."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/es-ES.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/es-ES.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/es-ES.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Logotipo ReactOS"
- IDS_TITLE "Acerca de"
IDS_TEXT "Ninguna opción necesita ser configurada."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/fr-FR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/fr-FR.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/fr-FR.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Écran de veille de logon"
- IDS_TITLE "À propos de"
IDS_TEXT "Il n'y a aucune option à définir."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/it-IT.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/it-IT.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/it-IT.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Salvaschermo Logon"
- IDS_TITLE "Informazioni su ..."
IDS_TEXT "Nessuna impostazione necessaria."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/lt-LT.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/lt-LT.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/lt-LT.rc Thu Feb 21 20:07:01
2008
@@ -12,6 +12,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Logon"
- IDS_TITLE "Apie"
IDS_TEXT "Nëra keièiamø parametrø."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/nl-NL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/nl-NL.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/nl-NL.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Logon Schermbeveiliging"
- IDS_TITLE "Informatie"
IDS_TEXT "Geen dingen om in te stellen."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/pl-PL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/pl-PL.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/pl-PL.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Wygaszacz ekranu Logon"
- IDS_TITLE "O programie..."
IDS_TEXT "Brak opcji."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/ru-RU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/ru-RU.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/ru-RU.rc Thu Feb 21 20:07:01
2008
@@ -3,6 +3,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Çàñòàâêà ""Âõîä â ñèñòåìó"""
- IDS_TITLE "Î ïðîãðàììå"
IDS_TEXT "Ýòà çàñòàâêà íå èìååò íàñòðàèâàåìûõ ïàðàìåòðîâ."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/sk-SK.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/sk-SK.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/sk-SK.rc Thu Feb 21 20:07:01
2008
@@ -7,6 +7,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Logon - etriè obrazovky"
- IDS_TITLE "Èo je ..."
IDS_TEXT "Nie sú potrebné iadne nastavenia."
END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/uk-UA.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/lang/uk-UA.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/lang/uk-UA.rc Thu Feb 21 20:07:01
2008
@@ -11,6 +11,5 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Çàñòàâêà ""Âõ³ä äî ñèñòåìè"""
- IDS_TITLE "Ïðî"
IDS_TEXT "Öÿ çàñòàâêà íå ìຠíàëàøòîâóâàíèõ ïàðàìåòð³â."
END
Modified: trunk/reactos/base/applications/screensavers/logon/logon.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/logon.c (original)
+++ trunk/reactos/base/applications/screensavers/logon/logon.c Thu Feb 21 20:07:01 2008
@@ -19,6 +19,7 @@
*/
#include <windows.h>
+#include <scrnsave.h>
#include <tchar.h>
#include "resource.h"
@@ -28,40 +29,8 @@
#define APP_TIMER 1
#define APP_TIMER_INTERVAL 2000
-#define BITMAP_HEIGHT 240;
+#define BITMAP_HEIGHT 240
#define BITMAP_WIDTH 340
-
-HINSTANCE hInstance;
-
-BOOL fullscreen = FALSE;
-
-void DrawScreen (HDC hdc, HDC hMemDC , RECT rect)
-{
- int x;
- int y;
- int width = BITMAP_WIDTH;
- int height = BITMAP_HEIGHT;
-
- if (!fullscreen)
- {
- width = width / 20;
- height = height / 20;
- }
-
- x = RANDOM (0, rect.right - width);
- y = RANDOM (0, rect.bottom - height);
-
- BitBlt(
- hdc,
- x,
- y,
- width,
- height,
- hMemDC,
- 0,
- 0,
- SRCCOPY);
-}
HBITMAP GetScreenSaverBitmap (void)
{
@@ -74,49 +43,39 @@
switch(osvi.wProductType)
{
case VER_NT_WORKSTATION:
- return LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_WORKSTATION));
+ return LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_WORKSTATION),
IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
break;
default:
- return LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SERVER));
+ return LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_SERVER), IMAGE_BITMAP, 0,
0, LR_CREATEDIBSECTION);
break;
}
}
-LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+LRESULT CALLBACK
+ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
- static POINT ptLast;
- static POINT ptCursor;
- static BOOL fFirstTime = TRUE;
-
- static PAINTSTRUCT ps;
static RECT rect;
- static HDC hDC;
- static HDC hMemDC;
- static HBRUSH hBlkBrush;
static HBITMAP bitmap;
- switch (msg)
+ switch (message)
{
case WM_CREATE:
{
- hDC = GetDC(hwnd);
- hBlkBrush = (HBRUSH) GetStockObject(BLACK_BRUSH);
- hMemDC = CreateCompatibleDC(hDC);
- GetClientRect(hwnd, &rect);
+ GetClientRect(hWnd, &rect);
bitmap = GetScreenSaverBitmap ();
if(bitmap == NULL)
{
MessageBox(
- hwnd,
+ hWnd,
_T("Fatal Error: Could not load bitmap"),
_T("Error"),
MB_OK | MB_ICONEXCLAMATION);
}
SetTimer (
- hwnd,
+ hWnd,
APP_TIMER,
APP_TIMER_INTERVAL,
NULL);
@@ -124,209 +83,73 @@
break;
}
case WM_PAINT:
- {
- hDC = BeginPaint(hwnd, &ps);
- SelectObject(hMemDC, bitmap);
- DrawScreen (hDC , hMemDC , rect);
- EndPaint(hwnd, &ps);
- break;
- }
- case WM_TIMER :
{
- if (wParam == APP_TIMER)
- {
- InvalidateRect(hwnd, NULL, 1);
- }
+ BITMAP bm; /* Bitmap structure as seen in bmWidth & bmHeight */
+ PAINTSTRUCT ps;
+
+ HDC hdc = BeginPaint(hWnd, &ps);
+ HDC hdcMem = CreateCompatibleDC(hdc);
+ HBITMAP hbmOld = SelectObject(hdcMem, bitmap);
+
+ GetObject(bitmap, sizeof(bm), &bm);
+
+ bm.bmWidth = 1000;
+ bm.bmHeight = 700;
+
+ BitBlt(
+ hdc,
+ RANDOM (0, rect.right - BITMAP_WIDTH),
+ RANDOM (0, rect.bottom - BITMAP_HEIGHT),
+ bm.bmWidth,
+ bm.bmHeight,
+ hdcMem,
+ 5,
+ 5,
+ SRCCOPY);
+
+ SelectObject(hdcMem, hbmOld);
+ DeleteDC(hdcMem);
+
+ EndPaint(hWnd, &ps);
+ break;
}
- case WM_ERASEBKGND:
- {
- SelectObject(hDC, hBlkBrush);
-
- PatBlt(
- hDC,
- 0,
- 0,
- rect.right,
- rect.bottom,
- PATCOPY);
- break;
- }
- case WM_DESTROY:
- {
- KillTimer (hwnd, APP_TIMER);
- DeleteObject(bitmap);
- ShowCursor(TRUE);
- PostQuitMessage(0);
- break;
- }
-
- // break out of screen-saver if any keyboard activity
- case WM_NOTIFY:
- case WM_SYSKEYDOWN:
- PostMessage(hwnd, WM_CLOSE, 0, 0);
- break;
-
- // break out of screen-saver if any mouse activity
- case WM_LBUTTONDOWN:
- case WM_LBUTTONUP:
- case WM_RBUTTONDOWN:
- case WM_RBUTTONUP:
- case WM_MBUTTONDOWN:
- case WM_MBUTTONUP:
- case WM_MOUSEMOVE:
- // If we've got a parent then we must be a preview
- if(GetParent(hwnd) != 0)
- return 0;
-
- if(fFirstTime)
- {
- GetCursorPos(&ptLast);
- fFirstTime = FALSE;
- }
-
- GetCursorPos(&ptCursor);
-
- // if the mouse has moved more than 3 pixels then exit
- if(abs(ptCursor.x - ptLast.x) >= 3 || abs(ptCursor.y - ptLast.y) >= 3)
- PostMessage(hwnd, WM_CLOSE, 0, 0);
-
- ptLast = ptCursor;
-
- return 0;
+ case WM_TIMER:
+ {
+ InvalidateRect(hWnd, NULL, 1);
+ break;
+ }
+ case WM_DESTROY:
+ {
+ KillTimer (hWnd, APP_TIMER);
+ DeleteObject(bitmap);
+ PostQuitMessage(0);
+ break;
}
- return DefWindowProc(hwnd, msg, wParam, lParam);
+ default:
+ // Pass Windows Messages to the default screensaver window procedure
+ return DefScreenSaverProc(hWnd, message, wParam, lParam);
+ }
+
+ return 0;
}
-void InitSaver(HWND hwndParent)
+BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM
lParam)
{
- WNDCLASS wc;
- ZeroMemory(&wc, sizeof(wc));
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = WndProc;
- wc.lpszClassName = APPNAME;
- wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
- RegisterClass(&wc);
-
- if (hwndParent != 0)
- {
- RECT rect;
- GetClientRect(hwndParent, &rect);
- CreateWindow(APPNAME, APPNAME,
- WS_VISIBLE | WS_CHILD,
- 0, 0,
- rect.right,
- rect.bottom,
- hwndParent, 0,
- hInstance, NULL);
- fullscreen = FALSE;
- }
- else
- {
- HWND hwnd;
- hwnd = CreateWindowEx(WS_EX_TOPMOST,
- APPNAME,
- APPNAME,
- WS_VISIBLE | WS_POPUP,
- 0, 0,
- GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
- HWND_DESKTOP, 0,
- hInstance, NULL);
-
- SetWindowPos(hwnd,
- 0, 0, 0, 0, 0,
- SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_SHOWWINDOW);
-
- ShowCursor(FALSE);
- fullscreen = TRUE;
- }
+ return FALSE;
}
-VOID ParseCommandLine(LPWSTR szCmdLine, UCHAR *chOption, HWND *hwndParent)
+// This function is only called one time before opening the configuration dialog.
+// Use it to show a message that no configuration is necesssary and return FALSE to
indicate that no configuration dialog shall be opened.
+BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
- UCHAR ch = *szCmdLine++;
+ TCHAR szMessage[256];
+ TCHAR szTitle[25];
- if(ch == '-' || ch == '/')
- ch = *szCmdLine++;
+ LoadString(hInst, IDS_TEXT, szMessage, sizeof(szMessage) / sizeof(TCHAR));
+ LoadString(hInst, IDS_DESCRIPTION, szTitle, sizeof(szTitle) / sizeof(TCHAR));
- if(ch >= 'A' && ch <= 'Z')
- ch += 'a' - 'A'; //convert to lower case
+ MessageBox(NULL, szMessage, szTitle, MB_OK | MB_ICONEXCLAMATION);
- *chOption = ch;
- ch = *szCmdLine++;
-
- if(ch == ':')
- ch = *szCmdLine++;
-
- while(ch == ' ' || ch == '\t')
- ch = *szCmdLine++;
-
- if(isdigit(ch))
- {
- unsigned int i = _wtoi(szCmdLine - 1);
- *hwndParent = (HWND)i;
- }
- else
- *hwndParent = NULL;
+ return FALSE;
}
-
-void Configure(void)
-{
- TCHAR szTitle[256];
- TCHAR szText[256];
-
- LoadString(hInstance,
- IDS_TITLE,
- szTitle,
- 256);
-
- LoadString(hInstance,
- IDS_TEXT,
- szText,
- 256);
-
- MessageBox(0,
- szText,
- szTitle,
- MB_OK | MB_ICONWARNING);
-}
-
-int CALLBACK wWinMain (HINSTANCE hInst,
- HINSTANCE hPrev,
- LPWSTR lpCmdLine,
- int iCmdShow)
-{
- HWND hwndParent;
- UINT nPreviousState;
- UCHAR chOption;
- MSG Message;
-
- hInstance = hInst;
-
- ParseCommandLine(lpCmdLine, &chOption, &hwndParent);
-
- SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, &nPreviousState, 0);
-
- switch (chOption)
- {
- case 's':
- InitSaver(0);
- break;
-
- case 'p':
- InitSaver(hwndParent);
- break;
-
- case 'c':
- default:
- Configure();
- return 0;
- }
-
- while (GetMessage(&Message, 0, 0, 0))
- DispatchMessage(&Message);
-
- SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, FALSE, &nPreviousState, 0);
-
- return Message.wParam;
-}
Added: trunk/reactos/base/applications/screensavers/logon/logon.def
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/logon.def (added)
+++ trunk/reactos/base/applications/screensavers/logon/logon.def Thu Feb 21 20:07:01 2008
@@ -1,0 +1,5 @@
+NAME logon.scr
+
+EXPORTS
+ ScreenSaverProc
+ ScreenSaverConfigureDialog
Propchange: trunk/reactos/base/applications/screensavers/logon/logon.def
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/base/applications/screensavers/logon/logon.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/logon.rbuild (original)
+++ trunk/reactos/base/applications/screensavers/logon/logon.rbuild Thu Feb 21 20:07:01
2008
@@ -1,7 +1,9 @@
<?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
<module name="logon" type="win32scr"
installbase="system32" installname="logon.scr"
unicode="true">
+ <importlibrary definition="logon.def" />
<include base="logon">.</include>
+ <library>scrnsave</library>
<library>kernel32</library>
<library>user32</library>
<library>gdi32</library>
Modified: trunk/reactos/base/applications/screensavers/logon/logon.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/logon.rc (original)
+++ trunk/reactos/base/applications/screensavers/logon/logon.rc Thu Feb 21 20:07:01 2008
@@ -1,4 +1,5 @@
#include <windows.h>
+#include <scrnsave.h>
#include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
Modified: trunk/reactos/base/applications/screensavers/logon/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
==============================================================================
--- trunk/reactos/base/applications/screensavers/logon/resource.h (original)
+++ trunk/reactos/base/applications/screensavers/logon/resource.h Thu Feb 21 20:07:01
2008
@@ -1,6 +1,3 @@
-
-#define IDS_DESCRIPTION 1
-#define IDS_TITLE 2
#define IDS_TEXT 3
#define IDB_WORKSTATION 0x100
#define IDB_SERVER 0x200