4 // Load/Save settings from registry
13 TCHAR g_szMessages
[MAX_MESSAGES
][MAXMSG_LENGTH
];
14 int g_nNumMessages
= 0;
15 int g_nMessageSpeed
= 5;
16 TCHAR g_szFontName
[512] = _T("Arial");
18 int g_nMatrixSpeed
= 10;
21 BOOL g_fRandomizeMessages
= FALSE
;
22 BOOL g_fFontBold
= TRUE
;
23 BOOL g_fScreenSaving
= FALSE
;
32 TCHAR
*hugechar
= malloc(4096);
33 TCHAR
*hptr
= hugechar
;
38 ZeroMemory(hugechar
, 4096);
40 RegCreateKeyEx(HKEY_CURRENT_USER
, _T("Software\\Catch22\\Matrix Screen Saver"), 0,
41 _T(""), 0, KEY_READ
, NULL
, &hkey
, NULL
);
44 if(ERROR_SUCCESS
== RegQueryValueEx(hkey
, _T("MessageSpeed"), 0, 0, (BYTE
*)&value
, &len
))
46 if(value
>= MSGSPEED_MIN
&& value
<= MSGSPEED_MAX
)
47 g_nMessageSpeed
= value
;
50 if(ERROR_SUCCESS
== RegQueryValueEx(hkey
, _T("MatrixSpeed"), 0, 0, (BYTE
*)&value
, &len
))
52 if(value
>= SPEED_MIN
&& value
<= SPEED_MAX
)
53 g_nMatrixSpeed
= value
;
56 if(ERROR_SUCCESS
== RegQueryValueEx(hkey
, _T("Density"), 0, 0, (BYTE
*)&value
, &len
))
58 if(value
>= DENSITY_MIN
&& value
<= DENSITY_MAX
)
62 if(ERROR_SUCCESS
== RegQueryValueEx(hkey
, _T("FontSize"), 0, 0, (BYTE
*)&value
, &len
))
64 if(value
>= FONT_MIN
&& value
<= FONT_MAX
)
68 if(ERROR_SUCCESS
== RegQueryValueEx(hkey
, _T("FontBold"), 0, 0, (BYTE
*)&value
, &len
))
69 g_fFontBold
= (value
== 0 ? FALSE
: TRUE
);
71 if(ERROR_SUCCESS
== RegQueryValueEx(hkey
, _T("Randomize"), 0, 0, (BYTE
*)&value
, &len
))
72 g_fRandomizeMessages
= (value
== 0 ? FALSE
: TRUE
);
75 if(RegQueryValueEx(hkey
, _T("FontName"), 0, 0, (BYTE
*)g_szFontName
, &len
) != ERROR_SUCCESS
)
76 lstrcpy(g_szFontName
, _T("Arial"));
80 if(ERROR_SUCCESS
== RegQueryValueEx(hkey
, _T("Messages"), 0, 0 , (BYTE
*)hugechar
, &len
))
82 while(len
> 0 && *hptr
&& _istascii(*hptr
))
86 lstrcpyn(g_szMessages
[g_nNumMessages
], hptr
, MAXMSG_LENGTH
);
88 hptr
+= lstrlen(hptr
) + 1;
94 /* built-in coded message for first run */
95 lstrcpyn(g_szMessages
[0], _T("ReactOS"), MAXMSG_LENGTH
);
106 TCHAR
*hugechar
= malloc(4096 * sizeof(TCHAR
));
107 TCHAR
*msgptr
= hugechar
;
115 ZeroMemory(hugechar
, 4096 * sizeof(TCHAR
));
118 RegCreateKeyEx(HKEY_CURRENT_USER
, _T("Software\\Catch22\\Matrix Screen Saver"), 0,
119 _T(""), 0, KEY_WRITE
, NULL
, &hkey
, NULL
);
121 value
= g_nMessageSpeed
;
122 RegSetValueEx(hkey
, _T("MessageSpeed"), 0, REG_DWORD
, (BYTE
*)&value
, sizeof value
);
124 value
= g_nMatrixSpeed
;
125 RegSetValueEx(hkey
, _T("MatrixSpeed"), 0, REG_DWORD
, (BYTE
*)&value
, sizeof value
);
128 RegSetValueEx(hkey
, _T("Density"), 0, REG_DWORD
, (BYTE
*)&value
, sizeof value
);
131 RegSetValueEx(hkey
, _T("FontSize"), 0, REG_DWORD
, (BYTE
*)&value
, sizeof value
);
133 value
= g_fRandomizeMessages
;
134 RegSetValueEx(hkey
, _T("Randomize"), 0, REG_DWORD
, (BYTE
*)&value
, sizeof value
);
137 RegSetValueEx(hkey
, _T("FontBold"), 0, REG_DWORD
, (BYTE
*)&value
, sizeof value
);
139 RegSetValueEx(hkey
, _T("FontName"), 0, REG_SZ
, (BYTE
*)g_szFontName
, lstrlen(g_szFontName
) * sizeof(TCHAR
));
141 for(i
= 0; i
< g_nNumMessages
; i
++)
143 len
= lstrlen(g_szMessages
[i
]);
145 if(len
> 0 && totallen
+len
< 4096)
147 lstrcpyn(msgptr
, g_szMessages
[i
], 4096-totallen
);
153 //*msgptr = _T('\0');
156 RegSetValueEx(hkey
, _T("Messages"), 0, REG_MULTI_SZ
, (BYTE
*)hugechar
, totallen
* sizeof(TCHAR
));