Author: mpiulachs Date: Tue Oct 30 01:52:33 2007 New Revision: 29966
URL: http://svn.reactos.org/svn/reactos?rev=29966&view=rev Log: - Compile screensavers as UNICODE applications + minor fixes (Part 2/2)
Modified: trunk/rosapps/applications/screensavers/cylfrac/cylfrac.c trunk/rosapps/applications/screensavers/cylfrac/cylfrac.rbuild trunk/rosapps/applications/screensavers/matrix/matrix.rbuild trunk/rosapps/applications/screensavers/matrix/screensave.c trunk/rosapps/applications/screensavers/scrnsave/scrnsave.c (contents, props changed) trunk/rosapps/applications/screensavers/scrnsave/scrnsave.rbuild (contents, props changed) trunk/rosapps/applications/screensavers/starfield/screensaver.c (contents, props changed) trunk/rosapps/applications/screensavers/starfield/starfield.rbuild (contents, props changed)
Modified: trunk/rosapps/applications/screensavers/cylfrac/cylfrac.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/c... ============================================================================== --- trunk/rosapps/applications/screensavers/cylfrac/cylfrac.c (original) +++ trunk/rosapps/applications/screensavers/cylfrac/cylfrac.c Tue Oct 30 01:52:33 2007 @@ -236,26 +236,25 @@ } }
-void ParseCommandLine(PSTR szCmdLine, int *chOption, HWND *hwndParent) -{ - int ch; - - if (!strlen(szCmdLine)) - return; - - ch = *szCmdLine++; +// +// Look for any options Windows has passed to us: +// +// -a <hwnd> (set password) +// -s (screensave) +// -p <hwnd> (preview) +// -c <hwnd> (configure) +// +VOID ParseCommandLine(LPWSTR szCmdLine, UCHAR *chOption, HWND *hwndParent) +{ + UCHAR ch = *szCmdLine++;
if(ch == '-' || ch == '/') ch = *szCmdLine++;
if(ch >= 'A' && ch <= 'Z') - ch += 'a' - 'A'; + ch += 'a' - 'A'; //convert to lower case
*chOption = ch; - - if (ch == 's' || ch == 'c') - return; - ch = *szCmdLine++;
if(ch == ':') @@ -266,11 +265,11 @@
if(isdigit(ch)) { - unsigned int i = atoi(szCmdLine - 1); + unsigned int i = _wtoi(szCmdLine - 1); *hwndParent = (HWND)i; } else - *hwndParent = 0; + *hwndParent = NULL; }
void Configure(void) @@ -294,13 +293,13 @@ MB_OK | MB_ICONWARNING); }
-int WINAPI WinMain (HINSTANCE hInst, +int CALLBACK wWinMain (HINSTANCE hInst, HINSTANCE hPrev, - LPSTR lpCmdLine, + LPWSTR lpCmdLine, int iCmdShow) { HWND hwndParent = 0; - int chOption = 0; + UCHAR chOption; MSG Message;
hInstance = hInst;
Modified: trunk/rosapps/applications/screensavers/cylfrac/cylfrac.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/c... ============================================================================== --- trunk/rosapps/applications/screensavers/cylfrac/cylfrac.rbuild (original) +++ trunk/rosapps/applications/screensavers/cylfrac/cylfrac.rbuild Tue Oct 30 01:52:33 2007 @@ -1,9 +1,6 @@ <?xml version="1.0"?> <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> -<module name="cylfrac" type="win32scr" installbase="system32" installname="cylfrac.scr"> - <define name="UNICODE" /> - <define name="_UNICODE" /> - +<module name="cylfrac" type="win32scr" installbase="system32" installname="cylfrac.scr" unicode="true"> <library>kernel32</library> <library>user32</library> <library>gdi32</library>
Modified: trunk/rosapps/applications/screensavers/matrix/matrix.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/m... ============================================================================== --- trunk/rosapps/applications/screensavers/matrix/matrix.rbuild (original) +++ trunk/rosapps/applications/screensavers/matrix/matrix.rbuild Tue Oct 30 01:52:33 2007 @@ -1,13 +1,9 @@ <?xml version="1.0"?> <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> -<module name="matrix" type="win32scr" installbase="system32" installname="matrix2.scr" allowwarnings="true"> +<module name="matrix" type="win32scr" installbase="system32" installname="matrix2.scr" allowwarnings="true" unicode="true"> <include base="matrix">.</include> - <define name="_WIN32_IE">0x0501</define> <define name="_WIN32_WINNT">0x0501</define> - <define name="UNICODE" /> - <define name="_UNICODE" /> - <library>kernel32</library> <library>user32</library> <library>gdi32</library>
Modified: trunk/rosapps/applications/screensavers/matrix/screensave.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/m... ============================================================================== --- trunk/rosapps/applications/screensavers/matrix/screensave.c (original) +++ trunk/rosapps/applications/screensavers/matrix/screensave.c Tue Oct 30 01:52:33 2007 @@ -100,7 +100,7 @@ // -p <hwnd> (preview) // -c <hwnd> (configure) // -VOID ParseCommandLine(LPSTR szCmdLine, UCHAR *chOption, HWND *hwndParent) +VOID ParseCommandLine(LPWSTR szCmdLine, UCHAR *chOption, HWND *hwndParent) { UCHAR ch = *szCmdLine++;
@@ -121,7 +121,7 @@
if(isdigit(ch)) { - unsigned int i = atoi(szCmdLine - 1); + unsigned int i = _wtoi(szCmdLine - 1); *hwndParent = (HWND)i; } else @@ -131,7 +131,7 @@ // // Entrypoint for screen-saver: it's just a normal win32 app! // -int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int iCmdShow) +int CALLBACK wWinMain (HINSTANCE hInst, HINSTANCE hPrev, LPWSTR lpCmdLine, int iCmdShow) { HWND hwndParent; UCHAR chOption;
Modified: trunk/rosapps/applications/screensavers/scrnsave/scrnsave.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/scrnsave/scrnsave.c (original) +++ trunk/rosapps/applications/screensavers/scrnsave/scrnsave.c Tue Oct 30 01:52:33 2007 @@ -1,215 +1,215 @@ -/* - * Copyright 2003 J Brown - * Copyright 2006 Eric Kohl - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include <windows.h> -#include <tchar.h> -#include "resource.h" - -#define APPNAME _T("Scrnsave") - - -HINSTANCE hInstance; - -BOOL fullscreen = FALSE; - - -LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static POINT ptLast; - static POINT ptCursor; - static BOOL fFirstTime = TRUE; - - switch (msg) - { - case WM_DESTROY: - 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; - } - - return DefWindowProc(hwnd, msg, wParam, lParam); -} - -void InitSaver(HWND hwndParent) -{ - 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; - } -} - -void ParseCommandLine(PSTR szCmdLine, int *chOption, HWND *hwndParent) -{ - int ch = *szCmdLine++; - - if(ch == '-' || ch == '/') - ch = *szCmdLine++; - - if(ch >= 'A' && ch <= 'Z') - ch += 'a' - 'A'; - - *chOption = ch; - ch = *szCmdLine++; - - if(ch == ':') - ch = *szCmdLine++; - - while(ch == ' ' || ch == '\t') - ch = *szCmdLine++; - - if(isdigit(ch)) - { - unsigned int i = atoi(szCmdLine - 1); - *hwndParent = (HWND)i; - } - else - *hwndParent = 0; -} - -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 WINAPI WinMain (HINSTANCE hInst, - HINSTANCE hPrev, - LPSTR lpCmdLine, - int iCmdShow) -{ - HWND hwndParent; - UINT nPreviousState; - int 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; -} +/* + * Copyright 2003 J Brown + * Copyright 2006 Eric Kohl + * + * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <windows.h> +#include <tchar.h> +#include "resource.h" + +#define APPNAME _T("Scrnsave") + + +HINSTANCE hInstance; + +BOOL fullscreen = FALSE; + + +LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + static POINT ptLast; + static POINT ptCursor; + static BOOL fFirstTime = TRUE; + + switch (msg) + { + case WM_DESTROY: + 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; + } + + return DefWindowProc(hwnd, msg, wParam, lParam); +} + +void InitSaver(HWND hwndParent) +{ + 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; + } +} + +VOID ParseCommandLine(LPWSTR szCmdLine, UCHAR *chOption, HWND *hwndParent) +{ + UCHAR ch = *szCmdLine++; + + if(ch == '-' || ch == '/') + ch = *szCmdLine++; + + if(ch >= 'A' && ch <= 'Z') + ch += 'a' - 'A'; //convert to lower case + + *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; +} + +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; +}
Propchange: trunk/rosapps/applications/screensavers/scrnsave/scrnsave.c ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/rosapps/applications/screensavers/scrnsave/scrnsave.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/scrnsave/scrnsave.rbuild (original) +++ trunk/rosapps/applications/screensavers/scrnsave/scrnsave.rbuild Tue Oct 30 01:52:33 2007 @@ -1,16 +1,13 @@ -<?xml version="1.0"?> -<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> -<module name="scrnsave" type="win32scr" installbase="system32" installname="scrnsave.scr"> - <define name="UNICODE" /> - <define name="_UNICODE" /> - - <library>kernel32</library> - <library>user32</library> - <library>gdi32</library> - <library>opengl32</library> - <library>glu32</library> - <library>winmm</library> - - <file>scrnsave.c</file> - <file>scrnsave.rc</file> -</module> +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> +<module name="scrnsave" type="win32scr" installbase="system32" installname="scrnsave.scr" unicode="true"> + <library>kernel32</library> + <library>user32</library> + <library>gdi32</library> + <library>opengl32</library> + <library>glu32</library> + <library>winmm</library> + + <file>scrnsave.c</file> + <file>scrnsave.rc</file> +</module>
Propchange: trunk/rosapps/applications/screensavers/scrnsave/scrnsave.rbuild ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/rosapps/applications/screensavers/starfield/screensaver.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/starfield/screensaver.c (original) +++ trunk/rosapps/applications/screensavers/starfield/screensaver.c Tue Oct 30 01:52:33 2007 @@ -1,377 +1,385 @@ -/* - * Copyright 2003 J Brown - * Copyright 2006 Eric Kohl - * Copyright 2007 Marc Piulachs (marc.piulachs@codexchange.net) - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include <windows.h> -#include <tchar.h> -#include "resource.h" - -#define RANDOM( min, max ) ((rand() % (int)(((max)+1) - (min))) + (min)) - -#define MAX_LOADSTRING 100 -#define MAX_STARS 1000 - -#define APPNAME _T("Starfield") -#define APP_TIMER 1 -#define APP_TIMER_INTERVAL 20 - -#define MAX_STARS 1000 - -// Details of each individual star -typedef struct star -{ - int m_nXPos, m_nYPos, m_nZPos; - int m_nOldX, m_nOldY; -} STAR; - -HINSTANCE hInstance; -BOOL fullscreen = FALSE; - -STAR *stars; - -int m_nTotStars; -int m_nCenterX, m_nCenterY; - -void DrawStarField (HDC pDC) -{ - int nX, nY; - int i; - for (i = 0; i < m_nTotStars; i++) - { - // Clear last position of this star - SetPixel ( - pDC, - stars[i].m_nOldX, - stars[i].m_nOldY, - RGB (0, 0, 0)); - - nX = (int)((((long)stars[i].m_nXPos << 7) / (long)stars[i].m_nZPos) + m_nCenterX); - nY = (int)((((long)stars[i].m_nYPos << 7) / (long)stars[i].m_nZPos) + m_nCenterY); - - // Draw star - SetPixel ( - pDC, - nX, - nY, - RGB (255, 255, 255)); - - // Remember current position for clearing later - stars[i].m_nOldX = nX; - stars[i].m_nOldY = nY; - } -} - -BOOL SetUpStars (int nNumStars) -{ - int i; - if (nNumStars > MAX_STARS) - { - MessageBox (0, - _T("Too many stars! Aborting!"), - _T("Error"), - MB_OK | MB_ICONWARNING); - return FALSE; - } - - if (stars) - free (stars); - - m_nTotStars = nNumStars; - - stars = (STAR*)malloc(nNumStars * sizeof(STAR)); - - if (!stars) - { - MessageBox (0, - _T("Unable to allocate memory! Aborting!"), - _T("Error"), - MB_OK | MB_ICONWARNING); - return FALSE; - } - - for (i = 0; i < m_nTotStars; i++) - { - do - { - stars[i].m_nXPos = RANDOM (-320, 320); - stars[i].m_nYPos = RANDOM (-200, 200); - stars[i].m_nZPos = i+1; - stars[i].m_nOldX = -1; - stars[i].m_nOldY = -1; - } while ((stars[i].m_nXPos == 0) || (stars[i].m_nYPos == 0)); - } - - return TRUE; -} - -void MoveStarField (int nXofs, int nYofs, int nZofs) -{ - int i; - for (i = 0; i < m_nTotStars; i++) - { - stars[i].m_nXPos += nXofs; - stars[i].m_nYPos += nYofs; - stars[i].m_nZPos += nZofs; - - if (stars[i].m_nZPos > m_nTotStars) - stars[i].m_nZPos -= m_nTotStars; - if (stars[i].m_nZPos < 1) - stars[i].m_nZPos += m_nTotStars; - } -} - -void SetDimensions (int nWidth, int nHeight) -{ - m_nCenterX = nWidth / 2; - m_nCenterY = nHeight / 2; -} - -LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static POINT ptLast; - static POINT ptCursor; - static BOOL fFirstTime = TRUE; - static HDC pDC; - - switch (msg) - { - case WM_CREATE : - { - SetTimer ( - hwnd, - APP_TIMER, - APP_TIMER_INTERVAL, - NULL); - } - break; - case WM_PAINT : - { - PAINTSTRUCT PtStr; - HDC pDC = BeginPaint (hwnd, &PtStr); - DrawStarField (pDC); - EndPaint (hwnd, &PtStr); - return (0); - } - break; - case WM_TIMER : - { - if (wParam == APP_TIMER) - { - MoveStarField (0, 0, -3); - pDC = GetDC(hwnd); - DrawStarField (pDC); - ReleaseDC(hwnd, pDC); - } - } - break; - case WM_SIZE : - { - // Change the center point of the starfield - SetDimensions ( - LOWORD(lParam), - HIWORD(lParam)); - } - break; - case WM_DESTROY : - { - KillTimer (hwnd, APP_TIMER); - free(stars); - ShowCursor(TRUE); - PostQuitMessage (0); - return 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; - } - } - - return DefWindowProc(hwnd, msg, wParam, lParam); -} - - -void InitSaver(HWND hwndParent) -{ - 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; - } - - SetUpStars(250); -} - -void ParseCommandLine(PSTR szCmdLine, int *chOption, HWND *hwndParent) -{ - int ch = *szCmdLine++; - - if(ch == '-' || ch == '/') - ch = *szCmdLine++; - - if(ch >= 'A' && ch <= 'Z') - ch += 'a' - 'A'; - - *chOption = ch; - ch = *szCmdLine++; - - if(ch == ':') - ch = *szCmdLine++; - - while(ch == ' ' || ch == '\t') - ch = *szCmdLine++; - - if(isdigit(ch)) - { - unsigned int i = atoi(szCmdLine - 1); - *hwndParent = (HWND)i; - } - else - *hwndParent = 0; -} - -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 WINAPI WinMain (HINSTANCE hInst, - HINSTANCE hPrev, - LPSTR lpCmdLine, - int iCmdShow) -{ - HWND hwndParent; - UINT nPreviousState; - int 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; -} +/* + * Copyright 2003 J Brown + * Copyright 2006 Eric Kohl + * Copyright 2007 Marc Piulachs (marc.piulachs@codexchange.net) + * + * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <windows.h> +#include <tchar.h> +#include "resource.h" + +#define RANDOM( min, max ) ((rand() % (int)(((max)+1) - (min))) + (min)) + +#define MAX_LOADSTRING 100 +#define MAX_STARS 1000 + +#define APPNAME _T("Starfield") +#define APP_TIMER 1 +#define APP_TIMER_INTERVAL 20 + +#define MAX_STARS 1000 + +// Details of each individual star +typedef struct star +{ + int m_nXPos, m_nYPos, m_nZPos; + int m_nOldX, m_nOldY; +} STAR; + +HINSTANCE hInstance; +BOOL fullscreen = FALSE; + +STAR *stars; + +int m_nTotStars; +int m_nCenterX, m_nCenterY; + +void DrawStarField (HDC pDC) +{ + int nX, nY; + int i; + for (i = 0; i < m_nTotStars; i++) + { + // Clear last position of this star + SetPixel ( + pDC, + stars[i].m_nOldX, + stars[i].m_nOldY, + RGB (0, 0, 0)); + + nX = (int)((((long)stars[i].m_nXPos << 7) / (long)stars[i].m_nZPos) + m_nCenterX); + nY = (int)((((long)stars[i].m_nYPos << 7) / (long)stars[i].m_nZPos) + m_nCenterY); + + // Draw star + SetPixel ( + pDC, + nX, + nY, + RGB (255, 255, 255)); + + // Remember current position for clearing later + stars[i].m_nOldX = nX; + stars[i].m_nOldY = nY; + } +} + +BOOL SetUpStars (int nNumStars) +{ + int i; + if (nNumStars > MAX_STARS) + { + MessageBox (0, + _T("Too many stars! Aborting!"), + _T("Error"), + MB_OK | MB_ICONWARNING); + return FALSE; + } + + if (stars) + free (stars); + + m_nTotStars = nNumStars; + + stars = (STAR*)malloc(nNumStars * sizeof(STAR)); + + if (!stars) + { + MessageBox (0, + _T("Unable to allocate memory! Aborting!"), + _T("Error"), + MB_OK | MB_ICONWARNING); + return FALSE; + } + + for (i = 0; i < m_nTotStars; i++) + { + do + { + stars[i].m_nXPos = RANDOM (-320, 320); + stars[i].m_nYPos = RANDOM (-200, 200); + stars[i].m_nZPos = i+1; + stars[i].m_nOldX = -1; + stars[i].m_nOldY = -1; + } while ((stars[i].m_nXPos == 0) || (stars[i].m_nYPos == 0)); + } + + return TRUE; +} + +void MoveStarField (int nXofs, int nYofs, int nZofs) +{ + int i; + for (i = 0; i < m_nTotStars; i++) + { + stars[i].m_nXPos += nXofs; + stars[i].m_nYPos += nYofs; + stars[i].m_nZPos += nZofs; + + if (stars[i].m_nZPos > m_nTotStars) + stars[i].m_nZPos -= m_nTotStars; + if (stars[i].m_nZPos < 1) + stars[i].m_nZPos += m_nTotStars; + } +} + +void SetDimensions (int nWidth, int nHeight) +{ + m_nCenterX = nWidth / 2; + m_nCenterY = nHeight / 2; +} + +LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + static POINT ptLast; + static POINT ptCursor; + static BOOL fFirstTime = TRUE; + static HDC pDC; + + switch (msg) + { + case WM_CREATE : + { + SetTimer ( + hwnd, + APP_TIMER, + APP_TIMER_INTERVAL, + NULL); + } + break; + case WM_PAINT : + { + PAINTSTRUCT PtStr; + HDC pDC = BeginPaint (hwnd, &PtStr); + DrawStarField (pDC); + EndPaint (hwnd, &PtStr); + return (0); + } + break; + case WM_TIMER : + { + if (wParam == APP_TIMER) + { + MoveStarField (0, 0, -3); + pDC = GetDC(hwnd); + DrawStarField (pDC); + ReleaseDC(hwnd, pDC); + } + } + break; + case WM_SIZE : + { + // Change the center point of the starfield + SetDimensions ( + LOWORD(lParam), + HIWORD(lParam)); + } + break; + case WM_DESTROY : + { + KillTimer (hwnd, APP_TIMER); + free(stars); + ShowCursor(TRUE); + PostQuitMessage (0); + return 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; + } + } + + return DefWindowProc(hwnd, msg, wParam, lParam); +} + + +void InitSaver(HWND hwndParent) +{ + 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; + } + + SetUpStars(250); +} + +// +// Look for any options Windows has passed to us: +// +// -a <hwnd> (set password) +// -s (screensave) +// -p <hwnd> (preview) +// -c <hwnd> (configure) +// +VOID ParseCommandLine(LPWSTR szCmdLine, UCHAR *chOption, HWND *hwndParent) +{ + UCHAR ch = *szCmdLine++; + + if(ch == '-' || ch == '/') + ch = *szCmdLine++; + + if(ch >= 'A' && ch <= 'Z') + ch += 'a' - 'A'; //convert to lower case + + *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; +} + +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; +}
Propchange: trunk/rosapps/applications/screensavers/starfield/screensaver.c ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/rosapps/applications/screensavers/starfield/starfield.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/starfield/starfield.rbuild (original) +++ trunk/rosapps/applications/screensavers/starfield/starfield.rbuild Tue Oct 30 01:52:33 2007 @@ -1,15 +1,12 @@ -<?xml version="1.0"?> -<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> -<module name="starfield" type="win32scr" installbase="system32" installname="starfield.scr"> - <define name="UNICODE" /> - <define name="_UNICODE" /> - - <library>kernel32</library> - <library>user32</library> - <library>gdi32</library> - - <metadata description = "Starfield simulation screensaver" /> - - <file>screensaver.c</file> - <file>starfield.rc</file> -</module> +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> +<module name="starfield" type="win32scr" installbase="system32" installname="starfield.scr" unicode="true"> + <library>kernel32</library> + <library>user32</library> + <library>gdi32</library> + + <metadata description = "Starfield simulation screensaver" /> + + <file>screensaver.c</file> + <file>starfield.rc</file> +</module>
Propchange: trunk/rosapps/applications/screensavers/starfield/starfield.rbuild ------------------------------------------------------------------------------ svn:eol-style = native