mirror of
https://github.com/reactos/reactos.git
synced 2025-02-20 15:35:04 +00:00
Cool flying butterflies screen saver. It uses the new scrnsave library. All screen savers *should* be modified to use this library inset of replicating a large amount of code
Original work by Jeff Molofee tutorials (http://nehe.gamedev.net) basically converted from C++ to C and adapted as a windows screensaver svn path=/trunk/; revision=30570
This commit is contained in:
parent
57993ed6d3
commit
be611cca2b
9 changed files with 548 additions and 0 deletions
336
rosapps/applications/screensavers/butterflies/butterflies.c
Normal file
336
rosapps/applications/screensavers/butterflies/butterflies.c
Normal file
|
@ -0,0 +1,336 @@
|
|||
#include <windows.h>
|
||||
#include <scrnsave.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glu.h>
|
||||
#include "resource.h"
|
||||
|
||||
/* missing declare from gl.h */
|
||||
#define GL_BGR_EXT 0x80E0
|
||||
|
||||
HINSTANCE hInstance; // Holds The Instance Of The Application
|
||||
|
||||
GLuint texture[3]; //stores texture objects and display list
|
||||
|
||||
LPCTSTR registryPath = ("Software\\tHaPuTeRProductions\\Lesson38Saver");
|
||||
BOOL dRotate;
|
||||
|
||||
|
||||
struct object // Create A Structure Called Object
|
||||
{
|
||||
int tex; // Integer Used To Select Our Texture
|
||||
float x; // X Position
|
||||
float y; // Y Position
|
||||
float z; // Z Position
|
||||
float yi; // Y Increase Speed (Fall Speed)
|
||||
float spinz; // Z Axis Spin
|
||||
float spinzi; // Z Axis Spin Speed
|
||||
float flap; // Flapping Triangles :)
|
||||
float fi; // Flap Direction (Increase Value)
|
||||
};
|
||||
|
||||
struct object obj[50];
|
||||
//object obj[50]; // Create 50 Objects Using The Object Structure
|
||||
|
||||
void SetDefaults()
|
||||
{
|
||||
dRotate = TRUE;
|
||||
}
|
||||
|
||||
void ReadRegistry(){
|
||||
LONG result;
|
||||
HKEY skey;
|
||||
DWORD valtype, valsize, val;
|
||||
|
||||
SetDefaults();
|
||||
|
||||
result = RegOpenKeyEx(HKEY_CURRENT_USER, registryPath, 0, KEY_READ, &skey);
|
||||
if(result != ERROR_SUCCESS)
|
||||
return;
|
||||
|
||||
valsize=sizeof(val);
|
||||
|
||||
result = RegQueryValueEx(skey, "Rotate", 0, &valtype, (LPBYTE)&val, &valsize);
|
||||
if(result == ERROR_SUCCESS)
|
||||
dRotate = val;
|
||||
RegCloseKey(skey);
|
||||
}
|
||||
|
||||
void WriteRegistry(){
|
||||
LONG result;
|
||||
HKEY skey;
|
||||
DWORD val, disp;
|
||||
|
||||
result = RegCreateKeyEx(HKEY_CURRENT_USER, registryPath, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &skey, &disp);
|
||||
if(result != ERROR_SUCCESS)
|
||||
return;
|
||||
|
||||
val = dRotate;
|
||||
RegSetValueEx(skey, "Rotate", 0, REG_DWORD, (CONST BYTE*)&val, sizeof(val));
|
||||
|
||||
RegCloseKey(skey);
|
||||
}
|
||||
|
||||
void SetObject(int loop) // Sets The Initial Value Of Each Object (Random)
|
||||
{
|
||||
obj[loop].tex=rand()%3; // Texture Can Be One Of 3 Textures
|
||||
obj[loop].x=rand()%34-17.0f; // Random x Value From -17.0f To 17.0f
|
||||
obj[loop].y=18.0f; // Set y Position To 18 (Off Top Of Screen)
|
||||
obj[loop].z=-((rand()%30000/1000.0f)+10.0f); // z Is A Random Value From -10.0f To -40.0f
|
||||
obj[loop].spinzi=(rand()%10000)/5000.0f-1.0f; // spinzi Is A Random Value From -1.0f To 1.0f
|
||||
obj[loop].flap=0.0f; // flap Starts Off At 0.0f;
|
||||
obj[loop].fi=0.05f+(rand()%100)/1000.0f; // fi Is A Random Value From 0.05f To 0.15f
|
||||
obj[loop].yi=0.001f+(rand()%1000)/10000.0f; // yi Is A Random Value From 0.001f To 0.101f
|
||||
}
|
||||
|
||||
void LoadGLTextures() // Creates Textures From Bitmaps In The Resource File
|
||||
{
|
||||
HBITMAP hBMP; // Handle Of The Bitmap
|
||||
BITMAP BMP; // Bitmap Structure
|
||||
int loop;
|
||||
|
||||
// The ID Of The 3 Bitmap Images We Want To Load From The Resource File
|
||||
byte Texture[]={ IDB_BUTTERFLY1, IDB_BUTTERFLY2, IDB_BUTTERFLY3 };
|
||||
|
||||
glGenTextures(sizeof(Texture), &texture[0]); // Generate 3 Textures (sizeof(Texture)=3 ID's)
|
||||
for (loop=0; loop<sizeof(Texture); loop++) // Loop Through All The ID's (Bitmap Images)
|
||||
{
|
||||
hBMP=(HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(Texture[loop]), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
|
||||
if (hBMP) // Does The Bitmap Exist?
|
||||
{ // If So...
|
||||
GetObject(hBMP,sizeof(BMP), &BMP); // Get The Object
|
||||
// hBMP: Handle To Graphics Object
|
||||
// sizeof(BMP): Size Of Buffer For Object Information
|
||||
// Buffer For Object Information
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT,4); // Pixel Storage Mode (Word Alignment / 4 Bytes)
|
||||
glBindTexture(GL_TEXTURE_2D, texture[loop]); // Bind Our Texture
|
||||
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // Linear Filtering
|
||||
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR); // Mipmap Linear Filtering
|
||||
|
||||
// Generate Mipmapped Texture (3 Bytes, Width, Height And Data From The BMP)
|
||||
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, BMP.bmWidth, BMP.bmHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HGLRC InitOGLWindow(HWND hWnd)
|
||||
{
|
||||
HDC hDC = GetDC(hWnd);
|
||||
HGLRC hRC = 0;
|
||||
PIXELFORMATDESCRIPTOR pfd;
|
||||
int nFormat;
|
||||
|
||||
ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
|
||||
|
||||
pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
|
||||
pfd.nVersion = 1;
|
||||
pfd.dwFlags = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER;
|
||||
pfd.cColorBits = 24;
|
||||
pfd.cDepthBits = 24;
|
||||
|
||||
nFormat = ChoosePixelFormat(hDC, &pfd);
|
||||
DescribePixelFormat(hDC, nFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
|
||||
SetPixelFormat(hDC, nFormat, &pfd);
|
||||
|
||||
hRC = wglCreateContext(hDC);
|
||||
wglMakeCurrent(hDC, hRC);
|
||||
|
||||
ReleaseDC(hWnd, hDC);
|
||||
|
||||
return hRC;
|
||||
}
|
||||
|
||||
void InitOpenGL(GLsizei width, GLsizei height)
|
||||
{
|
||||
int loop;
|
||||
|
||||
if (height==0) // Prevent A Divide By Zero By
|
||||
{
|
||||
height=1; // Making Height Equal One
|
||||
}
|
||||
|
||||
glViewport(0,0,width,height); // Reset The Current Viewport
|
||||
|
||||
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
|
||||
glLoadIdentity(); // Reset The Projection Matrix
|
||||
|
||||
// Calculate The Aspect Ratio Of The Window
|
||||
gluPerspective (45.0f, (GLfloat)(width)/(GLfloat)(height),1.0f, 1000.0f);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
|
||||
glLoadIdentity();
|
||||
// Start Of User Initialization
|
||||
LoadGLTextures(); // Load The Textures From Our Resource File
|
||||
|
||||
glClearColor (0.0f, 0.0f, 0.0f, 0.5f); // Black Background
|
||||
glClearDepth (1.0f); // Depth Buffer Setup
|
||||
glDepthFunc (GL_LEQUAL); // The Type Of Depth Testing (Less Or Equal)
|
||||
glDisable(GL_DEPTH_TEST); // Disable Depth Testing
|
||||
glShadeModel (GL_SMOOTH); // Select Smooth Shading
|
||||
glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Set Perspective Calculations To Most Accurate
|
||||
glEnable(GL_TEXTURE_2D); // Enable Texture Mapping
|
||||
glBlendFunc(GL_ONE,GL_SRC_ALPHA); // Set Blending Mode (Cheap / Quick)
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
|
||||
for (loop=0; loop<50; loop++) // Loop To Initialize 50 Objects
|
||||
{
|
||||
SetObject(loop); // Call SetObject To Assign New Random Values
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Display()
|
||||
{
|
||||
int loop;
|
||||
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
|
||||
|
||||
for (loop=0; loop<50; loop++) // Loop Of 50 (Draw 50 Objects)
|
||||
{
|
||||
glLoadIdentity (); // Reset The Modelview Matrix
|
||||
glBindTexture(GL_TEXTURE_2D, texture[obj[loop].tex]); // Bind Our Texture
|
||||
glTranslatef(obj[loop].x,obj[loop].y,obj[loop].z); // Position The Object
|
||||
glRotatef(45.0f,1.0f,0.0f,0.0f); // Rotate On The X-Axis
|
||||
if (dRotate)
|
||||
{
|
||||
glRotatef((obj[loop].spinz),0.0f,0.0f,1.0f); // Spin On The Z-Axis
|
||||
}
|
||||
glBegin(GL_TRIANGLES); // Begin Drawing Triangles
|
||||
// First Triangle _____
|
||||
glTexCoord2f(1.0f,1.0f); glVertex3f( 1.0f, 1.0f, 0.0f); // (2)| / (1)
|
||||
glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f, 1.0f, obj[loop].flap); // | /
|
||||
glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); // (3)|/
|
||||
|
||||
// Second Triangle
|
||||
glTexCoord2f(1.0f,1.0f); glVertex3f( 1.0f, 1.0f, 0.0f); // /|(1)
|
||||
glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); // / |
|
||||
glTexCoord2f(1.0f,0.0f); glVertex3f( 1.0f,-1.0f, obj[loop].flap); // (2)/____|(3)
|
||||
|
||||
glEnd(); // Done Drawing Triangles
|
||||
|
||||
obj[loop].y-=obj[loop].yi; // Move Object Down The Screen
|
||||
obj[loop].spinz+=obj[loop].spinzi; // Increase Z Rotation By spinzi
|
||||
obj[loop].flap+=obj[loop].fi; // Increase flap Value By fi
|
||||
|
||||
if (obj[loop].y<-18.0f) // Is Object Off The Screen?
|
||||
{
|
||||
SetObject(loop); // If So, Reassign New Values
|
||||
}
|
||||
|
||||
if ((obj[loop].flap>1.0f) || (obj[loop].flap<-1.0f)) // Time To Change Flap Direction?
|
||||
{
|
||||
obj[loop].fi=-obj[loop].fi; // Change Direction By Making fi = -fi
|
||||
}
|
||||
}
|
||||
|
||||
Sleep(15); // Create A Short Delay (15 Milliseconds)
|
||||
|
||||
glFlush ();
|
||||
|
||||
}
|
||||
|
||||
BOOL AboutProc(HWND hdlg, UINT msg, WPARAM wpm, LPARAM lpm){
|
||||
/*
|
||||
switch(msg){
|
||||
case WM_CTLCOLORSTATIC:
|
||||
if(HWND(lpm) == GetDlgItem(hdlg, WEBPAGE1))
|
||||
{
|
||||
SetTextColor(HDC(wpm), RGB(0,0,255));
|
||||
SetBkColor(HDC(wpm), COLORREF(GetSysColor(COLOR_3DFACE)));
|
||||
return(int(GetSysColorBrush(COLOR_3DFACE)));
|
||||
}
|
||||
if(HWND(lpm) == GetDlgItem(hdlg, WEBPAGE2))
|
||||
{
|
||||
SetTextColor(HDC(wpm), RGB(0,0,255));
|
||||
SetBkColor(HDC(wpm), COLORREF(GetSysColor(COLOR_3DFACE)));
|
||||
return(int(GetSysColorBrush(COLOR_3DFACE)));
|
||||
}
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wpm)){
|
||||
case IDOK:
|
||||
EndDialog(hdlg, LOWORD(wpm));
|
||||
break;
|
||||
case WEBPAGE1:
|
||||
ShellExecute(NULL, "open", "http://nehe.gamedev.net", NULL, NULL, SW_SHOWNORMAL);
|
||||
break;
|
||||
case WEBPAGE2:
|
||||
ShellExecute(NULL, "open", "http://www.thaputer.com", NULL, NULL, SW_SHOWNORMAL);
|
||||
break;
|
||||
}
|
||||
}*/
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT message,
|
||||
WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
static HGLRC hRC;
|
||||
static DWORD timer = 1;
|
||||
HDC hDC;
|
||||
RECT WindowRect;
|
||||
int width;
|
||||
int height;
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
ReadRegistry();
|
||||
hRC = InitOGLWindow(hWnd);
|
||||
GetClientRect (hWnd, &WindowRect);
|
||||
width = WindowRect.right - WindowRect.left;
|
||||
height = WindowRect.bottom - WindowRect.top;
|
||||
InitOpenGL(width,height);
|
||||
SetTimer(hWnd, timer, 5, NULL);
|
||||
break;
|
||||
case WM_TIMER:
|
||||
hDC = GetDC(hWnd);
|
||||
Display();
|
||||
SwapBuffers(hDC);
|
||||
ReleaseDC(hWnd, hDC);
|
||||
break;
|
||||
case WM_DESTROY:
|
||||
wglMakeCurrent(NULL, NULL);
|
||||
wglDeleteContext(hRC);
|
||||
break;
|
||||
}
|
||||
|
||||
return DefScreenSaverProc(hWnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT message,
|
||||
WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
ReadRegistry();
|
||||
CheckDlgButton(hDlg, ROTATE, dRotate);
|
||||
return TRUE;
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDOK:
|
||||
dRotate = (IsDlgButtonChecked(hDlg, ROTATE) == BST_CHECKED);
|
||||
WriteRegistry();
|
||||
EndDialog(hDlg, TRUE);
|
||||
return TRUE;
|
||||
case IDCANCEL:
|
||||
EndDialog(hDlg, TRUE);
|
||||
break;
|
||||
case IDABOUT:
|
||||
//DialogBox(hInstance, MAKEINTRESOURCE(IDD_DLG_ABOUT), hDlg, DLGPROC(AboutProc));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
NAME LESSON38SAVER.SCR
|
||||
|
||||
DESCRIPTION 'Lesson38Saver screen saver'
|
||||
|
||||
HEAPSIZE 1024
|
||||
STACKSIZE 4096
|
||||
|
||||
EXPORTS
|
||||
ScreenSaverProc
|
||||
ScreenSaverConfigureDialog
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
|
||||
<module name="butterflies" type="win32scr" installbase="system32" installname="butterflies.scr" allowwarnings="true">
|
||||
<importlibrary definition="butterflies.def" />
|
||||
<include base="butterflies">.</include>
|
||||
<library>scrnsavelib</library>
|
||||
<library>kernel32</library>
|
||||
<library>user32</library>
|
||||
<library>gdi32</library>
|
||||
<library>opengl32</library>
|
||||
<library>glu32</library>
|
||||
<library>advapi32</library>
|
||||
|
||||
<metadata description = "Butterflies screensaver" />
|
||||
|
||||
<file>butterflies.c</file>
|
||||
<file>butterflies.rc</file>
|
||||
</module>
|
13
rosapps/applications/screensavers/butterflies/butterflies.rc
Normal file
13
rosapps/applications/screensavers/butterflies/butterflies.rc
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include <windows.h>
|
||||
#include "resource.h"
|
||||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
#define REACTOS_VERSION_DLL
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "Butterflies ScreenSaver\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "butterflies\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "butterflies.scr\0"
|
||||
|
||||
#include <reactos/version.rc>
|
||||
|
||||
#include "lang/en-US.rc"
|
144
rosapps/applications/screensavers/butterflies/lang/en-US.rc
Normal file
144
rosapps/applications/screensavers/butterflies/lang/en-US.rc
Normal file
|
@ -0,0 +1,144 @@
|
|||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_DLG_SCREEN DIALOG DISCARDABLE 0, 0, 172, 57
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Butterflies Screen Saver Settings"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,7,35,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,61,35,50,14
|
||||
CONTROL "Rotate Butterflies",ROTATE,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,56,15,70,8
|
||||
PUSHBUTTON "About",IDABOUT,115,35,50,14
|
||||
END
|
||||
|
||||
IDD_DLG_ABOUT DIALOG DISCARDABLE 0, 0, 149, 79
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About "
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,48,58,56,14
|
||||
CTEXT "Lesson38Saver",IDC_STATIC,7,7,135,9
|
||||
CTEXT "Demo by: NeHe ",IDC_STATIC,7,20,135,8
|
||||
CTEXT "http://nehe.gamedev.net",WEBPAGE1,7,29,135,8,SS_NOTIFY |
|
||||
NOT WS_GROUP
|
||||
CTEXT "ScreenSaver by: tHaPuTeR",IDC_STATIC,7,38,135,8,NOT
|
||||
WS_GROUP
|
||||
CTEXT "http://www.thaputer.com",WEBPAGE2,7,47,135,8,SS_NOTIFY |
|
||||
NOT WS_GROUP
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_DLG_SCREEN, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 165
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 50
|
||||
END
|
||||
|
||||
IDD_DLG_ABOUT, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 142
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 72
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
IDB_BUTTERFLY1 BITMAP DISCARDABLE "res/butterfly1.bmp"
|
||||
IDB_BUTTERFLY2 BITMAP DISCARDABLE "res/butterfly2.bmp"
|
||||
IDB_BUTTERFLY3 BITMAP DISCARDABLE "res/butterfly3.bmp"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_STR_DESCRIP "Lesson38Saver"
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
BIN
rosapps/applications/screensavers/butterflies/res/butterfly1.bmp
Normal file
BIN
rosapps/applications/screensavers/butterflies/res/butterfly1.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
BIN
rosapps/applications/screensavers/butterflies/res/butterfly2.bmp
Normal file
BIN
rosapps/applications/screensavers/butterflies/res/butterfly2.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
BIN
rosapps/applications/screensavers/butterflies/res/butterfly3.bmp
Normal file
BIN
rosapps/applications/screensavers/butterflies/res/butterfly3.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
27
rosapps/applications/screensavers/butterflies/resource.h
Normal file
27
rosapps/applications/screensavers/butterflies/resource.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by Lesson38Saver.rc
|
||||
//
|
||||
#define IDS_STR_DESCRIP 1
|
||||
#define IDABOUT 3
|
||||
#define IDI_ICON_SCREEN 100
|
||||
#define IDB_BUTTERFLY1 103
|
||||
#define IDB_BUTTERFLY2 104
|
||||
#define IDB_BUTTERFLY3 105
|
||||
#define IDI_ICON 106
|
||||
#define IDD_DLG_ABOUT 107
|
||||
#define ROTATE 1000
|
||||
#define WEBPAGE1 1001
|
||||
#define WEBPAGE2 1002
|
||||
#define IDD_DLG_SCREEN 2003
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 108
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1003
|
||||
#define _APS_NEXT_SYMED_VALUE 106
|
||||
#endif
|
||||
#endif
|
Loading…
Reference in a new issue