Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

218 lines
4.9 KiB

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
Misc.cpp
Abstract:
Implements misc. functionality
Notes:
Unicode only.
History:
05/04/2001 rparsons Created
01/11/2002 rparsons Cleaned up
--*/
#include "precomp.h"
extern APPINFO g_ai;
/*++
Routine Description:
Retrieves or sets position info in the registry.
Arguments:
fSave - If true, indicates we're saving data.
*lppt - A POINT structure that contains/receives our data.
Return Value:
None.
--*/
void
GetSavePositionInfo(
IN BOOL fSave,
IN OUT POINT* lppt
)
{
HKEY hKey;
DWORD cbSize = 0, dwDisposition = 0;
LONG lRetVal = 0;
//
// Initialize our coordinates in case there's no data there.
//
if (!fSave) {
lppt->x = lppt->y = 0;
}
//
// Open the registry key (or create it if the first time being used).
//
lRetVal = RegCreateKeyEx(HKEY_CURRENT_USER,
L"Software\\Microsoft\\ShimViewer",
0,
0,
REG_OPTION_NON_VOLATILE,
KEY_QUERY_VALUE | KEY_SET_VALUE,
0,
&hKey,
&dwDisposition);
if (ERROR_SUCCESS != lRetVal) {
return;
}
//
// Save or retrieve our coordinates.
//
if (fSave) {
RegSetValueEx(hKey,
L"DlgCoordinates",
0,
REG_BINARY,
(const BYTE*)lppt,
sizeof(*lppt));
} else {
cbSize = sizeof(*lppt);
RegQueryValueEx(hKey,
L"DlgCoordinates",
0,
0,
(LPBYTE)lppt,
&cbSize);
}
RegCloseKey(hKey);
}
/*++
Routine Description:
Retrieves or sets setting info in the registry.
Arguments:
fSave - If true, indicates we're saving data.
Return Value:
TRUE on success, FALSE otherwise.
--*/
void
GetSaveSettings(
IN BOOL fSave
)
{
HKEY hKey;
LONG lRetVal = 0;
DWORD dwOnTop = 0, dwMinimize = 0, dwMonitor = 0;
DWORD dwDisposition = 0, cbSize = 0;
//
// Open the registry key (or create it if the first time being used).
//
lRetVal = RegCreateKeyEx(HKEY_CURRENT_USER,
L"Software\\Microsoft\\ShimViewer",
0,
0,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
0,
&hKey,
&dwDisposition);
if (ERROR_SUCCESS != lRetVal) {
return;
}
if (fSave) {
if (g_ai.fOnTop) {
dwOnTop = 1;
}
if (g_ai.fMinimize) {
dwMinimize = 1;
}
if (g_ai.fMonitor) {
dwMonitor = 1;
}
lRetVal = RegSetValueEx(hKey,
L"AlwaysOnTop",
0,
REG_DWORD,
(const BYTE*)&dwOnTop,
sizeof(DWORD));
RegSetValueEx(hKey,
L"StartMinimize",
0,
REG_DWORD,
(const BYTE*)&dwMinimize,
sizeof(DWORD));
RegSetValueEx(hKey,
L"MonitorMessages",
0,
REG_DWORD,
(const BYTE*)&dwMonitor,
sizeof(DWORD));
} else {
cbSize = sizeof(DWORD);
RegQueryValueEx(hKey,
L"AlwaysOnTop",
0,
0,
(LPBYTE)&dwOnTop,
&cbSize);
cbSize = sizeof(DWORD);
RegQueryValueEx(hKey,
L"StartMinimize",
0,
0,
(LPBYTE)&dwMinimize,
&cbSize);
cbSize = sizeof(DWORD);
lRetVal = RegQueryValueEx(hKey,
L"MonitorMessages",
0,
0,
(LPBYTE)&dwMonitor,
&cbSize);
if (dwOnTop) {
g_ai.fOnTop = TRUE;
}
if (dwMinimize) {
g_ai.fMinimize = TRUE;
}
if (dwMonitor || ERROR_SUCCESS != lRetVal) {
g_ai.fMonitor = TRUE;
}
}
RegCloseKey(hKey);
}