/*

  ComboboxQueue.h
  Copyright(C) 2008,2011 INASOFT 矢吹拓也/Ayacy

  ComboboxQueue.libを利用するためのヘッダファイル
  Rnsf用コンボボックス履歴＆レジストリ連携ライブラリ
  （REG_MULTI_SZ型のレジストリエントリに、履歴の値を格納します）

*/

#ifndef MYLIB__ISCOMBOBOXQUEUE__
#define MYLIB__ISCOMBOBOXQUEUE__

#ifndef OWN__COMBOBOXQUEUE__
#pragma comment(lib, "ComboboxQueue.lib")
#endif /* OWN__COMBOBOXQUEUE__ */

// クラス宣言(ANSI版)
class ComboboxQueueA {
public:
	ComboboxQueueA() :						// コンストラクタ
	  szStrings(NULL), hRoot(NULL), strSubkey(NULL), strValue(NULL), hCtrl(NULL), num(0) {}
	~ComboboxQueueA();						// デストラクタ
	bool Init(HWND hWnd, int iCtrl, int num, HKEY hRoot, const char *szSubKey, const char *szValue);
	bool Init(HWND hCtrl, int num, HKEY hRoot, const char *szSubkey, const char *szValue);
	bool Add(const char *szText);			// プルダウン文字列の追加（古いものは削除）

private:
	char **szStrings;			// プルダウン文字列
	HKEY hRoot;					// 関連付けられたレジストリキーのハンドル
	char *strSubkey;			// 関連付けられたレジストリキー
	char *strValue;				// 関連付けられたレジストリ値
	HWND hCtrl;					// コンボボックスのコントロールハンドル
	int  num;					// コンボボックスのリストに格納できる最大数

	bool regist_strings();		// レジストリへの書き込み
};

// クラス宣言(Unicode版)
class ComboboxQueueW {
public:
	ComboboxQueueW() :						// コンストラクタ
	  szStrings(NULL), hRoot(NULL), strSubkey(NULL), strValue(NULL), hCtrl(NULL), num(0) {}
	~ComboboxQueueW();						// デストラクタ
	bool Init(HWND hWnd, int iCtrl, int num, HKEY hRoot, const wchar_t *szSubKey, const wchar_t *szValue);
	bool Init(HWND hCtrl, int num, HKEY hRoot, const wchar_t *szSubkey, const wchar_t *szValue);
	bool Add(const wchar_t *szText);		// プルダウン文字列の追加（古いものは削除）

private:
	wchar_t **szStrings;		// プルダウン文字列
	HKEY hRoot;					// 関連付けられたレジストリキーのハンドル
	wchar_t *strSubkey;			// 関連付けられたレジストリキー
	wchar_t *strValue;			// 関連付けられたレジストリ値
	HWND hCtrl;					// コンボボックスのコントロールハンドル
	int  num;					// コンボボックスのリストに格納できる最大数

	bool regist_strings();		// レジストリへの書き込み
};

#ifdef _UNICODE
#define ComboboxQueue ComboboxQueueW
#else  /* _UNICODE */
#define ComboboxQueue ComboboxQueueA
#endif /* _UNICODE */

#endif /* MYLIB__ISCOMBOBOXQUEUE__ */
