<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://htyp.org/mw/index.php?action=history&amp;feed=atom&amp;title=User%3AWoozle%2Fkscope</id>
	<title>User:Woozle/kscope - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://htyp.org/mw/index.php?action=history&amp;feed=atom&amp;title=User%3AWoozle%2Fkscope"/>
	<link rel="alternate" type="text/html" href="https://htyp.org/mw/index.php?title=User:Woozle/kscope&amp;action=history"/>
	<updated>2026-07-01T12:48:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://htyp.org/mw/index.php?title=User:Woozle/kscope&amp;diff=23672&amp;oldid=prev</id>
		<title>Woozle: updated syntax highlight tags</title>
		<link rel="alternate" type="text/html" href="https://htyp.org/mw/index.php?title=User:Woozle/kscope&amp;diff=23672&amp;oldid=prev"/>
		<updated>2018-01-23T20:41:22Z</updated>

		<summary type="html">&lt;p&gt;updated syntax highlight tags&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:41, 23 January 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A screenshot and the compiled .exe are available [[htwiki:Kscope.exe|here]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A screenshot and the compiled .exe are available [[htwiki:Kscope.exe|here]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==k3.hpp==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==k3.hpp==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;c&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight lang=&lt;/ins&gt;c&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  FILE	: k3.hpp&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  FILE	: k3.hpp&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot;&gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;void	WriteProfileInt(LPSTR key, LPSTR tag, int i);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;void	WriteProfileInt(LPSTR key, LPSTR tag, int i);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;extern BOOL FAR PASCAL ScreenSaverConfigureDialog(HWND,UINT,WPARAM,LPARAM);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;extern BOOL FAR PASCAL ScreenSaverConfigureDialog(HWND,UINT,WPARAM,LPARAM);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;c&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==k3.cpp==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==k3.cpp==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight lang=&lt;/ins&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  FILE		: k3.cxx -- kaleidascope screen saver&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  FILE		: k3.cxx -- kaleidascope screen saver&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l880&quot;&gt;Line 880:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 880:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	LoadString(hMainInstance, idsNoHelpMemory, szNoHelpMemory, BUFFLEN);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	LoadString(hMainInstance, idsNoHelpMemory, szNoHelpMemory, BUFFLEN);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Woozle</name></author>
	</entry>
	<entry>
		<id>https://htyp.org/mw/index.php?title=User:Woozle/kscope&amp;diff=12451&amp;oldid=prev</id>
		<title>Woozle: Created page with &#039;kscope is a screensaver I wrote for Windows 3.11 using Visual C 1.5, but the compiled .exe works in Win95, Win98, and WinXP as well (though in WinXP I can&#039;t figur…&#039;</title>
		<link rel="alternate" type="text/html" href="https://htyp.org/mw/index.php?title=User:Woozle/kscope&amp;diff=12451&amp;oldid=prev"/>
		<updated>2009-10-22T13:00:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;kscope is a screensaver I wrote for Windows 3.11 using &lt;a href=&quot;/mw/index.php?title=Visual_C&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Visual C (page does not exist)&quot;&gt;Visual C&lt;/a&gt; 1.5, but the compiled .exe works in &lt;a href=&quot;/mw/index.php?title=Win95&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Win95 (page does not exist)&quot;&gt;Win95&lt;/a&gt;, &lt;a href=&quot;/Win98&quot; class=&quot;mw-redirect&quot; title=&quot;Win98&quot;&gt;Win98&lt;/a&gt;, and &lt;a href=&quot;/WinXP&quot; class=&quot;mw-redirect&quot; title=&quot;WinXP&quot;&gt;WinXP&lt;/a&gt; as well (though in WinXP I can&amp;#039;t figur…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;kscope is a screensaver I wrote for Windows 3.11 using [[Visual C]] 1.5, but the compiled .exe works in [[Win95]], [[Win98]], and [[WinXP]] as well (though in WinXP I can&amp;#039;t figure out how to add it to the list of available screensavers).&lt;br /&gt;
&lt;br /&gt;
A screenshot and the compiled .exe are available [[htwiki:Kscope.exe|here]].&lt;br /&gt;
==k3.hpp==&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 FILE	: k3.hpp&lt;br /&gt;
 PURPOSE: header file for k3.cxx&lt;br /&gt;
 HISTORY:&lt;br /&gt;
	NWS	1994aug21 began adapting from BOUNCER.H&lt;br /&gt;
	NWS	1994aug26 adapting unfinished KALEI code to SCTR&lt;br /&gt;
	NWS	1995feb17 trying to figure out why kscope setup dialog won&amp;#039;t load&lt;br /&gt;
	NWS	1995feb18 done; creating line_drawer object to eliminate DC &amp;amp; PEN conflicts&lt;br /&gt;
*/&lt;br /&gt;
                       &lt;br /&gt;
                       &lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#include &amp;lt;scrnsave.h&amp;gt;&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
#include &amp;quot;gtypes.h&amp;quot;&lt;br /&gt;
#include &amp;quot;wgraf.hpp&amp;quot;	/* wpix_rgb */&lt;br /&gt;
#include &amp;quot;k_math.hpp&amp;quot;&lt;br /&gt;
#define MEM_LARGE   &lt;br /&gt;
#define FAR_PTRS                    &lt;br /&gt;
#include &amp;quot;k_model.h&amp;quot;	/* fp_void */&lt;br /&gt;
&lt;br /&gt;
void	GetIniEntries(void);&lt;br /&gt;
void	MoveImage(HWND hWnd);&lt;br /&gt;
void	GetIniSettings(void);&lt;br /&gt;
void	WriteProfileInt(LPSTR key, LPSTR tag, int i);&lt;br /&gt;
extern BOOL FAR PASCAL ScreenSaverConfigureDialog(HWND,UINT,WPARAM,LPARAM);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
==k3.cpp==&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 FILE		: k3.cxx -- kaleidascope screen saver&lt;br /&gt;
 FUNCTIONS	:&lt;br /&gt;
	ScreenSaverProc()&lt;br /&gt;
	RegisterDialogClasses()&lt;br /&gt;
	ScreenSaverConfigureDialog()&lt;br /&gt;
 HISTORY	:&lt;br /&gt;
	NWS	1994aug21 began adapting from BOUNCER.C&lt;br /&gt;
	NWS	1994aug26 adapting unfinished KALEI code to SCTR&lt;br /&gt;
	NWS	1995feb17 migrating sctr back to kaleidascope (it _was_ working...)&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
#include &amp;lt;memory.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define WIN_GRAFIX&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;k3.hpp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/* Global used by SCRNSAVE.LIB. Required for all screen savers. */&lt;br /&gt;
extern &amp;quot;C&amp;quot; char szAppName[40];&lt;br /&gt;
char szAppName[40];&lt;br /&gt;
&lt;br /&gt;
/* Globals specific to this app. */&lt;br /&gt;
char szName[]			= &amp;quot;Kaleidascope&amp;quot;;	/* used by scrnsav library (how?) */&lt;br /&gt;
char szSpeed[]			= &amp;quot;speed&amp;quot;;&lt;br /&gt;
/* &amp;quot;kaleidascope&amp;quot; stuff */&lt;br /&gt;
char szSegs[]			= &amp;quot;#segs&amp;quot;;&lt;br /&gt;
char szLinks[]			= &amp;quot;#links&amp;quot;;&lt;br /&gt;
char szSoftInc[]		= &amp;quot;interval&amp;quot;;&lt;br /&gt;
char szRandSeed[]		= &amp;quot;random seed&amp;quot;;&lt;br /&gt;
char szClear[]			= &amp;quot;clear&amp;quot;;&lt;br /&gt;
char szPenType[]		= &amp;quot;pen type&amp;quot;;&lt;br /&gt;
char szMoveColors[]		= &amp;quot;move colors&amp;quot;;&lt;br /&gt;
char szColorLinks[]		= &amp;quot;color links&amp;quot;;&lt;br /&gt;
// window classes&lt;br /&gt;
char szTestWin[]		= &amp;quot;SSTestWin&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* Externals defined in SCRNSAVE.LIB. Required for all screen savers. */&lt;br /&gt;
HINSTANCE	_cdecl hMainInstance;&lt;br /&gt;
HWND		_cdecl hMainWindow;&lt;br /&gt;
char		_cdecl szIsPassword[22];&lt;br /&gt;
char		_cdecl szIniFile[MAXFILELEN];&lt;br /&gt;
char		_cdecl szScreenSaver[22];&lt;br /&gt;
char		_cdecl szPassword[16];&lt;br /&gt;
char		_cdecl szDifferentPW[BUFFLEN];&lt;br /&gt;
char		_cdecl szChangePW[30];&lt;br /&gt;
char		_cdecl szBadOldPW[BUFFLEN];&lt;br /&gt;
char		_cdecl szHelpFile[MAXFILELEN];&lt;br /&gt;
char		_cdecl szNoHelpMemory[BUFFLEN];&lt;br /&gt;
UINT		_cdecl MyHelpMessage;&lt;br /&gt;
HOOKPROC	_cdecl fpMessageFilter;&lt;br /&gt;
&lt;br /&gt;
WORD wTimer;				// timer id&lt;br /&gt;
&lt;br /&gt;
/* enumerated types used in storage */&lt;br /&gt;
&lt;br /&gt;
enum win_pen_type {		/* Windows API pen type */&lt;br /&gt;
	wpen_solid,&lt;br /&gt;
	wpen_dash,&lt;br /&gt;
	wpen_dot,&lt;br /&gt;
	wpen_dashdot,&lt;br /&gt;
	wpen_dashdotdot,&lt;br /&gt;
	wpen_null,&lt;br /&gt;
	wpen_insideframe&lt;br /&gt;
};&lt;br /&gt;
	&lt;br /&gt;
enum ks_pen_type {		/* kscope pen type */&lt;br /&gt;
	kpen_solid,&lt;br /&gt;
	kpen_dash,&lt;br /&gt;
	kpen_dot,&lt;br /&gt;
	kpen_dashdot,&lt;br /&gt;
	kpen_dashdotdot,&lt;br /&gt;
	kpen_dithered,&lt;br /&gt;
	kpen_callback,&lt;br /&gt;
	kpen_software&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const ks_pen_type highest_api_kpen = kpen_dithered;&lt;br /&gt;
&lt;br /&gt;
/* universal SETUP options */&lt;br /&gt;
WORD nSpeed = 10;&lt;br /&gt;
flag bPassword;&lt;br /&gt;
/* &amp;quot;kaleidascope&amp;quot; options */&lt;br /&gt;
WORD		nSegs		= 1;&lt;br /&gt;
WORD		nLinks		= 200;&lt;br /&gt;
ks_pen_type	nPenType	= kpen_software;&lt;br /&gt;
WORD		nSoftInc	= 24;&lt;br /&gt;
WORD		nRandSeed	= 0;&lt;br /&gt;
flag		bClearScrn	= Yes;&lt;br /&gt;
flag		bMoveColors	= No;&lt;br /&gt;
flag		bColorLinks	= No;&lt;br /&gt;
&lt;br /&gt;
/* common vars &amp;amp; objects */&lt;br /&gt;
	/* Windows stuff */&lt;br /&gt;
gbox	scr_box;&lt;br /&gt;
int		scr_bits;	/* screen bits per pixel */&lt;br /&gt;
flag	scr_pltt;	/* screen supports palettes? */&lt;br /&gt;
	/* other variables */&lt;br /&gt;
flag		active = No;&lt;br /&gt;
gpt			start_pt;&lt;br /&gt;
&lt;br /&gt;
/* &amp;quot;kaleidascope&amp;quot; vars &amp;amp; objects */&lt;br /&gt;
win_pen_type	aPenType;			/* actual Windows pen type */&lt;br /&gt;
byte			penWidth;			/* pen width to use */&lt;br /&gt;
flag			softPen;			/* not using an hPen */&lt;br /&gt;
&lt;br /&gt;
	/* Windows stuff */&lt;br /&gt;
HINSTANCE	hInst;		/* handle to app instance */&lt;br /&gt;
HWND		hMsg;		/* handle to window for timer messages */&lt;br /&gt;
HWND		hDlg = 0;	/* handle to configuration dialog, if active */&lt;br /&gt;
HWND		hPenList;&lt;br /&gt;
HWND		hSoftInc;&lt;br /&gt;
HWND		hLineDemo;	/* handle to line-demo window */&lt;br /&gt;
&lt;br /&gt;
	/* other variables */&lt;br /&gt;
flag		drawing;&lt;br /&gt;
flag		is_saver = Yes;&lt;br /&gt;
gpt			new_pt[3];	&lt;br /&gt;
WORD		link,seg;&lt;br /&gt;
WORD		topSegPoint;	/* top point in seg array */&lt;br /&gt;
WORD		topSegLink;		/* top seg for drawing links */&lt;br /&gt;
wpix_rgb	cur_color;&lt;br /&gt;
gloc		dot_count;&lt;br /&gt;
&lt;br /&gt;
	/* major objects */&lt;br /&gt;
struct seg_def {&lt;br /&gt;
	wpix_rgb	color;&lt;br /&gt;
	gpt			point;&lt;br /&gt;
};&lt;br /&gt;
typedef seg_def asegs[];&lt;br /&gt;
asegs*	axes;				// pointer to axis array&lt;br /&gt;
&lt;br /&gt;
struct line_drawer : public gbox {&lt;br /&gt;
/*====DATA====*/&lt;br /&gt;
	HDC				hDC;		/* handle to device context for drawing */&lt;br /&gt;
	HPEN			hPen;		/* current drawing pen, if any */&lt;br /&gt;
/*====CODE====*/&lt;br /&gt;
	void PenPrep(flag);&lt;br /&gt;
	void GetColor(COLORREF icolor);&lt;br /&gt;
	void DoLine();&lt;br /&gt;
	void CALLBACK LineMethod(int X, int Y);&lt;br /&gt;
};&lt;br /&gt;
typedef line_drawer* p_line_drawer;&lt;br /&gt;
&lt;br /&gt;
HWND		hWnd;			/* handle to window for drawing lines */&lt;br /&gt;
//HDC			call_hDC;		/* FUTURE: thunk the line callback */&lt;br /&gt;
/* also make cur_color a member */&lt;br /&gt;
line_drawer	global_line;	/* global line-drawer for actual kaleidascope */&lt;br /&gt;
&lt;br /&gt;
typedef void	(CALLBACK line_drawer::* LinMeth)(int,int,LPARAM);	/* LinMeth: LineDDAProc() */&lt;br /&gt;
//struct kprocs {&lt;br /&gt;
//	union {&lt;br /&gt;
//		uprocs	up;&lt;br /&gt;
//		LinMeth	lm;&lt;br /&gt;
//	};&lt;br /&gt;
//};&lt;br /&gt;
&lt;br /&gt;
//class ckprocs : public kprocs {&lt;br /&gt;
//	ckprocs() : kprocs()	{}&lt;br /&gt;
//	ckprocs(LinMeth ilm)	{ lm = ilm; }&lt;br /&gt;
//};&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: LineCallback(int,int,proc)&lt;br /&gt;
 MODEL		: LineDDAProc()&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void CALLBACK LineCallback(int X, int Y, LPARAM pclass)&lt;br /&gt;
{&lt;br /&gt;
	((p_line_drawer)pclass) -&amp;gt; LineMethod(X,Y);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
			/*===================================*\&lt;br /&gt;
			 CLASS	: line_drawer&lt;br /&gt;
			 PURPOSE: drawing of styled lines&lt;br /&gt;
			\*===================================*/&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: line_drawer::PenPrep(yes/no)&lt;br /&gt;
 GLOBALS	:&lt;br /&gt;
	nPenType	--&amp;gt; selected pen type from list&lt;br /&gt;
	aPenType	&amp;lt;-- actual Win HPEN to use, if any&lt;br /&gt;
	softPen		&amp;lt;-- Yes = drawing will be done without an HPEN&lt;br /&gt;
 MEMBERS	:&lt;br /&gt;
 	fpCall		&amp;lt;-- pointer to instance of callback function&lt;br /&gt;
	hPen		&amp;lt;-- (cleared) handle to pen, if any&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void line_drawer::PenPrep(flag ienter)&lt;br /&gt;
{&lt;br /&gt;
	if (ienter) {&lt;br /&gt;
//		fpCall = 0;&lt;br /&gt;
//		fpMeth = 0;&lt;br /&gt;
		switch (nPenType) {&lt;br /&gt;
			case kpen_callback: {&lt;br /&gt;
//				FARPROC fpMeth = MakeProcInstance((FARPROC)LineCallback,hInst);&lt;br /&gt;
// old #1&lt;br /&gt;
//				fpCall = MakeThunk(this,fpMeth);&lt;br /&gt;
//				fpCall = line_thunk.MakeThunk(this,ckprocs(LineCallback).up);&lt;br /&gt;
// old #2&lt;br /&gt;
//				fpCall = line_thunk.MakeThunk(this,ckprocs(LineCallback).up); /*TEST*/&lt;br /&gt;
// old #3&lt;br /&gt;
//				fpMeth = MakeProcInstance(ckprocs(LineCallback).up.fp, hInst);&lt;br /&gt;
//				fpCall = line_thunk.MakeThunk(this,cprocs(fpMeth));&lt;br /&gt;
				/* no break -- also do kpen_software processing */&lt;br /&gt;
			}&lt;br /&gt;
			case kpen_software:&lt;br /&gt;
				softPen = Yes;&lt;br /&gt;
				aPenType = wpen_null;	/* just for clarity */&lt;br /&gt;
				break;&lt;br /&gt;
			case kpen_dithered:&lt;br /&gt;
				softPen = No;&lt;br /&gt;
				aPenType = wpen_insideframe;&lt;br /&gt;
				penWidth = 2;&lt;br /&gt;
				break;&lt;br /&gt;
			default:&lt;br /&gt;
				softPen = No;&lt;br /&gt;
				aPenType = (win_pen_type)nPenType;&lt;br /&gt;
				penWidth = 0;&lt;br /&gt;
		}&lt;br /&gt;
		hPen = 0;&lt;br /&gt;
//		hPenOld = 0;&lt;br /&gt;
	} else {&lt;br /&gt;
#ifdef x1995feb18 /* PROBABLY UNNECESSARY */&lt;br /&gt;
		if (hPen) {&lt;br /&gt;
			HPEN hPenOld = SelectObject(hDC, GetStockObject(NULL_PEN));	/* deselect last pen */&lt;br /&gt;
			DeleteObject(hPenOld);					/* destroy the last created pen */&lt;br /&gt;
		}&lt;br /&gt;
#endif&lt;br /&gt;
//		line_thunk.FreeThunk();&lt;br /&gt;
//		if (fpMeth)&lt;br /&gt;
//			FreeProcInstance(fpMeth);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: line_drawer::GetColor()&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void line_drawer::GetColor(COLORREF icolor)&lt;br /&gt;
{&lt;br /&gt;
	cur_color.wc = icolor;&lt;br /&gt;
	if (!softPen) {&lt;br /&gt;
		SetBkColor(hDC,RGB(0,0,0));&lt;br /&gt;
		&lt;br /&gt;
		hPen = CreatePen(aPenType,penWidth,cur_color.wc);&lt;br /&gt;
		HPEN hPenOld = SelectObject(hDC,hPen);&lt;br /&gt;
		DeleteObject(hPenOld);					/* kill the old pen */&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: line_drawer::DoLine&lt;br /&gt;
 ACTION		: draw a single line&lt;br /&gt;
 GLOBALS	:&lt;br /&gt;
 	nPenType	--&amp;gt; selected type of drawing to do&lt;br /&gt;
 MEMBERS	:&lt;br /&gt;
	(gbox)		--&amp;gt; endpoints of line to draw&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void line_drawer::DoLine()&lt;br /&gt;
{&lt;br /&gt;
	switch (nPenType) {&lt;br /&gt;
		case kpen_callback:&lt;br /&gt;
			dot_count = 0;&lt;br /&gt;
//			call_hDC = hDC;		/* TO BE ELIMINATED LATER */&lt;br /&gt;
//			LineDDA(A.X, A.Y, B.X, B.Y, fpCall, this);&lt;br /&gt;
			LineDDA(A.X, A.Y, B.X, B.Y, (FARPROC)LineCallback, (LPARAM)(fp_void)this);&lt;br /&gt;
			break;&lt;br /&gt;
		case kpen_software: {&lt;br /&gt;
			float xdiff = X.Diff();&lt;br /&gt;
			float ydiff = Y.Diff();&lt;br /&gt;
//			float xydiff = (float)fabs(xdiff) + (float)fabs(ydiff);		/* same as callback */&lt;br /&gt;
			float xydiff = (float)sqrt((xdiff*xdiff) + (ydiff*ydiff));&lt;br /&gt;
			if (xydiff) {&lt;br /&gt;
				float xinc = xdiff/xydiff * nSoftInc;&lt;br /&gt;
				float yinc = ydiff/xydiff * nSoftInc;&lt;br /&gt;
				float xloc = X.A;&lt;br /&gt;
				float yloc = Y.A;&lt;br /&gt;
				int idx, count = (int)(xydiff/nSoftInc)+1;&lt;br /&gt;
				for (idx=count; idx--; idx&amp;gt;0) {&lt;br /&gt;
					SetPixel(hDC,(gloc)xloc,(gloc)yloc,cur_color.wc);&lt;br /&gt;
					xloc += xinc;&lt;br /&gt;
					yloc += yinc;&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		default:&lt;br /&gt;
			SetBkMode(hDC,TRANSPARENT);&lt;br /&gt;
			MoveTo(hDC, A.X, A.Y);&lt;br /&gt;
			LineTo(hDC, B.X, B.Y);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: line_drawer::LineMethod(int,int)&lt;br /&gt;
 USAGE		: called by ::LineCallback(int,int,LPRARM)&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void CALLBACK line_drawer::LineMethod(int X, int Y)&lt;br /&gt;
{&lt;br /&gt;
	if (!dot_count) {&lt;br /&gt;
		dot_count = nSoftInc;&lt;br /&gt;
#ifdef _DBG&lt;br /&gt;
		COLORREF acol = SetPixel(hDC,X,Y,cur_color.wc);&lt;br /&gt;
#else		&lt;br /&gt;
		SetPixel(hDC,X,Y,cur_color.wc);&lt;br /&gt;
#endif&lt;br /&gt;
	} else&lt;br /&gt;
		dot_count--;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
			/*===================================*\&lt;br /&gt;
			 SECTION: normal functions&lt;br /&gt;
			\*===================================*/&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: RegisterDialogClasses&lt;br /&gt;
 PURPOSE	: Entry point for registering window classes&lt;br /&gt;
	required by configuration dialog box.&lt;br /&gt;
 INPUT		: hWnd -- Handle to window&lt;br /&gt;
 RETURNS	: nothing&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
BOOL RegisterDialogClasses(HINSTANCE ihInst)&lt;br /&gt;
{&lt;br /&gt;
	WNDCLASS wc;&lt;br /&gt;
&lt;br /&gt;
	hInst = ihInst;&lt;br /&gt;
&lt;br /&gt;
	wc.style			= 0x0;								// Class style(s) (none)&lt;br /&gt;
	wc.lpfnWndProc		= ScreenSaverProc;					// Message handler function&lt;br /&gt;
	wc.cbClsExtra		= 0;								// No per-class extra data.&lt;br /&gt;
	wc.cbWndExtra		= 0;								// No per-window extra data.&lt;br /&gt;
	wc.hInstance		= hInst;							// App that owns the class.&lt;br /&gt;
	wc.hIcon			= LoadIcon(hInst,&amp;quot;ID_MAINICON&amp;quot;);	// icon to use&lt;br /&gt;
	wc.hCursor			= 0;&lt;br /&gt;
	wc.hbrBackground	= 0;								// window must paint background&lt;br /&gt;
	wc.lpszMenuName		= 0;								// Name of menu resource in .RC file.&lt;br /&gt;
	wc.lpszClassName	= szTestWin;						// Name used in call to CreateWindow.&lt;br /&gt;
&lt;br /&gt;
	if (!RegisterClass(&amp;amp;wc))						// register the class&lt;br /&gt;
		return No;										// didn&amp;#039;t work&lt;br /&gt;
	return Yes;&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTIONS	: SetSettings&lt;br /&gt;
 ACTION		: copy the settings from the dialog box to the&lt;br /&gt;
	program variables&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void SetSettings()&lt;br /&gt;
{&lt;br /&gt;
	if (hDlg) {&lt;br /&gt;
		nSpeed		= GetDlgItemInt(hDlg, IDC_SPEED,NULL, No);&lt;br /&gt;
		nSegs		= GetDlgItemInt(hDlg, IDC_NUM_SEGS,NULL, No);&lt;br /&gt;
		nLinks		= GetDlgItemInt(hDlg, IDC_NUM_LINKS,NULL, No);&lt;br /&gt;
		nSoftInc	= GetDlgItemInt(hDlg, IDC_INTERVAL,NULL, No);&lt;br /&gt;
		nPenType	= (ks_pen_type)SendMessage(hPenList,CB_GETCURSEL,0,0);&lt;br /&gt;
	/* nb don&amp;#039;t set random seed from dialog */&lt;br /&gt;
		bClearScrn	= IsDlgButtonChecked(hDlg, IDC_CLEAR_SCRN);&lt;br /&gt;
		bColorLinks	= IsDlgButtonChecked(hDlg, IDC_COLOR_LINKS);&lt;br /&gt;
		bMoveColors	= IsDlgButtonChecked(hDlg, IDC_MOVE_COLORS);&lt;br /&gt;
		bPassword	= IsDlgButtonChecked(hDlg, ID_PASSWORDPROTECTED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	WriteProfileInt(szAppName, szSpeed,		nSpeed);&lt;br /&gt;
	WriteProfileInt(szAppName, szSegs,		nSegs);&lt;br /&gt;
	WriteProfileInt(szAppName, szLinks,		nLinks);&lt;br /&gt;
	WriteProfileInt(szAppName, szSoftInc,	nSoftInc);&lt;br /&gt;
	WriteProfileInt(szAppName, szPenType,	nPenType);&lt;br /&gt;
	WriteProfileInt(szAppName, szRandSeed,	nRandSeed);&lt;br /&gt;
	WriteProfileInt(szAppName, szClear,		bClearScrn);&lt;br /&gt;
	WriteProfileInt(szAppName, szColorLinks,bColorLinks);&lt;br /&gt;
	WriteProfileInt(szAppName, szMoveColors,bMoveColors);&lt;br /&gt;
	WriteProfileInt(szAppName, szIsPassword,bPassword);&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: Prepare(yes/no)&lt;br /&gt;
 ACTION		: start or finish screen saver (e.g. allocate or&lt;br /&gt;
	deallocate memory, etc.)&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void Prepare(flag ienter)&lt;br /&gt;
{&lt;br /&gt;
	if (ienter) {&lt;br /&gt;
		p_void mp;&lt;br /&gt;
		size_t ms;&lt;br /&gt;
&lt;br /&gt;
		topSegPoint = nSegs + 2;				/* top point # in segment array */&lt;br /&gt;
		topSegLink = nSegs + 0;					/* top segment # for drawing links */&lt;br /&gt;
		ms = (topSegPoint+1) * sizeof(seg_def);	/* figure # of bytes to allocate */&lt;br /&gt;
		mp = malloc(ms);						/* allocate them */&lt;br /&gt;
		axes = (asegs*)mp;						/* recast to segment array */&lt;br /&gt;
		memset(mp,0,ms);						/* clear the array */&lt;br /&gt;
		if (bMoveColors) {						/* if colors are persistent...*/&lt;br /&gt;
			seg = nSegs;&lt;br /&gt;
			while (seg &amp;gt; 0) {&lt;br /&gt;
				seg--;&lt;br /&gt;
				(*axes)[seg].color.SetRand();&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		wTimer = SetTimer(hMsg, ID_TIMER, 0, NULL);&lt;br /&gt;
		if (!wTimer) {&lt;br /&gt;
			MessageBox(0,&amp;quot;Couldn&amp;#039;t create timer&amp;quot;,&amp;quot;Error&amp;quot;,MB_ICONEXCLAMATION);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		GetClientRect(hWnd, &amp;amp;scr_box.wr);			/* get window size */&lt;br /&gt;
		global_line.hDC = GetDC(hWnd);				/* get window device context */&lt;br /&gt;
&lt;br /&gt;
		link = 0;				/* go into loop first time */&lt;br /&gt;
		seg = topSegLink;		/* go into loop first time */&lt;br /&gt;
&lt;br /&gt;
		srand(nRandSeed);&lt;br /&gt;
	} else {&lt;br /&gt;
		free(axes);&lt;br /&gt;
	/* Destroy any objects we created */&lt;br /&gt;
		if (wTimer)&lt;br /&gt;
			KillTimer(hMsg, ID_TIMER);&lt;br /&gt;
		if (global_line.hDC)&lt;br /&gt;
			ReleaseDC(hWnd, global_line.hDC);&lt;br /&gt;
		nRandSeed = rand();&lt;br /&gt;
		SetSettings();			/* save new random seed */&lt;br /&gt;
		if (hDlg)&lt;br /&gt;
			SetDlgItemInt(hDlg,IDC_RAND_SEED,nRandSeed,No);&lt;br /&gt;
	}&lt;br /&gt;
	global_line.PenPrep(ienter);&lt;br /&gt;
	active = ienter;&lt;br /&gt;
	drawing = No;&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: DoLink&lt;br /&gt;
 ACTION		: draw a line with appropriate reflections&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void DoLink(gbox end_pt)&lt;br /&gt;
{&lt;br /&gt;
	gpt		scr_ctr	= scr_box.Mid();&lt;br /&gt;
	&lt;br /&gt;
	global_line.A = end_pt.A;&lt;br /&gt;
	global_line.B = end_pt.B;&lt;br /&gt;
&lt;br /&gt;
	global_line.DoLine();	/* X norm, Y norm */&lt;br /&gt;
	global_line.X.Reflect(scr_ctr.X);&lt;br /&gt;
	global_line.DoLine();	/* X refl, Y norm */&lt;br /&gt;
	global_line.Y.Reflect(scr_ctr.Y);&lt;br /&gt;
	global_line.DoLine();	/* X refl, Y refl */&lt;br /&gt;
	global_line.X.Reflect(scr_ctr.X);&lt;br /&gt;
	global_line.DoLine();	/* X norm, Y refl */&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: MoveImage&lt;br /&gt;
 ACTION		: Move image around the screen&lt;br /&gt;
 INPUT		: hWnd -- Handle to window&lt;br /&gt;
 RETURNS	: nothing&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
static void MoveImage() &lt;br /&gt;
{&lt;br /&gt;
	wpix_rgb	color1, color2;	/* for color interpolation if (bColorLinks) */&lt;br /&gt;
	if (active) {&lt;br /&gt;
		for (word idx = 0; idx &amp;lt; nSpeed; idx++) {&lt;br /&gt;
loop:		if (!bMoveColors &amp;amp;&amp;amp; (seg==0)) {&lt;br /&gt;
				seg = topSegLink;&lt;br /&gt;
			} else {&lt;br /&gt;
				seg++;&lt;br /&gt;
				if (seg &amp;gt; topSegLink) {&lt;br /&gt;
					if (link == 0) {&lt;br /&gt;
						link = nLinks;&lt;br /&gt;
&lt;br /&gt;
/* shift points up the array one notch */&lt;br /&gt;
						if (bMoveColors) {&lt;br /&gt;
							for (seg=topSegPoint; seg&amp;gt;0; seg--) {&lt;br /&gt;
								(*axes)[seg].point = (*axes)[seg-1].point;&lt;br /&gt;
							}&lt;br /&gt;
						} else {&lt;br /&gt;
							for (seg=topSegPoint; seg&amp;gt;0; seg--) {&lt;br /&gt;
								(*axes)[seg] = (*axes)[seg-1];&lt;br /&gt;
							}&lt;br /&gt;
							(*axes)[0].color.SetRand();&lt;br /&gt;
						}&lt;br /&gt;
						gpt old_pt = (*axes)[0].point;&lt;br /&gt;
						gpt new_pt;&lt;br /&gt;
						do {&lt;br /&gt;
							new_pt = scr_box.Random();&lt;br /&gt;
						} while (old_pt.xy == new_pt.xy);&lt;br /&gt;
						(*axes)[0].point = new_pt;&lt;br /&gt;
					} else&lt;br /&gt;
						link--;&lt;br /&gt;
					seg = 0;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
/* figure current point triplet */&lt;br /&gt;
			for (int jdx = 2; jdx &amp;gt;= 0; jdx--) {&lt;br /&gt;
				new_pt[jdx] = (*axes)[seg+jdx].point;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if (seg == topSegLink) {&lt;br /&gt;
				color1.wc = 0;&lt;br /&gt;
				color2.wc = 0;&lt;br /&gt;
			} else {&lt;br /&gt;
				color1 = (*axes)[seg].color;&lt;br /&gt;
				color2 = (*axes)[seg+1].color;&lt;br /&gt;
            }&lt;br /&gt;
			if (!bColorLinks) {&lt;br /&gt;
				global_line.GetColor(color1.wc);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			gbox link_line;&lt;br /&gt;
			gbox interbox;&lt;br /&gt;
			if (new_pt[0].xy &amp;amp;&amp;amp; (new_pt[1].xy || !link)) {&lt;br /&gt;
				if (new_pt[1].xy &amp;amp;&amp;amp; (new_pt[2].xy || !link)) {&lt;br /&gt;
&lt;br /&gt;
					float portion = (float)link / (nLinks+1);&lt;br /&gt;
&lt;br /&gt;
					interbox.A = new_pt[0];&lt;br /&gt;
					interbox.B = new_pt[1];&lt;br /&gt;
					link_line.A = interbox.Interp(portion);&lt;br /&gt;
	&lt;br /&gt;
					interbox.A = new_pt[1];&lt;br /&gt;
					interbox.B = new_pt[2];&lt;br /&gt;
					link_line.B = interbox.Interp(portion);&lt;br /&gt;
&lt;br /&gt;
					if (bColorLinks) {&lt;br /&gt;
						if (seg == topSegLink) {&lt;br /&gt;
							global_line.GetColor(0);&lt;br /&gt;
						} else {&lt;br /&gt;
							global_line.GetColor(color1.Interp(portion,color2.wc));&lt;br /&gt;
							drawing = Yes;&lt;br /&gt;
						}&lt;br /&gt;
					} else if (cur_color.wc)&lt;br /&gt;
						drawing = Yes;&lt;br /&gt;
					if (drawing)&lt;br /&gt;
    					DoLink(link_line);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			if (!drawing)		/* do all non-visible processing immediately */&lt;br /&gt;
				goto loop;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: AboutBoxProc()&lt;br /&gt;
 ACTION		: handles About box&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
LONG FAR PASCAL AboutBoxProc(HWND ihWnd, UINT msg, WPARAM wd, LPARAM ld)&lt;br /&gt;
{&lt;br /&gt;
	switch (msg) {&lt;br /&gt;
		case WM_INITDIALOG:&lt;br /&gt;
			hWnd = GetDlgItem(ihWnd,IDC_TESTWIN);&lt;br /&gt;
			hMsg = ihWnd;&lt;br /&gt;
			Prepare(Yes);&lt;br /&gt;
			return Yes;&lt;br /&gt;
		case WM_TIMER:&lt;br /&gt;
			MoveImage();&lt;br /&gt;
            return 0;&lt;br /&gt;
		case WM_COMMAND:&lt;br /&gt;
			switch (wd) {&lt;br /&gt;
				case IDOK:&lt;br /&gt;
					EndDialog(ihWnd,0);&lt;br /&gt;
					return Yes;&lt;br /&gt;
			}&lt;br /&gt;
		case WM_DESTROY:&lt;br /&gt;
			Prepare(No);&lt;br /&gt;
			return 0;&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: GetScreenParams&lt;br /&gt;
 ACTION		: get information about the screen device&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void GetScreenParams(HWND ihWnd)&lt;br /&gt;
{&lt;br /&gt;
	HDC scrn_hDC = GetDC(ihWnd);&lt;br /&gt;
	scr_pltt = (GetDeviceCaps(scrn_hDC,RASTERCAPS) &amp;amp; RC_PALETTE) != 0;&lt;br /&gt;
	scr_bits = GetDeviceCaps(scrn_hDC,BITSPIXEL);&lt;br /&gt;
	ReleaseDC(ihWnd,scrn_hDC);&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: DoLineTest()&lt;br /&gt;
 ACTION		: demonstrate the selected pen type at various angles&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void DoLineTest()&lt;br /&gt;
{&lt;br /&gt;
	PAINTSTRUCT far ps;&lt;br /&gt;
	HDC hDemoDC = BeginPaint(hLineDemo,&amp;amp;ps);&lt;br /&gt;
	assert(hDemoDC);&lt;br /&gt;
&lt;br /&gt;
	gbox		demo_box;&lt;br /&gt;
	line_drawer local_line;&lt;br /&gt;
&lt;br /&gt;
	local_line.hDC = hDemoDC;	/* set line&amp;#039;s DC to line demo area */&lt;br /&gt;
	local_line.PenPrep(Yes);&lt;br /&gt;
	local_line.GetColor(RGB(0x0ff, 0x0ff, 0x0ff));&lt;br /&gt;
&lt;br /&gt;
	GetClientRect(hLineDemo, &amp;amp;demo_box.wr);		/* get window size */&lt;br /&gt;
	FillRect(hDemoDC,&amp;amp;demo_box.wr,(HBRUSH)GetStockObject(BLACK_BRUSH));&lt;br /&gt;
&lt;br /&gt;
	gloc line_siz;&lt;br /&gt;
	if (demo_box.X.Size() &amp;lt; demo_box.Y.Size())&lt;br /&gt;
		line_siz = demo_box.X.Size();&lt;br /&gt;
	else&lt;br /&gt;
		line_siz = demo_box.Y.Size();&lt;br /&gt;
&lt;br /&gt;
	line_siz /= 2;&lt;br /&gt;
	local_line.A = demo_box.Mid();&lt;br /&gt;
&lt;br /&gt;
	float idx_dec = ((float)_PI) * 0.05f;&lt;br /&gt;
	for (float idx = (float)_PI * 2.0f; idx &amp;gt; 0.0; idx-=idx_dec) {&lt;br /&gt;
		local_line.Y.FitB((gloc)(sin(idx) * (float)line_siz));&lt;br /&gt;
		local_line.X.FitB((gloc)(cos(idx) * (float)line_siz));&lt;br /&gt;
		local_line.DoLine();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//	ValidateRect(hLineDemo,0);	/* don&amp;#039;t repaint over line demo */&lt;br /&gt;
&lt;br /&gt;
	local_line.PenPrep(No);&lt;br /&gt;
	EndPaint(hDlg,&amp;amp;ps);			// finished with painting&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: ScreenSaverConfigureDialog&lt;br /&gt;
 MODEL		: DialogProc()&lt;br /&gt;
 PURPOSE	: Dialog box function for configuration dialog.&lt;br /&gt;
 INPUT		: hWnd -- Handle to window&lt;br /&gt;
 RETURNS	: nothing&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
BOOL FAR PASCAL __export ScreenSaverConfigureDialog(HWND ihDlg, UINT msg, WPARAM wd, LPARAM ld)&lt;br /&gt;
{&lt;br /&gt;
	static	HWND hIDOK;&lt;br /&gt;
	static	HWND hSetPassword;&lt;br /&gt;
			HWND hTest;&lt;br /&gt;
&lt;br /&gt;
	switch (msg) {&lt;br /&gt;
		case WM_INITDIALOG:&lt;br /&gt;
			hDlg = ihDlg;&lt;br /&gt;
		&lt;br /&gt;
			hPenList = GetDlgItem(hDlg,IDC_PEN_TYPE);	/* get handle for pen-type list */&lt;br /&gt;
			hSoftInc = GetDlgItem(hDlg,IDC_INTERVAL);&lt;br /&gt;
			hLineDemo = GetDlgItem(hDlg,IDC_LINE_TEST);	/* get line-demo control */&lt;br /&gt;
&lt;br /&gt;
			GetIniEntries();&lt;br /&gt;
			GetIniSettings();&lt;br /&gt;
			SetDlgItemInt		(hDlg,IDC_SPEED,nSpeed,No);&lt;br /&gt;
			SetDlgItemInt		(hDlg,IDC_NUM_SEGS,nSegs,No);&lt;br /&gt;
			SetDlgItemInt		(hDlg,IDC_NUM_LINKS,nLinks,No); &lt;br /&gt;
			SetDlgItemInt		(hDlg,IDC_RAND_SEED,nRandSeed,No);&lt;br /&gt;
			SetDlgItemInt		(hDlg,IDC_INTERVAL,nSoftInc,No);&lt;br /&gt;
&lt;br /&gt;
			SendMessage(hPenList,CB_ADDSTRING,0,(LPARAM)(char far*)&amp;quot;Solid&amp;quot;);&lt;br /&gt;
			SendMessage(hPenList,CB_ADDSTRING,0,(LPARAM)(char far*)&amp;quot;Dash&amp;quot;);&lt;br /&gt;
			SendMessage(hPenList,CB_ADDSTRING,0,(LPARAM)(char far*)&amp;quot;Dot&amp;quot;);&lt;br /&gt;
			SendMessage(hPenList,CB_ADDSTRING,0,(LPARAM)(char far*)&amp;quot;Dash-dot&amp;quot;);&lt;br /&gt;
			SendMessage(hPenList,CB_ADDSTRING,0,(LPARAM)(char far*)&amp;quot;Dash-dot-dot&amp;quot;);&lt;br /&gt;
			SendMessage(hPenList,CB_ADDSTRING,0,(LPARAM)(char far*)&amp;quot;Dithered&amp;quot;);&lt;br /&gt;
			SendMessage(hPenList,CB_ADDSTRING,0,(LPARAM)(char far*)&amp;quot;Callback&amp;quot;);&lt;br /&gt;
			SendMessage(hPenList,CB_ADDSTRING,0,(LPARAM)(char far*)&amp;quot;Software&amp;quot;);&lt;br /&gt;
			SendMessage(hPenList,CB_SETCURSEL,nPenType,0);&lt;br /&gt;
			&lt;br /&gt;
			CheckDlgButton		(hDlg,IDC_CLEAR_SCRN,bClearScrn);&lt;br /&gt;
			CheckDlgButton		(hDlg,IDC_COLOR_LINKS,bColorLinks);&lt;br /&gt;
			CheckDlgButton		(hDlg,IDC_MOVE_COLORS,bMoveColors);&lt;br /&gt;
&lt;br /&gt;
			SendDlgItemMessage	(hDlg,ID_PASSWORDPROTECTED,	BM_SETCHECK, bPassword, NULL);&lt;br /&gt;
			hSetPassword = GetDlgItem(hDlg, ID_SETPASSWORD);&lt;br /&gt;
			EnableWindow(hSetPassword, bPassword);&lt;br /&gt;
&lt;br /&gt;
			hIDOK = GetDlgItem(hDlg, IDOK);&lt;br /&gt;
&lt;br /&gt;
			return TRUE;&lt;br /&gt;
		case WM_DESTROY:&lt;br /&gt;
			hDlg = 0;&lt;br /&gt;
			return FALSE;&lt;br /&gt;
		case WM_PAINT: {&lt;br /&gt;
			if (nPenType &amp;gt; highest_api_kpen) {&lt;br /&gt;
				ShowWindow(hSoftInc,SW_SHOW);&lt;br /&gt;
			} else {&lt;br /&gt;
				ShowWindow(hSoftInc,SW_HIDE);&lt;br /&gt;
			}&lt;br /&gt;
			DoLineTest();&lt;br /&gt;
			return No;&lt;br /&gt;
		}&lt;br /&gt;
		case WM_COMMAND:&lt;br /&gt;
			switch (wd) {&lt;br /&gt;
				case IDOK:&lt;br /&gt;
					SetSettings();&lt;br /&gt;
					EndDialog(hDlg, TRUE);&lt;br /&gt;
					return TRUE;&lt;br /&gt;
&lt;br /&gt;
				case IDCANCEL:&lt;br /&gt;
					EndDialog(hDlg, FALSE);&lt;br /&gt;
					return TRUE;&lt;br /&gt;
&lt;br /&gt;
				case ID_TEST:&lt;br /&gt;
					is_saver = No;&lt;br /&gt;
					SetSettings();			/* save current settings to ini file */&lt;br /&gt;
					hTest = CreateWindow(&lt;br /&gt;
						szTestWin,&lt;br /&gt;
						&amp;quot;Kaleidascope&amp;quot;,&lt;br /&gt;
						WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX |&lt;br /&gt;
							WS_SYSMENU | WS_THICKFRAME | WS_OVERLAPPED,&lt;br /&gt;
						CW_USEDEFAULT,&lt;br /&gt;
						CW_USEDEFAULT,&lt;br /&gt;
						CW_USEDEFAULT,&lt;br /&gt;
						CW_USEDEFAULT,&lt;br /&gt;
						hDlg,0,hInst,0);&lt;br /&gt;
					ShowWindow(hTest,SW_SHOWNA);&lt;br /&gt;
					return TRUE;&lt;br /&gt;
&lt;br /&gt;
				case ID_ABOUT: {&lt;br /&gt;
					FARPROC fpDialog;&lt;br /&gt;
					fpDialog = MakeProcInstance((FARPROC)AboutBoxProc,hInst);&lt;br /&gt;
					SetSettings();&lt;br /&gt;
					DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hDlg,fpDialog);&lt;br /&gt;
					FreeProcInstance(fpDialog);&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				case ID_SETPASSWORD: {&lt;br /&gt;
					FARPROC fpDialog;&lt;br /&gt;
					fpDialog = MakeProcInstance((FARPROC)DlgChangePassword,hMainInstance);&lt;br /&gt;
					if(!fpDialog)&lt;br /&gt;
						return FALSE;&lt;br /&gt;
					DialogBox(hMainInstance, MAKEINTRESOURCE(DLG_CHANGEPASSWORD), hDlg, fpDialog);&lt;br /&gt;
					FreeProcInstance(fpDialog);&lt;br /&gt;
					SendMessage(hDlg, WM_NEXTDLGCTL, hIDOK, 1l);&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				case ID_PASSWORDPROTECTED:&lt;br /&gt;
					bPassword ^= 1;&lt;br /&gt;
					CheckDlgButton(hDlg, wd, bPassword);&lt;br /&gt;
					EnableWindow(hSetPassword, bPassword);&lt;br /&gt;
					break;&lt;br /&gt;
				case IDC_PEN_TYPE: {&lt;br /&gt;
					if ((ld &amp;amp; 0x00080000) &amp;amp;&amp;amp; !(ld &amp;amp; 0x00010000)) {&lt;br /&gt;
						ks_pen_type oldPenType = nPenType;&lt;br /&gt;
						nPenType = (ks_pen_type)SendMessage(hPenList,CB_GETCURSEL,0,0);&lt;br /&gt;
//						if (nPenType != oldPenType) {&lt;br /&gt;
							if (nPenType &amp;gt; highest_api_kpen)&lt;br /&gt;
								ShowWindow(hSoftInc,SW_SHOW);&lt;br /&gt;
							else&lt;br /&gt;
								ShowWindow(hSoftInc,SW_HIDE);&lt;br /&gt;
							InvalidateRect(hLineDemo,0,No);&lt;br /&gt;
							DoLineTest();&lt;br /&gt;
//						}&lt;br /&gt;
					}&lt;br /&gt;
				} break;&lt;br /&gt;
				case IDC_RAND_SEED:&lt;br /&gt;
					nRandSeed = GetDlgItemInt(hDlg, IDC_RAND_SEED,NULL, No);&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
	return FALSE;&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: GetIniSettings&lt;br /&gt;
 ACTION		: Get initial settings from WIN.INI&lt;br /&gt;
 INPUT		: hWnd -- Handle to window&lt;br /&gt;
 RETURNS	: nothing&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
static void GetIniSettings()&lt;br /&gt;
{&lt;br /&gt;
	nSpeed		= GetPrivateProfileInt(szAppName, szSpeed,		nSpeed,		szIniFile);&lt;br /&gt;
	nSegs		= GetPrivateProfileInt(szAppName, szSegs,		nSegs,		szIniFile);&lt;br /&gt;
	nLinks		= GetPrivateProfileInt(szAppName, szLinks,		nLinks,		szIniFile);&lt;br /&gt;
	nSoftInc	= GetPrivateProfileInt(szAppName, szSoftInc,	nSoftInc,	szIniFile);&lt;br /&gt;
	nRandSeed	= GetPrivateProfileInt(szAppName, szRandSeed,	nRandSeed,	szIniFile);&lt;br /&gt;
	nPenType	= &lt;br /&gt;
		(ks_pen_type)GetPrivateProfileInt(szAppName, szPenType,	nPenType,	szIniFile);&lt;br /&gt;
	bClearScrn	= GetPrivateProfileInt(szAppName, szClear,		bClearScrn,	szIniFile);&lt;br /&gt;
	bColorLinks	= GetPrivateProfileInt(szAppName, szColorLinks,	bColorLinks,szIniFile);&lt;br /&gt;
	bMoveColors	= GetPrivateProfileInt(szAppName, szMoveColors,	bMoveColors,szIniFile);&lt;br /&gt;
	bPassword	= GetPrivateProfileInt(szAppName, szIsPassword, FALSE,		szIniFile);&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: ScreenSaverProc&lt;br /&gt;
 PURPOSE	: Main entry point for screen saver messages.&lt;br /&gt;
 USAGE		: This function is required for all screen savers.&lt;br /&gt;
 RETURNS	: depends on input message&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
LONG FAR PASCAL __export ScreenSaverProc(HWND ihWnd, UINT msg, WPARAM wd, LPARAM ld)&lt;br /&gt;
{&lt;br /&gt;
	hWnd = ihWnd;&lt;br /&gt;
	hMsg = ihWnd;&lt;br /&gt;
	switch (msg) {&lt;br /&gt;
		case WM_CREATE:&lt;br /&gt;
			GetScreenParams(ihWnd);&lt;br /&gt;
			if (scr_bits &amp;gt; 8)		/* if hiColor display...*/&lt;br /&gt;
				bColorLinks = Yes;		/* default is &amp;quot;move colors&amp;quot; = on */&lt;br /&gt;
			GetIniEntries();		/* Load the strings from the STRINGTABLE */&lt;br /&gt;
			GetIniSettings();		/* Load the initial bounce settings. */&lt;br /&gt;
			Prepare(Yes);&lt;br /&gt;
			GetScreenParams(hWnd);&lt;br /&gt;
			break;&lt;br /&gt;
		case WM_DESTROY:&lt;br /&gt;
			active = No;&lt;br /&gt;
			Prepare(No);&lt;br /&gt;
			break;&lt;br /&gt;
		case WM_ERASEBKGND:&lt;br /&gt;
			if (bClearScrn) {&lt;br /&gt;
				FillRect((HDC)wd,&amp;amp;scr_box.wr,(HBRUSH)GetStockObject(BLACK_BRUSH));&lt;br /&gt;
			}&lt;br /&gt;
			active = Yes;&lt;br /&gt;
			return 0L;&lt;br /&gt;
		case WM_TIMER:&lt;br /&gt;
			MoveImage();&lt;br /&gt;
            break;&lt;br /&gt;
		case WM_SIZE:&lt;br /&gt;
			GetClientRect(ihWnd, &amp;amp;scr_box.wr);			/* get window size */&lt;br /&gt;
			ReleaseDC(ihWnd,global_line.hDC);			/* release old device context */&lt;br /&gt;
			global_line.hDC = GetDC(ihWnd);				/* get new device context */&lt;br /&gt;
			if (bClearScrn) {&lt;br /&gt;
				FillRect(global_line.hDC,&amp;amp;scr_box.wr,(HBRUSH)GetStockObject(BLACK_BRUSH));&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		case WM_SYSCOMMAND:&lt;br /&gt;
			if (wd == SC_SCREENSAVE)&lt;br /&gt;
				is_saver = Yes;&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
	if (is_saver)&lt;br /&gt;
		return DefScreenSaverProc(ihWnd,msg,wd,ld);&lt;br /&gt;
	else&lt;br /&gt;
		return DefWindowProc(ihWnd,msg,wd,ld);&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: WriteProfileInt&lt;br /&gt;
 ACTION		: Write an unsigned integer value to CONTROL.INI.&lt;br /&gt;
 INPUT		:&lt;br /&gt;
 	name	- szSection - [section] name in .INI file&lt;br /&gt;
	szKey	- key= in .INI file&lt;br /&gt;
	i		- value for key above&lt;br /&gt;
 RETURNS	: nothing&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
static void WriteProfileInt(LPSTR szSection, LPSTR szKey, int i) &lt;br /&gt;
{&lt;br /&gt;
	char achBuf[40];&lt;br /&gt;
&lt;br /&gt;
    /* write out as unsigned because GetPrivateProfileInt() can&amp;#039;t&lt;br /&gt;
     * cope with signed values!&lt;br /&gt;
     */&lt;br /&gt;
	wsprintf(achBuf, &amp;quot;%u&amp;quot;, i);&lt;br /&gt;
	WritePrivateProfileString(szSection, szKey, achBuf, szIniFile);&lt;br /&gt;
}&lt;br /&gt;
/*==============================================================*\&lt;br /&gt;
 FUNCTION	: GetIniEntries()&lt;br /&gt;
\*==============================================================*/&lt;br /&gt;
void GetIniEntries(void)&lt;br /&gt;
{&lt;br /&gt;
  //Load Common Strings from stringtable...&lt;br /&gt;
	LoadString(hMainInstance, idsIsPassword, szIsPassword, 22);&lt;br /&gt;
	LoadString(hMainInstance, idsIniFile, szIniFile, MAXFILELEN);&lt;br /&gt;
	LoadString(hMainInstance, idsScreenSaver, szScreenSaver, 22);&lt;br /&gt;
	LoadString(hMainInstance, idsPassword, szPassword, 16);&lt;br /&gt;
	LoadString(hMainInstance, idsDifferentPW, szDifferentPW, BUFFLEN);&lt;br /&gt;
	LoadString(hMainInstance, idsChangePW, szChangePW, 30);&lt;br /&gt;
	LoadString(hMainInstance, idsBadOldPW, szBadOldPW, 255);&lt;br /&gt;
	LoadString(hMainInstance, idsHelpFile, szHelpFile, MAXFILELEN);&lt;br /&gt;
	LoadString(hMainInstance, idsNoHelpMemory, szNoHelpMemory, BUFFLEN);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;/div&gt;</summary>
		<author><name>Woozle</name></author>
	</entry>
</feed>