[CLT2012]
authorThomas Faber <thomas.faber@reactos.org>
Sat, 10 Mar 2012 09:38:41 +0000 (09:38 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sat, 10 Mar 2012 09:38:41 +0000 (09:38 +0000)
- Adjust the CD root readme.txt for CLT
- Add CD options to welcome.exe
- Taken from previous years, see r51078, r46065

svn path=/branches/ros-branch-0_3_14-clt2012/; revision=56100

1  2 
base/setup/welcome/CMakeLists.txt
base/setup/welcome/lang/de-DE.rc
base/setup/welcome/rsrc.rc
base/setup/welcome/welcome.c
base/setup/welcome/welcome.rbuild
boot/bootdata/readme.txt

index b676ac0,0000000..4bc839b
mode 100644,000000..100644
--- /dev/null
@@@ -1,8 -1,0 +1,8 @@@
- add_importlibs(welcome gdi32 user32 msvcrt kernel32 ntdll)
 +
 +set_rc_compiler()
 +
 +add_executable(welcome welcome.c welcome.rc)
 +
 +set_module_type(welcome win32gui UNICODE)
++add_importlibs(welcome gdi32 user32 shell32 msvcrt kernel32 ntdll)
 +add_cd_file(TARGET welcome DESTINATION reactos NO_CAB FOR bootcd)
index e7c8771,0000000..2e26804
mode 100644,000000..100644
--- /dev/null
@@@ -1,65 -1,0 +1,66 @@@
-     IDS_APPTITLE            "ReactOS - Willkommen"
 +/*
 + * German (Austria) resources by Klemens Friedl (frik85 at hotmail dot com)
 + */
 +
 +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
 +
 +/* String Tables */
 +
 +/* Default settings */
 +STRINGTABLE DISCARDABLE
 +BEGIN
-     IDS_DEFAULTTOPICDESC    "Willkommen in ReactOS.\n\nKlicken Sie auf ein Thema auf der linken Seite."
- //    IDS_CHECKTEXT           "Dialog beim nächsen Start wieder anzeigen"
- //    IDS_CLOSETEXT           "Beenden"
++    IDS_APPTITLE            "ReactOS 0.3.14 - CLT 2012"
 +    IDS_DEFAULTTOPICTITLE   "ReactOS"
-     IDS_TOPICBUTTON1        "CD durchsuchen"
-     IDS_TOPICBUTTON2        "Beenden"
- //    IDS_TOPICBUTTON3        "Empty Topic 3"
- //    IDS_TOPICBUTTON4        "Empty Topic 4"
- //    IDS_TOPICBUTTON5        "Empty Topic 5"
- //    IDS_TOPICBUTTON6        "Empty Topic 6"
- //    IDS_TOPICBUTTON7        "Empty Topic 7"
- //    IDS_TOPICBUTTON8        "Empty Topic 8"
- //    IDS_TOPICBUTTON9        "Empty Topic 9"
++    IDS_DEFAULTTOPICDESC    "ReactOS ist ein modernes Open-Source-Betriebssystem, welches auf dem Design von Windows® XP/2003 basiert. Dazu gehört sowohl die volle Kompatibilität mit Windows-Anwendungen und -Treibern als auch eine ähnliche Benutzeroberfläche, damit sich die meisten Anwender sofort zurechtfinden. Der Quellcode des gesamten Systems ist frei verfügbar und steht größtenteils unter der GNU General Public License."
 +END
 +
 +/* Topic buttons */
 +STRINGTABLE DISCARDABLE
 +BEGIN
 +    IDS_TOPICBUTTON0        "ReactOS installieren"
-     IDS_TOPICTITLE1         "CD durchsuchen"
-     IDS_TOPICTITLE2         "Beenden"
- //    IDS_TOPICTITLE3         "Empty Topic Title 3"
- //    IDS_TOPICTITLE4         "Empty Topic Title 4"
- //    IDS_TOPICTITLE5         "Empty Topic Title 5"
- //    IDS_TOPICTITLE6         "Empty Topic Title 6"
- //    IDS_TOPICTITLE7         "Empty Topic Title 7"
- //    IDS_TOPICTITLE8         "Empty Topic Title 8"
- //    IDS_TOPICTITLE9         "Empty Topic Title 9"
++    IDS_TOPICBUTTON1        "ReactOS in QEMU ausprobieren"
++    IDS_TOPICBUTTON2        "ReactOS Build Environment installieren"
++    IDS_TOPICBUTTON3        "ReactOS-Quellcodepaket öffnen"
++    IDS_TOPICBUTTON4        "Die ReactOS-Website besuchen"
++    IDS_TOPICBUTTON5        "Die CD durchsuchen"
++    IDS_TOPICBUTTON6        "Beenden"
 +END
 +
 +/* Topic titles */
 +STRINGTABLE DISCARDABLE
 +BEGIN
 +    IDS_TOPICTITLE0         "ReactOS installieren"
-     IDS_TOPICDESC0          "Installiert ReactOS auf ihrem Computer oder aktualisiert eine bestehende Installation."
-     IDS_TOPICDESC1          "Die ReactOS-CD durchsuchen."
-     IDS_TOPICDESC2          "Klicken Sie, um dieses Programm zu beenden."
- //    IDS_TOPICDESC3          "Topic description 3.\n\nDescribe topic 3 here."
- //    IDS_TOPICDESC4          "Topic description 4.\n\nDescribe topic 4 here."
- //    IDS_TOPICDESC5          "Topic description 5.\n\nDescribe topic 5 here."
- //    IDS_TOPICDESC6          "Topic description 6.\n\nDescribe topic 6 here."
- //    IDS_TOPICDESC7          "Topic description 7.\n\nDescribe topic 7 here."
- //    IDS_TOPICDESC8          "Topic description 8.\n\nDescribe topic 8 here."
- //    IDS_TOPICDESC9          "Topic description 9.\n\nDescribe topic 9 here."
++    IDS_TOPICTITLE1         "ReactOS in QEMU ausprobieren"
++    IDS_TOPICTITLE2         "ReactOS Build Environment installieren"
++    IDS_TOPICTITLE3         "ReactOS-Quellcodepaket öffnen"
++    IDS_TOPICTITLE4         "Die ReactOS-Website besuchen"
++    IDS_TOPICTITLE5         "Die CD durchsuchen"
++    IDS_TOPICTITLE6         "Beenden"
 +END
 +
 +/* Topic descriptions */
 +STRINGTABLE DISCARDABLE
 +BEGIN
++    IDS_TOPICDESC0          "Installiert ReactOS auf ihrem Computer.\n\nBitte beachten Sie, dass Sie zur Zeit Ihren Computer mit der ReactOS-CD im Laufwerk neu starten müssen, um die Installation zu starten.\n\nAlternativ können Sie ReactOS problemlos in einer virtuellen QEMU-Maschine ausprobieren, wenn Sie den entsprechenden Menüpunkt auf der linken Seite wählen."
++    IDS_TOPICDESC1          "Möglicherweise möchten Sie ein Betriebssystem im Alpha-Stadium nicht auf Ihrem eigenen Computer testen oder es gibt Probleme bei der Installation. Daher haben wir ReactOS auf einer virtuellen QEMU-Maschine vorinstalliert, mit der Sie das Betriebssystem problemlos testen können, ohne dass es direkt auf Ihrem Computer installiert werden muss.\n\nEin Klick auf diesen Menüpunkt öffnet das QEMU-Paket in Ihrem ZIP-Archivprogramm."
++    IDS_TOPICDESC2          "Damit ReactOS so einfach wie möglich kompiliert werden kann, wurde das ReactOS Build Environment geschaffen. Dieses enthält die passenden Compiler-Versionen und alle nötigen Tools, um den gesamten ReactOS-Quellcode zu kompilieren.\n\nDie Windows-Version des Build Environments ist kompatibel mit Windows 2000, XP oder neueren Versionen. Sie wird über diesen Menüpunkt installiert.\nDie CD enthält auch das Build Environment für Unix-ähnliche Betriebssysteme, wie z.B. Linux oder Mac OS X.\n\nZusätzlich befindet sich auf dieser CD der Quellcode dieser ReactOS-Version in einer ZIP-Datei."
++    IDS_TOPICDESC3          "Die CD enthält auch den gesamten Quellcode dieser ReactOS-Version, welcher mit dem ReactOS Build Environment kompiliert werden kann.\nEin Klick auf diesen Menüpunkt öffnet ihn in Ihrem ZIP-Archivprogramm."
++    IDS_TOPICDESC4          "Die ReactOS-Website liefert viele weitere Informationen über das Projekt. Hier finden Sie die neusten ReactOS-Versionen und Neuigkeiten bezüglich der Entwicklung."
++    IDS_TOPICDESC5          "Durchsuchen Sie den Inhalt dieser CD."
++    IDS_TOPICDESC6          "Beendet das AutoRun-Programm."
++END
++
++/* Topic actions */
++STRINGTABLE DISCARDABLE
++BEGIN
++    IDS_TOPICACTION0        "<msg>Zur Zeit müssen Sie Ihren Computer mit der ReactOS-CD im Laufwerk neu starten, um die Installation zu starten.\n\nBITTE BEACHTEN SIE: Es wird dringend davon abgeraten, ReactOS auf einem Computer zu installieren, welcher wichtige Daten enthält!"
++    IDS_TOPICACTION1        "..\\ReactOS in QEMU\\ReactOS-0.3.14-CLT2012-QEMU.zip"
++    IDS_TOPICACTION2        "..\\ReactOS Build Environment\\RosBE-2.0.exe"
++    IDS_TOPICACTION3        "..\\ReactOS-Quellcode\\ReactOS-0.3.14-CLT2012-Quellcode.zip"
++    IDS_TOPICACTION4        "http://www.reactos.org/"
++    IDS_TOPICACTION5        "explorer.exe"
++    IDS_TOPICACTION6        "<exit>"
 +END
 +
 +/* EOF */
 +
index abe034c,0000000..165679e
mode 100644,000000..100644
--- /dev/null
@@@ -1,68 -1,0 +1,28 @@@
- /* Topic actions */
- STRINGTABLE DISCARDABLE
- BEGIN
-     IDS_TOPICACTION0        "reactos.exe"
-     IDS_TOPICACTION1        "explorer.exe"
-     IDS_TOPICACTION2        "<exit>"  /* this quits the app */
- //    IDS_TOPICACTION3        "..."
- //    IDS_TOPICACTION4        "..."
- //    IDS_TOPICACTION5        "..."
- //    IDS_TOPICACTION6        "..."
- //    IDS_TOPICACTION7        "..."
- //    IDS_TOPICACTION8        "..."
- //    IDS_TOPICACTION9        "..."
- END
 +#include <windows.h>
 +#include "resource.h"
 +
 +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
 +
 +/* Icons */
 +IDI_MAIN                ICON  "res/welcome.ico"
 +
 +/* Bitmaps */
 +IDB_TITLEBITMAP         BITMAP  DISCARDABLE     "res/title.bmp"
 +//IDB_DEFAULTTOPICBITMAP  BITMAP  DISCARDABLE     "res/default.bmp"
 +
 +//IDB_TOPICBITMAP0        BITMAP  DISCARDABLE     "res/topic0.bmp"
 +//IDB_TOPICBITMAP1        BITMAP  DISCARDABLE     "res/topic1.bmp"
 +//IDB_TOPICBITMAP2        BITMAP  DISCARDABLE     "res/topic2.bmp"
 +//IDB_TOPICBITMAP3        BITMAP  DISCARDABLE     "res/topic3.bmp"
 +//IDB_TOPICBITMAP4        BITMAP  DISCARDABLE     "res/topic4.bmp"
 +//IDB_TOPICBITMAP5        BITMAP  DISCARDABLE     "res/topic5.bmp"
 +//IDB_TOPICBITMAP6        BITMAP  DISCARDABLE     "res/topic6.bmp"
 +//IDB_TOPICBITMAP7        BITMAP  DISCARDABLE     "res/topic7.bmp"
 +//IDB_TOPICBITMAP8        BITMAP  DISCARDABLE     "res/topic8.bmp"
 +//IDB_TOPICBITMAP9        BITMAP  DISCARDABLE     "res/topic9.bmp"
 +
 +
- #include "lang/bg-BG.rc"
- #include "lang/cs-CZ.rc"
- #include "lang/da-DK.rc"
 +/* Language-specific resources */
 +// UTF-8
 +#pragma code_page(65001)
- #include "lang/el-GR.rc"
- #include "lang/en-US.rc"
- #include "lang/es-ES.rc"
- #include "lang/et-EE.rc"
- #include "lang/fr-FR.rc"
- #include "lang/hu-HU.rc"
- #include "lang/id-ID.rc"
- #include "lang/it-IT.rc"
- #include "lang/ja-JP.rc"
- #include "lang/lt-LT.rc"
- #include "lang/no-NO.rc"
- #include "lang/nl-NL.rc"
- #include "lang/pl-PL.rc"
- #include "lang/pt-BR.rc"
- #include "lang/ro-RO.rc"
- #include "lang/ru-RU.rc"
- #include "lang/sk-SK.rc"
- #include "lang/sv-SE.rc"
- #include "lang/th-TH.rc"
- #include "lang/uk-UA.rc"
- #include "lang/zh-CN.rc"
 +#include "lang/de-DE.rc"
index 486074c,0000000..fb8cb9a
mode 100644,000000..100644
--- /dev/null
@@@ -1,851 -1,0 +1,841 @@@
-   PROCESS_INFORMATION ProcessInfo;
-   STARTUPINFO StartupInfo;
-   TCHAR AppName[256];
-   TCHAR CurrentDir[256];
 +/*
 + *  ReactOS applications
 + *  Copyright (C) 2001, 2002, 2003 ReactOS Team
 + *
 + *  This program is free software; you can redistribute it and/or modify
 + *  it under the terms of the GNU General Public License as published by
 + *  the Free Software Foundation; either version 2 of the License, or
 + *  (at your option) any later version.
 + *
 + *  This program is distributed in the hope that it will be useful,
 + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + *  GNU General Public License for more details.
 + *
 + *  You should have received a copy of the GNU General Public License along
 + *  with this program; if not, write to the Free Software Foundation, Inc.,
 + *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 + */
 +/* $Id$
 + *
 + * COPYRIGHT:   See COPYING in the top level directory
 + * PROJECT:     ReactOS welcome/autorun application
 + * FILE:        subsys/system/welcome/welcome.c
 + * PROGRAMMERS: Eric Kohl
 + *              Casper S. Hornstrup (chorns@users.sourceforge.net)
 + *
 + * NOTE:
 + *   This utility can be customized by modifying the resources.
 + *   Please do NOT change the source code in order to customize this
 + *   utility but change the resources!
 + */
 +
 +#include <reactos/version.h>
 +#include <windows.h>
 +#include <string.h>
 +#include <stdio.h>
 +#include <tchar.h>
 +
 +#include "resource.h"
 +
 +
 +
 +#define LIGHT_BLUE 0x00F7EFD6
 +#define DARK_BLUE  0x008C7B6B
 +
 +#define TITLE_WIDTH  480
 +#define TITLE_HEIGHT  93
 +
++#define TOPIC_DESC_LENGTH     1024
 +
 +/* GLOBALS ******************************************************************/
 +
 +TCHAR szFrameClass [] = TEXT("WelcomeWindowClass");
 +TCHAR szAppTitle [80];
 +
 +HINSTANCE hInstance;
 +
 +HWND hwndMain = 0;
 +HWND hwndDefaultTopic = 0;
 +
 +HDC hdcMem = 0;
 +
 +int nTopic = -1;
 +int nDefaultTopic = -1;
 +
 +ULONG ulInnerWidth = TITLE_WIDTH;
 +ULONG ulInnerHeight = (TITLE_WIDTH * 3) / 4;
 +ULONG ulTitleHeight = TITLE_HEIGHT + 3;
 +
 +HBITMAP hTitleBitmap = 0;
 +HBITMAP hDefaultTopicBitmap = 0;
 +HBITMAP hTopicBitmap[10];
 +HWND hwndTopicButton[10];
 +HWND hwndCloseButton;
 +HWND hwndCheckButton;
 +
 +HFONT hfontTopicButton;
 +HFONT hfontTopicTitle;
 +HFONT hfontTopicDescription;
 +HFONT hfontCheckButton;
 +
 +HBRUSH hbrLightBlue;
 +HBRUSH hbrDarkBlue;
 +HBRUSH hbrRightPanel;
 +
 +RECT rcTitlePanel;
 +RECT rcLeftPanel;
 +RECT rcRightPanel;
 +
 +WNDPROC fnOldBtn;
 +
 +
 +INT_PTR CALLBACK
 +MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 +
 +
 +/* FUNCTIONS ****************************************************************/
 +
 +int WINAPI
 +_tWinMain(HINSTANCE hInst,
 +      HINSTANCE hPrevInstance,
 +      LPTSTR lpszCmdLine,
 +      int nCmdShow)
 +{
 +  WNDCLASSEX wndclass;
 +  MSG msg;
 +  int xPos;
 +  int yPos;
 +  int xWidth;
 +  int yHeight;
 +  RECT rcWindow;
 +  HICON hMainIcon;
 +  HMENU hSystemMenu;
 +  DWORD dwStyle = WS_OVERLAPPED | WS_CLIPCHILDREN | WS_CLIPSIBLINGS |
 +                  WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
 +  BITMAP BitmapInfo;
 +
 +  UNREFERENCED_PARAMETER(hPrevInstance);
 +  UNREFERENCED_PARAMETER(lpszCmdLine);
 +
 +  hInstance = hInst;
 +
 +  /* Load icons */
 +  hMainIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_MAIN));
 +
 +  /* Register the window class */
 +  wndclass.style = CS_HREDRAW | CS_VREDRAW;
 +  wndclass.lpfnWndProc = (WNDPROC)MainWndProc;
 +  wndclass.cbClsExtra = 0;
 +  wndclass.cbWndExtra = 0;
 +  wndclass.hInstance = hInstance;
 +  wndclass.hIcon = hMainIcon;
 +  wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
 +  wndclass.hbrBackground = 0;
 +  wndclass.lpszMenuName = NULL;
 +  wndclass.lpszClassName = szFrameClass;
 +
 +  wndclass.cbSize = sizeof(WNDCLASSEX);
 +  wndclass.hIconSm = 0;
 +
 +  RegisterClassEx(&wndclass);
 +
 +  hTitleBitmap = LoadBitmap (hInstance, MAKEINTRESOURCE(IDB_TITLEBITMAP));
 +  if (hTitleBitmap != NULL)
 +    {
 +      GetObject(hTitleBitmap, sizeof(BITMAP), &BitmapInfo);
 +      ulInnerWidth = BitmapInfo.bmWidth;
 +      ulInnerHeight = (ulInnerWidth * 3) / 4;
 +      ulTitleHeight = BitmapInfo.bmHeight + 3;
 +      DeleteObject(hTitleBitmap);
 +    }
 +  ulInnerHeight -= GetSystemMetrics(SM_CYCAPTION);
 +
 +  rcWindow.top = 0;
 +  rcWindow.bottom = ulInnerHeight - 1;
 +  rcWindow.left = 0;
 +  rcWindow.right = ulInnerWidth - 1;
 +
 +  AdjustWindowRect(&rcWindow,
 +                  dwStyle,
 +                  FALSE);
 +  xWidth = rcWindow.right - rcWindow.left;
 +  yHeight = rcWindow.bottom - rcWindow.top;
 +
 +  xPos = (GetSystemMetrics(SM_CXSCREEN) - xWidth) / 2;
 +  yPos = (GetSystemMetrics(SM_CYSCREEN) - yHeight) / 2;
 +
 +  rcTitlePanel.top = 0;
 +  rcTitlePanel.bottom = ulTitleHeight;
 +  rcTitlePanel.left = 0;
 +  rcTitlePanel.right = ulInnerWidth - 1;
 +
 +  rcLeftPanel.top = rcTitlePanel.bottom;
 +  rcLeftPanel.bottom = ulInnerHeight - 1;
 +  rcLeftPanel.left = 0;
 +  rcLeftPanel.right = ulInnerWidth / 3;
 +
 +  rcRightPanel.top = rcLeftPanel.top;
 +  rcRightPanel.bottom = rcLeftPanel.bottom;
 +  rcRightPanel.left = rcLeftPanel.right;
 +  rcRightPanel.right = ulInnerWidth - 1;
 +
 +  if (!LoadString(hInstance, (UINT_PTR)MAKEINTRESOURCE(IDS_APPTITLE), szAppTitle, 80))
 +    _tcscpy(szAppTitle, TEXT("ReactOS Welcome"));
 +
 +  /* Create main window */
 +  hwndMain = CreateWindow(szFrameClass,
 +                        szAppTitle,
 +                        dwStyle,
 +                        xPos,
 +                        yPos,
 +                        xWidth,
 +                        yHeight,
 +                        0,
 +                        0,
 +                        hInstance,
 +                        NULL);
 +
 +  hSystemMenu = GetSystemMenu(hwndMain, FALSE);
 +  if(hSystemMenu)
 +  {
 +    RemoveMenu(hSystemMenu, SC_SIZE, MF_BYCOMMAND);
 +    RemoveMenu(hSystemMenu, SC_MAXIMIZE, MF_BYCOMMAND);
 +  }
 +
 +  ShowWindow(hwndMain, nCmdShow);
 +  UpdateWindow(hwndMain);
 +
 +  while (GetMessage(&msg, NULL, 0, 0) != FALSE)
 +    {
 +      TranslateMessage(&msg);
 +      DispatchMessage(&msg);
 +    }
 +
 +  return(msg.wParam);
 +}
 +
 +
 +INT_PTR CALLBACK
 +ButtonSubclassWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 +{
 +  LONG i;
 +
 +  if (uMsg == WM_MOUSEMOVE)
 +    {
 +      i = GetWindowLongPtr(hWnd, GWL_ID);
 +      if (nTopic != i)
 +      {
 +        nTopic = i;
 +        SetFocus(hWnd);
 +        InvalidateRect(hwndMain, &rcRightPanel, TRUE);
 +      }
 +    }
 +
 +  return(CallWindowProc(fnOldBtn, hWnd, uMsg, wParam, lParam));
 +}
 +
 +
 +static BOOL
 +RunApplication(int nTopic)
 +{
-   GetCurrentDirectory(256, CurrentDir);
++  TCHAR AppName[512];
++  TCHAR Parameters[2];
 +  int nLength;
 +
 +  InvalidateRect(hwndMain, NULL, TRUE);
 +
-   if (_tcsicmp(AppName, TEXT("explorer.exe")) == 0)
-     {
-       _tcscat(AppName, TEXT(" "));
-       _tcscat(AppName, CurrentDir);
-     }
-   memset(&StartupInfo, 0, sizeof(STARTUPINFO));
-   StartupInfo.cb = sizeof(STARTUPINFO);
-   StartupInfo.lpTitle = TEXT("Test");
-   StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
-   StartupInfo.wShowWindow = SW_SHOWNORMAL;
 +  nLength = LoadString(hInstance, IDS_TOPICACTION0 + nTopic, AppName, 256);
 +  if (nLength == 0)
 +    return TRUE;
 +
 +  if (!_tcsicmp(AppName, TEXT("<exit>")))
 +    return FALSE;
 +
-   CreateProcess(NULL, AppName, NULL, NULL, FALSE, CREATE_NEW_CONSOLE,NULL,
-               CurrentDir,
-               &StartupInfo,
-               &ProcessInfo);
++  if (!_tcsnicmp(AppName, TEXT("<msg>"), 5))
++  {
++    MessageBox(hwndMain, AppName + 5, TEXT("ReactOS"), MB_OK | MB_TASKMODAL);
++    return TRUE;
++  }
 +
-   CloseHandle(ProcessInfo.hProcess);
-   CloseHandle(ProcessInfo.hThread);
++  if (_tcsicmp(AppName, TEXT("explorer.exe")) == 0)
++    _tcscpy(Parameters, TEXT("\\"));
++  else
++    *Parameters = 0;
 +
-   TCHAR szTopicDesc[256];
++  ShellExecute(NULL, TEXT("open"), AppName, Parameters, NULL, SW_SHOWDEFAULT);
 +
 +  return TRUE;
 +}
 +
 +
 +static VOID
 +SubclassButton(HWND hWnd)
 +{
 +  fnOldBtn = (WNDPROC)SetWindowLongPtr(hWnd, GWL_WNDPROC, (DWORD_PTR)ButtonSubclassWndProc);
 +}
 +
 +
 +static DWORD
 +GetButtonHeight(HDC hDC,
 +              HFONT hFont,
 +              LPCTSTR szText,
 +              DWORD dwWidth)
 +{
 +  HFONT hOldFont;
 +  RECT rect;
 +
 +  rect.left = 0;
 +  rect.right = dwWidth - 20;
 +  rect.top = 0;
 +  rect.bottom = 25;
 +
 +  hOldFont = (HFONT) SelectObject(hDC, hFont);
 +  DrawText(hDC, szText, -1, &rect, DT_TOP | DT_CALCRECT | DT_WORDBREAK);
 +  SelectObject(hDC, hOldFont);
 +
 +  return(rect.bottom-rect.top + 14);
 +}
 +
 +
 +static LRESULT
 +OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam)
 +{
 +  TCHAR szText[80];
 +  int i,nLength;
 +  HDC ScreenDC;
 +  DWORD dwTop;
 +  DWORD dwHeight = 0;
 +
 +  UNREFERENCED_PARAMETER(wParam);
 +  UNREFERENCED_PARAMETER(lParam);
 +
 +  hbrLightBlue = CreateSolidBrush(LIGHT_BLUE);
 +  hbrDarkBlue = CreateSolidBrush(DARK_BLUE);
 +  hbrRightPanel = CreateSolidBrush(0x00FFFFFF);
 +
 +  /* Topic title font */
 +  hfontTopicTitle = CreateFont(-18,0,0,0,FW_NORMAL,
 +                             FALSE,FALSE,FALSE,ANSI_CHARSET,
 +                             OUT_DEFAULT_PRECIS,
 +                             CLIP_DEFAULT_PRECIS,
 +                             DEFAULT_QUALITY,
 +                             FF_DONTCARE,
 +                             TEXT("Arial"));
 +
 +  /* Topic description font */
 +  hfontTopicDescription = CreateFont(-11,0,0,0,FW_THIN,
 +                                   FALSE,FALSE,FALSE,ANSI_CHARSET,
 +                                   OUT_DEFAULT_PRECIS,
 +                                   CLIP_DEFAULT_PRECIS,
 +                                   DEFAULT_QUALITY,
 +                                   FF_DONTCARE,
 +                                   TEXT("Arial"));
 +
 +  /* Topic button font */
 +  hfontTopicButton = CreateFont(-11,0,0,0,FW_BOLD,
 +                              FALSE,FALSE,FALSE,ANSI_CHARSET,
 +                              OUT_DEFAULT_PRECIS,
 +                              CLIP_DEFAULT_PRECIS,
 +                              DEFAULT_QUALITY,
 +                              FF_DONTCARE,
 +                              TEXT("Arial"));
 +
 +  /* Load title bitmap */
 +  if (hTitleBitmap != 0)
 +    hTitleBitmap = LoadBitmap (hInstance, MAKEINTRESOURCE(IDB_TITLEBITMAP));
 +
 +  /* Load topic bitmaps */
 +  hDefaultTopicBitmap = LoadBitmap (hInstance, MAKEINTRESOURCE(IDB_DEFAULTTOPICBITMAP));
 +  for (i=0;i < 10; i++)
 +    {
 +      hTopicBitmap[i] = LoadBitmap (hInstance, MAKEINTRESOURCE(IDB_TOPICBITMAP0+i));
 +    }
 +
 +  ScreenDC = GetWindowDC(hWnd);
 +  hdcMem = CreateCompatibleDC (ScreenDC);
 +  ReleaseDC(hWnd, ScreenDC);
 +
 +  /* load and create buttons */
 +  dwTop = rcLeftPanel.top;
 +  for (i = 0; i < 10; i++)
 +    {
 +      nLength = LoadString(hInstance, IDS_TOPICBUTTON0 + i, szText, 80);
 +      if (nLength > 0)
 +      {
 +        dwHeight = GetButtonHeight(hdcMem,
 +                                   hfontTopicButton,
 +                                   szText,
 +                                   rcLeftPanel.right - rcLeftPanel.left);
 +
 +        hwndTopicButton[i] = CreateWindow(TEXT("BUTTON"),
 +                                          szText,
 +                                          WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | BS_MULTILINE | BS_OWNERDRAW,
 +                                          rcLeftPanel.left,
 +                                          dwTop,
 +                                          rcLeftPanel.right - rcLeftPanel.left,
 +                                          dwHeight,
 +                                          hWnd,
 +                                          (HMENU)IntToPtr(i),
 +                                          hInstance,
 +                                          NULL);
 +        hwndDefaultTopic = hwndTopicButton[i];
 +        nDefaultTopic = i;
 +        SubclassButton(hwndTopicButton[i]);
 +        SendMessage(hwndTopicButton[i], WM_SETFONT, (WPARAM)hfontTopicButton, MAKELPARAM(TRUE,0));
 +      }
 +      else
 +      {
 +        hwndTopicButton[i] = 0;
 +      }
 +
 +      dwTop += dwHeight;
 +    }
 +
 +  /* Create exit button */
 +  nLength = LoadString(hInstance, IDS_CLOSETEXT, szText, 80);
 +  if (nLength > 0)
 +    {
 +      hwndCloseButton = CreateWindow(TEXT("BUTTON"),
 +                                   szText,
 +                                   WS_VISIBLE | WS_CHILD | BS_FLAT,
 +                                   rcRightPanel.right - 10 - 57,
 +                                   rcRightPanel.bottom - 10 - 21,
 +                                   57,
 +                                   21,
 +                                   hWnd,
 +                                   (HMENU)IDC_CLOSEBUTTON,
 +                                   hInstance,
 +                                   NULL);
 +      hwndDefaultTopic = 0;
 +      nDefaultTopic = -1;
 +      SendMessage(hwndCloseButton, WM_SETFONT, (WPARAM)hfontTopicButton, MAKELPARAM(TRUE,0));
 +    }
 +  else
 +    {
 +      hwndCloseButton = 0;
 +    }
 +
 +  /* Create checkbox */
 +  nLength = LoadString(hInstance, IDS_CHECKTEXT,szText,80);
 +  if (nLength > 0)
 +    {
 +      hfontCheckButton = CreateFont(-10,0,0,0,FW_THIN,FALSE,FALSE,FALSE,ANSI_CHARSET,
 +                                  OUT_DEFAULT_PRECIS,
 +                                  CLIP_DEFAULT_PRECIS,
 +                                  DEFAULT_QUALITY,
 +                                  FF_DONTCARE,
 +                                  TEXT("Tahoma"));
 +
 +      hwndCheckButton = CreateWindow(TEXT("BUTTON"),
 +                                   szText,
 +                                   WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
 +                                   rcLeftPanel.left + 8,
 +                                   rcLeftPanel.bottom - 8 - 13,
 +                                   rcLeftPanel.right - rcLeftPanel.left - 16,
 +                                   13,
 +                                   hWnd,
 +                                   (HMENU)IDC_CHECKBUTTON,
 +                                   hInstance,
 +                                   NULL);
 +      SendMessage(hwndCheckButton, WM_SETFONT, (WPARAM)hfontCheckButton, MAKELPARAM(TRUE,0));
 +    }
 +  else
 +    {
 +      hwndCheckButton = 0;
 +      hfontCheckButton = 0;
 +    }
 +
 +  return 0;
 +}
 +
 +
 +static LRESULT
 +OnCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
 +{
 +  UNREFERENCED_PARAMETER(lParam);
 +
 +  if (LOWORD(wParam) == IDC_CLOSEBUTTON)
 +    {
 +      DestroyWindow(hWnd);
 +    }
 +  else if ((LOWORD(wParam) < 10))
 +    {
 +      if (RunApplication(LOWORD(wParam)) == FALSE)
 +      {
 +        DestroyWindow(hWnd);
 +      }
 +    }
 +  return 0;
 +}
 +
 +
 +static VOID
 +PaintBanner(HDC hdc, LPRECT rcPanel)
 +{
 +  HBITMAP hOldBitmap;
 +  HBRUSH hOldBrush;
 +
 +  /* Title bitmap */
 +  hOldBitmap = (HBITMAP) SelectObject(hdcMem, hTitleBitmap);
 +  BitBlt(hdc,
 +       rcPanel->left,
 +       rcPanel->top,
 +       rcPanel->right - rcPanel->left,
 +       rcPanel->bottom - 3,
 +       hdcMem, 0, 0, SRCCOPY);
 +  SelectObject(hdcMem, hOldBitmap);
 +
 +  /* Dark blue line */
 +  hOldBrush = (HBRUSH) SelectObject(hdc, hbrDarkBlue);
 +  PatBlt(hdc,
 +       rcPanel->left,
 +       rcPanel->bottom - 3,
 +       rcPanel->right - rcPanel->left,
 +       3,
 +       PATCOPY);
 +
 +  SelectObject(hdc, hOldBrush);
 +}
 +
 +
 +static LRESULT
 +OnPaint(HWND hWnd, WPARAM wParam, LPARAM lParam)
 +{
 +  HPEN hPen;
 +  HPEN hOldPen;
 +  HDC hdc;
 +  PAINTSTRUCT ps;
 +  HBITMAP hOldBitmap = 0;
 +  HBRUSH hOldBrush;
 +  HFONT hOldFont;
 +  RECT rcTitle, rcDescription;
 +  TCHAR szTopicTitle[80];
-       nLength = LoadString(hInstance, IDS_DEFAULTTOPICDESC, szTopicDesc, 256);
++  TCHAR szTopicDesc[TOPIC_DESC_LENGTH];
 +  int nLength;
 +  BITMAP bmpInfo;
 +  TCHAR version[50];
 +
 +  UNREFERENCED_PARAMETER(wParam);
 +  UNREFERENCED_PARAMETER(lParam);
 +
 +  hdc = BeginPaint(hWnd, &ps);
 +
 +  /* Banner panel */
 +  PaintBanner(hdc, &rcTitlePanel);
 +
 +  /* Left panel */
 +  hOldBrush = (HBRUSH) SelectObject (hdc, hbrLightBlue);
 +  PatBlt(hdc,
 +       rcLeftPanel.left,
 +       rcLeftPanel.top,
 +       rcLeftPanel.right - rcLeftPanel.left,
 +       rcLeftPanel.bottom - rcLeftPanel.top,
 +       PATCOPY);
 +  SelectObject(hdc, hOldBrush);
 +
 +  /* Right panel */
 +  hOldBrush = (HBRUSH) SelectObject (hdc, WHITE_BRUSH);
 +  PatBlt(hdc,
 +       rcRightPanel.left,
 +       rcRightPanel.top,
 +       rcRightPanel.right - rcRightPanel.left,
 +       rcRightPanel.bottom - rcRightPanel.top,
 +       PATCOPY);
 +  SelectObject(hdc, hOldBrush);
 +
 +  /* Draw dark verical line */
 +  hPen = CreatePen(PS_SOLID, 0, DARK_BLUE);
 +  hOldPen = (HPEN) SelectObject(hdc, hPen);
 +  MoveToEx(hdc, rcRightPanel.left, rcRightPanel.top, NULL);
 +  LineTo(hdc, rcRightPanel.left, rcRightPanel.bottom);
 +  SelectObject(hdc, hOldPen);
 +  DeleteObject(hPen);
 +
 +  /* Draw topic bitmap */
 +  if ((nTopic == -1) && (hDefaultTopicBitmap != 0))
 +    {
 +      GetObject(hDefaultTopicBitmap, sizeof(BITMAP), &bmpInfo);
 +      hOldBitmap = (HBITMAP) SelectObject (hdcMem, hDefaultTopicBitmap);
 +      BitBlt(hdc,
 +           rcRightPanel.right - bmpInfo.bmWidth,
 +           rcRightPanel.bottom - bmpInfo.bmHeight,
 +           bmpInfo.bmWidth,
 +           bmpInfo.bmHeight,
 +           hdcMem,
 +           0,
 +           0,
 +           SRCCOPY);
 +    }
 +  else if ((nTopic != -1) && (hTopicBitmap[nTopic] != 0))
 +    {
 +      GetObject(hTopicBitmap[nTopic], sizeof(BITMAP), &bmpInfo);
 +      hOldBitmap = (HBITMAP) SelectObject (hdcMem, hTopicBitmap[nTopic]);
 +      BitBlt(hdc,
 +           rcRightPanel.right - bmpInfo.bmWidth,
 +           rcRightPanel.bottom - bmpInfo.bmHeight,
 +           bmpInfo.bmWidth,
 +           bmpInfo.bmHeight,
 +           hdcMem,
 +           0,
 +           0,
 +           SRCCOPY);
 +    }
 +
 +  if (nTopic == -1)
 +    {
 +      nLength = LoadString(hInstance, IDS_DEFAULTTOPICTITLE, szTopicTitle, 80);
 +    }
 +  else
 +    {
 +      nLength = LoadString(hInstance, IDS_TOPICTITLE0 + nTopic, szTopicTitle, 80);
 +      if (nLength == 0)
 +      nLength = LoadString(hInstance, IDS_DEFAULTTOPICTITLE, szTopicTitle, 80);
 +    }
 +
 +  if (nTopic == -1)
 +    {
-       nLength = LoadString(hInstance, IDS_TOPICDESC0 + nTopic, szTopicDesc, 256);
++      nLength = LoadString(hInstance, IDS_DEFAULTTOPICDESC, szTopicDesc, TOPIC_DESC_LENGTH);
 +    }
 +  else
 +    {
-       nLength = LoadString(hInstance, IDS_DEFAULTTOPICDESC, szTopicDesc, 256);
++      nLength = LoadString(hInstance, IDS_TOPICDESC0 + nTopic, szTopicDesc, TOPIC_DESC_LENGTH);
 +      if (nLength == 0)
++      nLength = LoadString(hInstance, IDS_DEFAULTTOPICDESC, szTopicDesc, TOPIC_DESC_LENGTH);
 +    }
 +
 +  SetBkMode(hdc, TRANSPARENT);
 +
 +  /* Draw version information */
 +  wsprintf(version, TEXT("ReactOS %d.%d.%d"),
 +    KERNEL_VERSION_MAJOR,
 +    KERNEL_VERSION_MINOR,
 +    KERNEL_VERSION_PATCH_LEVEL);
 +
 +  rcTitle.left = rcLeftPanel.left + 8;
 +  rcTitle.right = rcLeftPanel.right - 5;
 +  rcTitle.top = rcLeftPanel.bottom - 40;
 +  rcTitle.bottom = rcLeftPanel.bottom - 5;
 +  hOldFont = (HFONT) SelectObject(hdc, hfontTopicDescription);
 +  DrawText(hdc, version, -1, &rcTitle, DT_BOTTOM | DT_CALCRECT | DT_SINGLELINE);
 +  DrawText(hdc, version, -1, &rcTitle, DT_BOTTOM | DT_SINGLELINE);
 +  SelectObject(hdc, hOldFont);
 +
 +  /* Draw topic title */
 +  rcTitle.left = rcRightPanel.left + 12;
 +  rcTitle.right = rcRightPanel.right - 8;
 +  rcTitle.top = rcRightPanel.top + 8;
 +  rcTitle.bottom = rcTitle.top + 57;
 +  hOldFont = (HFONT) SelectObject(hdc, hfontTopicTitle);
 +  DrawText(hdc, szTopicTitle, -1, &rcTitle, DT_TOP | DT_CALCRECT);
 +
 +  SetTextColor(hdc, DARK_BLUE);
 +  DrawText(hdc, szTopicTitle, -1, &rcTitle, DT_TOP);
 +
 +  /* Draw topic description */
 +  rcDescription.left = rcRightPanel.left + 12;
 +  rcDescription.right = rcRightPanel.right - 8;
 +  rcDescription.top = rcTitle.bottom + 8;
 +  rcDescription.bottom = rcRightPanel.bottom - 20;
 +
 +  SelectObject(hdc, hfontTopicDescription);
 +  SetTextColor(hdc, 0x00000000);
 +  DrawText(hdc, szTopicDesc, -1, &rcDescription, DT_TOP | DT_WORDBREAK);
 +
 +  SetBkMode(hdc, OPAQUE);
 +  SelectObject(hdc, hOldFont);
 +
 +  SelectObject (hdcMem, hOldBrush);
 +  SelectObject (hdcMem, hOldBitmap);
 +
 +  EndPaint(hWnd, &ps);
 +
 +  return 0;
 +}
 +
 +
 +static LRESULT
 +OnDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
 +{
 +  LPDRAWITEMSTRUCT lpDis = (LPDRAWITEMSTRUCT)lParam;
 +  HPEN hPen, hOldPen;
 +  HBRUSH hOldBrush;
 +  TCHAR szText[80];
 +  int iBkMode;
 +
 +  UNREFERENCED_PARAMETER(hWnd);
 +  UNREFERENCED_PARAMETER(wParam);
 +
 +  if (lpDis->hwndItem == hwndCloseButton)
 +    {
 +      DrawFrameControl(lpDis->hDC,
 +                     &lpDis->rcItem,
 +                     DFC_BUTTON,
 +                     DFCS_BUTTONPUSH | DFCS_FLAT);
 +    }
 +  else
 +    {
 +      if (lpDis->CtlID == (ULONG)nTopic)
 +      hOldBrush = (HBRUSH) SelectObject(lpDis->hDC, hbrRightPanel);
 +      else
 +      hOldBrush = (HBRUSH) SelectObject(lpDis->hDC, hbrLightBlue);
 +
 +      PatBlt(lpDis->hDC,
 +           lpDis->rcItem.left,
 +           lpDis->rcItem.top,
 +           lpDis->rcItem.right,
 +           lpDis->rcItem.bottom,
 +           PATCOPY);
 +      SelectObject(lpDis->hDC, hOldBrush);
 +
 +      hPen = CreatePen(PS_SOLID, 0, DARK_BLUE);
 +      hOldPen = (HPEN) SelectObject(lpDis->hDC, hPen);
 +      MoveToEx(lpDis->hDC, lpDis->rcItem.left, lpDis->rcItem.bottom-1, NULL);
 +      LineTo(lpDis->hDC, lpDis->rcItem.right, lpDis->rcItem.bottom-1);
 +      SelectObject(lpDis->hDC, hOldPen);
 +      DeleteObject(hPen);
 +
 +      InflateRect(&lpDis->rcItem, -10, -4);
 +      OffsetRect(&lpDis->rcItem, 0, 1);
 +      GetWindowText(lpDis->hwndItem, szText, 80);
 +      SetTextColor(lpDis->hDC, 0x00000000);
 +      iBkMode = SetBkMode(lpDis->hDC, TRANSPARENT);
 +      DrawText(lpDis->hDC, szText, -1, &lpDis->rcItem, DT_TOP | DT_LEFT | DT_WORDBREAK);
 +      SetBkMode(lpDis->hDC, iBkMode);
 +    }
 +
 +  return 0;
 +}
 +
 +
 +static LRESULT
 +OnMouseMove(HWND hWnd, WPARAM wParam, LPARAM lParam)
 +{
 +  UNREFERENCED_PARAMETER(wParam);
 +  UNREFERENCED_PARAMETER(lParam);
 +
 +  if (nTopic != -1)
 +    {
 +      nTopic = -1;
 +      SetFocus(hWnd);
 +      InvalidateRect(hwndMain, &rcRightPanel, TRUE);
 +    }
 +
 +  return 0;
 +}
 +
 +
 +static LRESULT
 +OnCtlColorStatic(HWND hWnd, WPARAM wParam, LPARAM lParam)
 +{
 +  UNREFERENCED_PARAMETER(hWnd);
 +
 +  if ((HWND)lParam == hwndCheckButton)
 +    {
 +      SetBkColor((HDC)wParam, LIGHT_BLUE);
 +      return((LRESULT)hbrLightBlue);
 +    }
 +
 +  return 0;
 +}
 +
 +
 +static LRESULT
 +OnActivate(HWND hWnd, WPARAM wParam, LPARAM lParam)
 +{
 +  UNREFERENCED_PARAMETER(hWnd);
 +  UNREFERENCED_PARAMETER(wParam);
 +  UNREFERENCED_PARAMETER(lParam);
 +  nTopic = -1;
 +  InvalidateRect(hwndMain, &rcRightPanel, TRUE);
 +
 +  return(0);
 +}
 +
 +
 +static LRESULT
 +OnDestroy(HWND hWnd, WPARAM wParam, LPARAM lParam)
 +{
 +  int i;
 +
 +  UNREFERENCED_PARAMETER(hWnd);
 +  UNREFERENCED_PARAMETER(wParam);
 +  UNREFERENCED_PARAMETER(lParam);
 +
 +  for (i=0;i<10;i++)
 +    {
 +      if (hwndTopicButton[i] != 0)
 +      DestroyWindow(hwndTopicButton[i]);
 +    }
 +
 +  if (hwndCloseButton != 0)
 +    DestroyWindow(hwndCloseButton);
 +
 +  if (hwndCheckButton != 0)
 +    DestroyWindow(hwndCheckButton);
 +
 +  DeleteDC(hdcMem);
 +
 +  /* delete bitmaps */
 +  DeleteObject(hDefaultTopicBitmap);
 +  DeleteObject(hTitleBitmap);
 +  for (i=0;i<10;i++)
 +    {
 +      if (hTopicBitmap[i] != 0)
 +      DeleteObject(hTopicBitmap[i]);
 +    }
 +
 +  DeleteObject(hfontTopicTitle);
 +  DeleteObject(hfontTopicDescription);
 +  DeleteObject(hfontTopicButton);
 +
 +  if (hfontCheckButton != 0)
 +    DeleteObject(hfontCheckButton);
 +
 +  DeleteObject(hbrLightBlue);
 +  DeleteObject(hbrDarkBlue);
 +  DeleteObject(hbrRightPanel);
 +
 +  return 0;
 +}
 +
 +
 +INT_PTR CALLBACK
 +MainWndProc(HWND hWnd,
 +          UINT uMsg,
 +          WPARAM wParam,
 +          LPARAM lParam)
 +{
 +  switch(uMsg)
 +    {
 +      case WM_CREATE:
 +      return(OnCreate(hWnd, wParam, lParam));
 +
 +      case WM_COMMAND:
 +      return(OnCommand(hWnd, wParam, lParam));
 +
 +      case WM_ACTIVATE:
 +      return(OnActivate(hWnd, wParam, lParam));
 +
 +      case WM_PAINT:
 +      return(OnPaint(hWnd, wParam, lParam));
 +
 +      case WM_DRAWITEM:
 +      return(OnDrawItem(hWnd, wParam, lParam));
 +
 +      case WM_CTLCOLORSTATIC:
 +      return(OnCtlColorStatic(hWnd, wParam, lParam));
 +
 +      case WM_MOUSEMOVE:
 +      return(OnMouseMove(hWnd, wParam, lParam));
 +
 +      case WM_DESTROY:
 +      OnDestroy(hWnd, wParam, lParam);
 +      PostQuitMessage(0);
 +      return(0);
 +    }
 +
 +  return(DefWindowProc(hWnd, uMsg, wParam, lParam));
 +}
 +
 +/* EOF */
