#define	STRICT
#include	<windows.h>
#include	<tchar.h>
#include	"setup.h"

#define		subkey	TEXT("Software\\Gawaro\\KanjiIn")

#define		VAR_DICTPATH		TEXT("DictPath")
#define		VAR_PREWAIT			TEXT("PreWait")
#define		VAR_POSTWAIT		TEXT("PostWait")
#define		VAR_QUICKSEND		TEXT("QuickSend")
#define		VAR_JIS				TEXT("JIS")

BOOL
get_reg( void )
{
	HKEY	hk ;
	LONG	lret ;
	LPTSTR	name ;
	LPBYTE	lpData ;
	DWORD	dwType, cbData ;

	/* レジストリキーをオープンする */
	lret = RegOpenKeyEx( HKEY_CURRENT_USER, subkey, 0,
						 KEY_QUERY_VALUE, &hk ) ;
	if ( lret != ERROR_SUCCESS ) {
		return FALSE ;
	}
	/* 辞書ファイルパス名 */
	name = VAR_DICTPATH ;
	dwType = REG_SZ ;
	lpData = (LPBYTE) DictPath ;
	cbData = sizeof DictPath ;
	lret = RegQueryValueEx( hk, name, NULL, &dwType, lpData, &cbData ) ;
	/* ペースト前の待ち秒数 */
	name = VAR_PREWAIT ;
	dwType = REG_DWORD ;
	lpData = (LPBYTE) &PreWait ;
	cbData = sizeof PreWait ;
	lret = RegQueryValueEx( hk, name, NULL, &dwType, lpData, &cbData ) ;
	/* ペースト後の待ち秒数 */
	name = VAR_POSTWAIT ;
	dwType = REG_DWORD ;
	lpData = (LPBYTE) &PostWait ;
	cbData = sizeof PostWait ;
	lret = RegQueryValueEx( hk, name, NULL, &dwType, lpData, &cbData ) ;
	/* 確定送信フラグ */
	name = VAR_QUICKSEND ;
	dwType = REG_DWORD ;
	lpData = (LPBYTE) &F_QuickSend ;
	cbData = sizeof F_QuickSend ;
	lret = RegQueryValueEx( hk, name, NULL, &dwType, lpData, &cbData ) ;
	/* JIS送信フラグ */
	name = VAR_JIS ;
	dwType = REG_DWORD ;
	lpData = (LPBYTE) &F_JIS ;
	cbData = sizeof F_JIS ;
	lret = RegQueryValueEx( hk, name, NULL, &dwType, lpData, &cbData ) ;
	/* レジストリクローズ */
	RegCloseKey( hk ) ;
	return TRUE ;
}

BOOL
set_reg( void )
{
	HKEY	hk ;
	LONG	lret ;
	LPTSTR	name ;
	LPBYTE	lpData ;
	DWORD	ret, dwType, cbData ;

	/* レジストリキーを作成する */
	lret = RegCreateKeyEx( HKEY_CURRENT_USER, subkey, 0, TEXT(""), 0,
#ifdef	_WIN32_WCE
						   0,
#else	/* _WIN32_WCE */
						   KEY_ALL_ACCESS,
#endif	/* _WIN32_WCE */
						   NULL, &hk, &ret ) ;
	if ( lret != ERROR_SUCCESS ) {
		return FALSE ;
	}
	/* 辞書ファイルパス名 */
	name = VAR_DICTPATH ;
	dwType = REG_SZ ;
	lpData = (LPBYTE) DictPath ;
	cbData = (_tcslen(DictPath) + 1) * sizeof (*DictPath) ;
	lret = RegSetValueEx( hk, name, 0, dwType, lpData, cbData ) ;
	/* ペースト前の待ち秒数 */
	name = VAR_PREWAIT ;
	dwType = REG_DWORD ;
	lpData = (LPBYTE) &PreWait ;
	cbData = sizeof PreWait ;
	lret = RegSetValueEx( hk, name, 0, dwType, lpData, cbData ) ;
	/* ペースト後の待ち秒数 */
	name = VAR_POSTWAIT ;
	dwType = REG_DWORD ;
	lpData = (LPBYTE) &PostWait ;
	cbData = sizeof PostWait ;
	lret = RegSetValueEx( hk, name, 0, dwType, lpData, cbData ) ;
	/* 確定送信フラグ */
	name = VAR_QUICKSEND ;
	dwType = REG_DWORD ;
	lpData = (LPBYTE) &F_QuickSend ;
	cbData = sizeof F_QuickSend ;
	lret = RegSetValueEx( hk, name, 0, dwType, lpData, cbData ) ;
	/* JIS送信フラグ */
	name = VAR_JIS ;
	dwType = REG_DWORD ;
	lpData = (LPBYTE) &F_JIS ;
	cbData = sizeof F_JIS ;
	lret = RegSetValueEx( hk, name, 0, dwType, lpData, cbData ) ;
	/* レジストリクローズ */
	RegCloseKey( hk ) ;
	return TRUE ;
}

void
delete_reg( void )
{
	RegDeleteKey( HKEY_CURRENT_USER, subkey ) ;
}
