#pragma once

struct KbDShow_Settings
{
    bool bOpenFromStream;  //true: ストリームから開く(DirectShow)
                           //false:実ファイルから開く(DirectShow)
    bool bVideo;           //動画の映像部分を再生
    bool bTopMost;         //常に手前に表示
    bool bResetPos;        //動画ウィンドウ位置初期化
    bool bFullScreen;      //最大化時フルスクリーン
    int  nVideoSize;       //動画サイズ(0: 前回と同じ、正の値: 横幅、負の値: %(-100なら100%)
    GUID guidVideoRenderer;//ビデオレンダラーの CLSID
    int  rx;               //動画クライアント領域縦横比(横)
    int  ry;               //動画クライアント領域縦横比(縦)
    int  nStop;            //0: 演奏停止時ウィンドウ表示、ウィンドウ閉じても演奏継続
                           //1: 演奏停止時ウィンドウ非表示、ウィンドウ閉じても演奏継続
    int  nClock;
};

class IKpiConfig;
class IKpiConfigEnumerator;

BOOL  __fastcall kbdshow_EnumConfig(IKpiConfig* pConfig, IKpiConfigEnumerator* pEnumerator);
DWORD __fastcall kbdshow_ApplyConfig(IKpiConfig* pConfig,
    const wchar_t* cszSection, //セクション名
    const wchar_t* cszKey, //キー名
    INT64  nValue, //変更後の値(BOOL/INT の場合)
    double dValue, //変更後の値(FLOAT の場合)
    const wchar_t* cszValue);//変更後の値(文字列)

void __fastcall kbdshow_GetSettings(IKpiConfig* pConfig, KbDShow_Settings* pSettings);
wchar_t* __fastcall kbdshow_GetSupportExts(IKpiConfig* pConfig, bool *pbTest);
void __fastcall kbdshow_SetVideoPosition(IKpiConfig *pConfig, int nLeft, int nTop, int nWidth, int nHeight);
void __fastcall kbdshow_GetVideoPosition(IKpiConfig* pConfig, int* pnLeft, int* pnTop, int* pnWidth, int* pnHeight);
void __fastcall kbdshow_IsSupport(IKpiConfig* pConfig, const wchar_t* cszExt, bool* pbDS, bool* pbMF, int* pPrior);
bool __fastcall CheckVistaOrLater(void);
