// ★コメント未記入
/*-----------------------------------------------------------------------------
[名称]	Common.h
[概要]	汎用関数ヘッダ
[備考]	なし
[履歴]	2002-12-12	NC		コメント付加(moralog)
		2003-11-08	b031130 (3146)関数追加(moralog)
		2003-11-12	b031130 (3146)関数追加(dincom)
		2003-12-28	b031228 (3146)関数名称変更(dincom)
		2004-01-30	b031228 (3367)Grep検索(dincom)
		2004-05-10	b031228 (3204)へぼぺとの連携(moralog)
		2004-05-10	b031228 (3751)文書名がショートファイルネームで表示される(moralog)
-----------------------------------------------------------------------------*/

#ifndef CommonH
#define CommonH

#include <afxtempl.h>

#ifndef Common
#define Common extern
#endif Common


//////////////////////////////////////////////////////////////////////
// 定数
//////////////////////////////////////////////////////////////////////
const CString	g_cstrBigBlank(_T("　"));		// 全角空白
const CString	g_cstrSmallBlank(_T(" "));		// 半角空白


//////////////////////////////////////////////////////////////////////
// 関数
//////////////////////////////////////////////////////////////////////

// LastError(Win32API)出力
Common void PrintLastErr( CString strCaption = "" );

// 文字列→文字列リスト分割
Common long	StringToList(
	CString&		strLinez,
	CStringList*	plstLinez,
	CString&		strReturn
);

Common long	StringToArray(
	CString&		strLinez,
	CStringArray*	plstLinez,
	CString&		strReturn
);

Common CString	BoolToString(
	BOOL	bValue
);

Common BOOL	StringToBool(
	CString	strValue
);

Common BOOL	MaruBatuToBool(
	CString&	strValue
);

Common CString	BoolToMaruBatu(
	BOOL		bValue
);

Common CString	LongToString(
	long	lValue
);

Common long	StringToLong(
	CString	strValue
);

Common CString	ColorrefToString(
	COLORREF	colValue
);

Common COLORREF	StringToColorref(
	CString		strValue
);

Common CString	QuoteString(
	CString&	strValue
);

Common CString	DeQuoteString(
	CString&	strValue
);

Common BOOL WriteGeneralProfile(
	CString&		strFilename,
	const char*		strKey,
	const char*		strValue
);
/*
Common BOOL WriteFontProfile(
	CString&		strFilename,
	const char*		strKey,
	const char*		strValue
);
*/
Common BOOL WritePrintProfile(
	CString&		strFilename,
	const char*		strKey,
	const char*		strValue
);

Common BOOL WriteProfile(
	CString&		strFilename,
	const char*		strSection,
	const char*		strKey,
	const char*		strValue
);

Common BOOL ReadGeneralProfile(
	CString&			strFilename,
	const char*			strKey,
	CString*			pstrValue
);

Common BOOL ReadPrintProfile(
	CString&			strFilename,
	const char*			strKey,
	CString*			pstrValue
);

Common BOOL	ReadProfile(
	CString&			strFilename,
	const char*			strSection,
	const char*			strKey,
	CString*			pstrValue
);

Common int BitCountToColorCount(const int& iColorBits);

Common int StringToStringArray(
	CString& strLine,
	CStringArray* aCharz
);
Common CString StringArrayToString(
	CStringArray& aCharz
);

Common CString VKToString(
	int		iKey
);

Common CString VKToNickname(
	int		iKey
);


Common int StringToVK(
	CString		strKey
);

Common long HexToLong(
	const CString& strHex
);


Common CString DayOfWeek(
	int		iDay
);


Common BOOL DIBStretchBlt(
	CDC*		pdcDst,
	CRect&		rcDst,
	CDC*		pdcSrc,
	CBitmap*	pbmpSrc,
	CRect&		rcSrc
);


Common BOOL	PrepareFolder(
	CString&	strFolderName
);


Common CString		PathFromPathName(
	CString&	strPathName
);

Common CString		FilenameFromPathName(
	CString&	strPathName
);

Common CString		ExtFromPathName(
	CString&	strPathName
);

Common BOOL DeleteDirectory(LPCTSTR lpPathName);

