#pragma once

#include "resource.h"

// グローバル変数
extern char *szTitle;
extern const char szWindowClass[];

#ifdef __cplusplus

#define EXTERN extern "C"

#else /* __cplusplus */

#define EXTERN extern

#endif /* __cplusplus */

EXTERN OSVERSIONINFO verinfo;	// バージョン情報
EXTERN unsigned short int   winver, iever;	// Windowsバージョン、IEメジャーバージョン
EXTERN unsigned char        tp_nreboot;
#if _MSC_VER < 1500
#ifndef _WIN64
EXTERN unsigned short int   isNT;			// WinNTか?
#endif /* _WIN64 */
#endif // _MSC_VER < 1500
EXTERN HINSTANCE hInst;			// プログラムのインスタンス

EXTERN HICON hIconCategory, hCBLIconCheck, hCBLIconUncheck, hCBLIconNoDet, hCBLIconDisable, hIconEmpty;
EXTERN HICON hIconFolderBrowse, hIconFileBrowse, hIconCategoryOpen;	// 各種アイコン
EXTERN HICON hIconMail;
EXTERN HIMAGELIST himlTreeSmall, himlCBLSmall, himlCBLState;		// 各種イメージリスト（共有）
EXTERN HICON hDefaultRscIcon, hDefaultRscSmallIcon;					// RSCデフォルトアイコン
EXTERN HICON hIconSelIcon, hIconInputText;

// typedef struct

// スクリプトファイルに関する情報
typedef struct {
	char *rsc_fname;	// RSCファイル名
	char *item;			// アイテム名
	char *info;			// 情報欄に表示される内容
	HICON hicon;		// メインウィンドウのリストビューに表示されるアイコンへのハンドル
	HICON hSmallIcon;	// メインウィンドウのリストビューに表示される小さいアイコンへのハンドル
	char *help;			// ヘルプファイル（後ろがhlpで終わらない場合はコマンドラインと見なす）
	UINT  contextid;	// ヘルプファイルのコンテキストID
	FILETIME ft;		// ファイルの最終更新日時(ソート用)
	UINT  fsize;		// ファイルサイズ(4GBまで)
	char *author;		// 作者名
	char *url;			// 作者のサイトのURL
	char *category;		// カテゴリ(この機能項目が含まれるべき大別)
	BYTE foundflag;		// 検索の結果、合致するスクリプトだったら1
} MLVI, *LPMLVI;

// 標準で付属するスクリプトの個数
// (実際には、これはスクリプトバッファのためのメモリに使われる。少し多めに準備するとよい)
#define RSCSTD	80
// 標準で付属する編集項目の個数
// (実際には、これはキーワード検索のためのメモリに使われる。少し多めに準備するとよい)
#define ITEMNUM 1200

// リバーの幅
#define RBAR_WIDTH	4

// ソフトウェア名称の定義
#define SOFTWARENAME "いじくるつくーる"

// アーカイバDLLからの出力ログを得るためのバッファのサイズ
#define ARCDLL_OUTBUFSIZE	32767

// 文字コード
#define ENCODE_SJIS			0
#define ENCODE_UNICODE_LE	1
#define ENCODE_UNICODE_BE	2
#define ENCODE_UTF8			3

// ハイライトの色
#define DEFAULT_HIGHLIGHTCOLOR RGB(0xff, 0xff, 0xaa)

// 非表示スクリプト
EXTERN int invisible_item_num;
EXTERN const char *invisible_item_rsc[];
EXTERN const char *invisible_item_name[];

// ログオフ・終了などを行うための関数
int QuitWindows(HWND hWnd, int mode);
#define QW_LOGOFF		0x00
#define QW_FORCE		0x80
#define QW_REBOOT		0x01
#define QW_SHUTDOWN		0x02