Simple merge
index 069c834,0000000..f91866c
mode 100644,000000..100644
--- /dev/null
@@@ -1,54 -1,0 +1,25 @@@
- ========================\r
- ReactOS Version 0.3.x\r
- Updated July 28, 2007\r
- ========================\r
++===========================================================================\r
++ReactOS Version 0.3.14\r
++für die Chemnitzer Linux-Tage 2012\r
++===========================================================================\r
 +\r
- 1. What is ReactOS?\r
- -------------------\r
++Willkommen zu ReactOS!\r
 +\r
- ReactOS is an Open Source effort to develop a quality operating system that is\r
- compatible with applications and drivers written for the Microsoft Windows NT\r
- family of operating systems (NT4, 2000, XP, 2003, Vista).\r
++CD-INHALT:\r
 +\r
- Website: http://www.reactos.org/\r
++  * ReactOS Live-System/Installation\r
++  * ReactOS in einer virtuellen QEMU-Maschine\r
++  * ReactOS Build Environment (RosBE)\r
++  * Quellcode\r
 +\r
++Diese CD sollte unter Windows ein AutoRun-Programm starten. Alternativ\r
++können Sie sich den CD-Inhalt über einen Dateibrowser anschauen.\r
++Die Ordnernamen sollten selbsterklärend sein.\r
 +\r
