ReactOS  0.4.13-dev-242-g611e6d7
circles.c
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Marc Piulachs (marc.piulachs@codexchange.net)
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
17  */
18 
19 #include <windows.h>
20 #include <scrnsave.h>
21 #include <tchar.h>
22 #include "resource.h"
23 
24 #define RANDOM_COLOR (rand () % 256)
25 
26 #define APPNAME _T("Circles")
27 #define APP_TIMER 1
28 #define APP_TIMER_INTERVAL 100
29 #define MAX_CIRCLES 50
30 
32 int width, x, y;
33 
35 {
36  HDC hdc;
37  RECT rect;
38  HBRUSH hbrush, hbrushOld;
39 
40  switch (iMsg)
41  {
42  case WM_CREATE:
44  break;
45 
46  case WM_DESTROY:
48  PostQuitMessage (0);
49  return 0;
50 
51  case WM_TIMER:
52  hdc = GetDC (hwnd);
55  hbrushOld = SelectObject (hdc, hbrush);
56 
57  x = rand () % rect.right;
58  y = rand () % rect.bottom;
59 
60  /* the circle will be 10% of total screen */
61  width = rect.right / 10;
62  if (rect.bottom / 10 < width)
63  width = rect.bottom / 10;
64 
65  /* Draw circle on screen */
66  Ellipse (
67  hdc,
68  x,
69  y,
70  x + width,
71  y + width);
72 
73  //Track the number of painted circles on scren
74  circlesCount++;
76  {
78  circlesCount = 0;
79  }
80 
81  SelectObject (hdc, hbrushOld);
83  ReleaseDC (hwnd, hdc);
84 
85  return 0;
86  }
87 
88  return DefScreenSaverProc (hwnd, iMsg, wparam, lparam);
89 }
90 
91 
93 {
94  return FALSE;
95 }
96 
97 // This function is only called one time before opening the configuration dialog.
98 // Use it to show a message that no configuration is necesssary and return FALSE to indicate that no configuration dialog shall be opened.
100 {
101  TCHAR szMessage[256];
102  TCHAR szTitle[25];
103 
104  LoadString(hInst, IDS_TEXT, szMessage, sizeof(szMessage) / sizeof(TCHAR));
105  LoadString(hInst, IDS_DESCRIPTION, szTitle, sizeof(szTitle) / sizeof(TCHAR));
106 
108 
109  return FALSE;
110 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
int width
Definition: circles.c:32
GLint GLint GLsizei width
Definition: gl.h:1546
#define TRUE
Definition: types.h:120
static HBRUSH hbrush
HDC WINAPI GetDC(_In_opt_ HWND)
#define APP_TIMER
Definition: circles.c:27
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
Definition: circles.c:99
#define IDS_DESCRIPTION
Definition: resource.h:92
static HDC
Definition: imagelist.c:92
#define RANDOM_COLOR
Definition: circles.c:24
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1497
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
UINT_PTR WPARAM
Definition: windef.h:207
#define MAX_CIRCLES
Definition: circles.c:29
int y
Definition: circles.c:32
int circlesCount
Definition: circles.c:31
& rect
Definition: startmenu.cpp:1413
WPARAM wParam
Definition: combotst.c:138
#define MB_ICONEXCLAMATION
Definition: winuser.h:779
unsigned int BOOL
Definition: ntddk_ex.h:94
_Check_return_ int __cdecl rand(void)
Definition: rand.c:10
static UINT WPARAM LPARAM lparam
Definition: combo.c:716
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
int x
Definition: circles.c:32
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: circles.c:92
smooth NULL
Definition: ftsmooth.c:416
#define APP_TIMER_INTERVAL
Definition: circles.c:28
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define WM_DESTROY
Definition: winuser.h:1591
char TCHAR
Definition: xmlstorage.h:189
#define WM_TIMER
Definition: winuser.h:1718
#define RGB(r, g, b)
Definition: wingdi.h:2918
#define WINAPI
Definition: msvc.h:8
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
TCHAR szTitle[MAX_LOADSTRING]
Definition: magnifier.c:37
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
HDC hdc
Definition: main.c:9
#define MessageBox
Definition: winuser.h:5688
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HINSTANCE hInst
Definition: dxdiag.c:13
BOOL WINAPI Ellipse(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
unsigned int UINT
Definition: ndis.h:50
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
#define MB_OK
Definition: winuser.h:784
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
#define WM_CREATE
Definition: winuser.h:1590
LRESULT WINAPI DefScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: scrnsave.c:95
#define IDS_TEXT
Definition: resource.h:3
LRESULT WINAPI ScreenSaverProc(HWND hwnd, UINT iMsg, WPARAM wparam, LPARAM lparam)
Definition: circles.c:34
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define LoadString
Definition: winuser.h:5685
static UINT WPARAM wparam
Definition: combo.c:716