//「送る」メニューに項目を追加
Common BOOL EntrySendTo();
Common BOOL CreateShellLink( const char *LinkFile, const char *TargetFile, const char *Arguments, const char *WorkDir, int ShowCmd );


Common void SetFileType(
	CString& ext,		// extは拡張子名（ピリオド含む）で、
	CString& docname,	// docnameは、レジストリで使うドキュメントの名前
	CString& doctype,	// doctypeは、エクスプローラー等で表示される「ファイルの種類」
	CString& action,		// アクション
	CString& exepath		// exepathは、実行ファイルのパス
);

Common void RemoveFileType(
	CString& ext,		// extは拡張子名（ピリオド含む）で、
	CString& docname	// docnameは、復元するドキュメント種類の名前
);

Common BOOL IsRelatedFileType(
	CString& ext,		// extは拡張子名（ピリオド含む）で、
	CString& docname	// docnameは、復元するドキュメント種類の名前
);

// ▼ (3146) BGN 2003.11.08 (moralog) 新規追加
// リソース文字列取得
Common CString	GetString(
	long	lStringID	// <I> リソースID [-] (-) :-
);
// ▲ (3146) END
// ▼ (3146) BGN 2003.11.08 (moralog) 新規追加
// オプション内容取得
Common CString GetCommandtailOption(
	LPCTSTR strOptionName	// <I> オプション名称 [-] (たとえば"row","column") :-
);
// ▲ (3146) END

// ▼ (3146) BGN 2003.11.10 (dincom) 新規追加
// タグジャンプ情報取得
// ▼ (3146) BGN 2003.12.28 (moralog) extern宣言付加
Common BOOL	GetTagJumpInfo( 
// ▽ original BGN
//BOOL	GetTagJumpInfo( 
// △ original END
// ▲ (3146) END
	CString&	strTagJumpInfo,
	CString*	pstrFilePath,
	long*		plRow,
	long*		plColumn
);
// ▲ (3146) END

// ▼ (3146) BGN 2003.11.12 (dincom) 新規追加
// 数字取得処理
// ▼ (3146) BGN 2003.12.28 (moralog) 関数名称変更
Common long GetNumeric( CString& strNumeric );
// ▽ original BGN
//long GetFigure( CString& strFigure );
// △ original END
// ▲ (3146) END
// ▲ (3146) END

// ▼ (3367) BGN 2004.1.30 (dincom)
// フォルダ指定ダイアログのコールバック
Common int		CALLBACK BrowseCallbackProc( 
	HWND hwnd, 
	UINT uMsg, 
	LPARAM lParam, 
	LPARAM lpData 
);
// ▲ (3367) END
// ▼ (3367) BGN 2004.1.30 (dincom)
// フォルダ指定ダイアログ表示
Common BOOL	SelectFolder ( 
	HWND hWnd, 
	LPCTSTR lpDefFolder, 
	LPTSTR lpSelectPath 
);
// ▲ (3367) END

// ▼ (3204) BGN 2004.05.10 (moralog) ランチャツールバー追加
// 文字列を区切り文字部分で分割する
// クォーテーションにくくられた部分は分割しない
Common long	StringToArrayWithQuoteCare(
	CString&		strLinez,		// I: 対象文字列 [-] (-) :-
	CStringArray*	paLinez,		// O: 行格納アレイ [-] (-) :-
	CString&		strSepalater	// I: 区切り文字 [-] (-) :-
);
// ▲ (3204) END

// ▼ (3204) BGN 2004.05.12 (moralog) ExeCommon.cppから移動。汎用関数化。
// クリップボードコピー
Common void EditCopyString(
	CString&	strCopySrc	// I  :コピー元文字列 [-] (-) :-
);
// ▲ (3204) END

// ▼ (3751) BGN 2004.05.10 (moralog) ショートファイルネームをロングファイルネームに変換
// ショートファイルネームをロングファイルネームに変換
Common CString	GetLongFilePath(
	CString& strShortPath
);
// ロングファイルネームをショートファイルネームに変換
Common CString	GetShortFilePath(
	CString& strLongPath
);
// ▲ (3751) END

// ▼ (3751) BGN 2004.05.10 (moralog) 関数化
Common CString	GetExePathName();
// ▲ (3751) END


#endif CommonH