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.
81 lines
1.7 KiB
81 lines
1.7 KiB
/*
|
|
* AVICAP32:
|
|
*
|
|
* profile.c
|
|
*
|
|
* win32/win16 utility functions to read and write profile items
|
|
* for VFW
|
|
*
|
|
* ONLY mmGetProfileIntA is supported here
|
|
*
|
|
*/
|
|
|
|
#if defined(_WIN32) && defined(UNICODE)
|
|
// This whole file is only used for 32 bit code. It is the implementation
|
|
// that allows Win GetProfilexxx calls to use the registry.
|
|
|
|
#include <windows.h>
|
|
#include <windowsx.h>
|
|
|
|
#include <profile.key>
|
|
#include <win32.h>
|
|
#include <stdlib.h> // for atoi
|
|
|
|
#include "profile.h"
|
|
|
|
static HKEY GetKeyA(LPCSTR appname, BOOL fCreate)
|
|
{
|
|
HKEY key = 0;
|
|
char achName[MAX_PATH];
|
|
|
|
lstrcpyA(achName, KEYNAMEA);
|
|
lstrcpynA(achName + NUMELMS(KEYNAMEA) - 1, appname,
|
|
NUMELMS(achName) - NUMELMS(KEYNAMEA) + 1);
|
|
|
|
if ((!fCreate && RegOpenKeyA(ROOTKEY, achName, &key) == ERROR_SUCCESS)
|
|
|| (fCreate && RegCreateKeyA(ROOTKEY, achName, &key) == ERROR_SUCCESS)) {
|
|
}
|
|
|
|
return(key);
|
|
}
|
|
|
|
#define GetKey GetKeyA
|
|
|
|
/*
|
|
* read a UINT from the profile, or return default if
|
|
* not found.
|
|
*/
|
|
UINT
|
|
mmGetProfileIntA(LPCSTR appname, LPCSTR valuename, INT uDefault)
|
|
{
|
|
DWORD dwType;
|
|
INT value = uDefault;
|
|
DWORD dwData;
|
|
int cbData;
|
|
|
|
HKEY key = GetKeyA(appname, FALSE);
|
|
|
|
if (key) {
|
|
|
|
cbData = sizeof(dwData);
|
|
if (RegQueryValueExA(
|
|
key,
|
|
(LPSTR)valuename,
|
|
NULL,
|
|
&dwType,
|
|
(PBYTE) &dwData,
|
|
&cbData) == ERROR_SUCCESS) {
|
|
if (dwType == REG_DWORD || dwType == REG_BINARY) {
|
|
value = (INT)dwData;
|
|
} else if (dwType == REG_SZ) {
|
|
value = atoi((LPSTR) &dwData);
|
|
}
|
|
}
|
|
|
|
RegCloseKey(key);
|
|
}
|
|
|
|
return((UINT)value);
|
|
}
|
|
|
|
#endif // DAYTONA
|