- 2. Relationship with the WINE project\r
- -------------------------------------\r
++Der gesamte Quellcode des Betriebssystems lässt sich unter Einsatz des\r
++ReactOS Build Environments sowohl unter Windows als auch unter\r
++Unix-ähnlichen Betriebssystemen wie Linux kompilieren.\r
 +\r
- ReactOS has always intended to work with the WINE project to share as much\r
- programming effort as possible. This mainly concerns User Mode DLLs and\r
- still happens to a degree today. Other areas of cooperation lie in\r
- applications and testing suites.\r
++Weitere Informationen über ReactOS finden Sie unter www.reactos.org!\r
 +\r
\r
- 3. Future compatibility\r
- -----------------------\r
\r
- The ReactOS project, although currently focused on Windows XP\r
- compatibility, is always keeping an eye toward compatibility with\r
- Windows Vista and future Windows NT releases.\r
\r
\r
- 4. Supporting other System Applications\r
- ---------------------------------------\r
\r
- The Windows NT architecture allows for subsystems, as does the ReactOS\r
- architecture. A subsystem is an implementation of the APIs of another\r
- operating system, allowing ReactOS to run applications from other systems. We\r
- are already looking at subsystems for: Java, OS/2, and DOS and possibly others\r
- in the future.\r
\r
\r
- 5. Tutorials\r
- ------------\r
\r
- Developer and User Tutorials: http://www.reactos.org/wiki/index.php/Main_Page\r
\r
- The tutorials contain more information on the project, compiling and testing\r
- ReactOS - among other topics. Contributors to the project are always welcome.\r
\r
- 6. Author\r
- ---------\r
\r
- This document was written by Jason Filby (jasonfilby@yahoo.com).
++===========================================================================\r