OSDN Git Service

ver2.0 v2.0
authorseraphy <seraphy@users.sourceforge.jp>
Fri, 27 Mar 2015 14:40:44 +0000 (23:40 +0900)
committerseraphy <seraphy@users.sourceforge.jp>
Fri, 27 Mar 2015 14:40:44 +0000 (23:40 +0900)
124 files changed:
.gitignore [new file with mode: 0644]
SeraphyScriptDialog.sln [new file with mode: 0644]
SeraphyScriptDialog/.gitignore [new file with mode: 0644]
SeraphyScriptDialog/ArrayUtil.cpp [new file with mode: 0644]
SeraphyScriptDialog/ArrayUtil.h [new file with mode: 0644]
SeraphyScriptDialog/CommOpenFileName.cpp [new file with mode: 0644]
SeraphyScriptDialog/CommOpenFileName.h [new file with mode: 0644]
SeraphyScriptDialog/ControlComponent.cpp [new file with mode: 0644]
SeraphyScriptDialog/ControlComponent.h [new file with mode: 0644]
SeraphyScriptDialog/OutputWindow.cpp [new file with mode: 0644]
SeraphyScriptDialog/OutputWindow.h [new file with mode: 0644]
SeraphyScriptDialog/ScrDlgRoot.cpp [new file with mode: 0644]
SeraphyScriptDialog/ScrDlgRoot.h [new file with mode: 0644]
SeraphyScriptDialog/ScrDlgRoot.rgs [new file with mode: 0644]
SeraphyScriptDialog/SeraphyScriptDialog.cpp [new file with mode: 0644]
SeraphyScriptDialog/SeraphyScriptDialog.def [new file with mode: 0644]
SeraphyScriptDialog/SeraphyScriptDialog.idl [new file with mode: 0644]
SeraphyScriptDialog/SeraphyScriptDialog.rc [new file with mode: 0644]
SeraphyScriptDialog/SeraphyScriptDialog.rgs [new file with mode: 0644]
SeraphyScriptDialog/SeraphyScriptDialog.vcproj [new file with mode: 0644]
SeraphyScriptDialog/UserForm.cpp [new file with mode: 0644]
SeraphyScriptDialog/UserForm.h [new file with mode: 0644]
SeraphyScriptDialog/VarArray.cpp [new file with mode: 0644]
SeraphyScriptDialog/VarArray.h [new file with mode: 0644]
SeraphyScriptDialog/VarArray.rgs [new file with mode: 0644]
SeraphyScriptDialog/dlldatax.c [new file with mode: 0644]
SeraphyScriptDialog/dlldatax.h [new file with mode: 0644]
SeraphyScriptDialog/dllmain.cpp [new file with mode: 0644]
SeraphyScriptDialog/dllmain.h [new file with mode: 0644]
SeraphyScriptDialog/resource.h [new file with mode: 0644]
SeraphyScriptDialog/stdafx.cpp [new file with mode: 0644]
SeraphyScriptDialog/stdafx.h [new file with mode: 0644]
SeraphyScriptDialog/targetver.h [new file with mode: 0644]
SeraphyScriptDialogSetup.iss [new file with mode: 0644]
help/.gitignore [new file with mode: 0644]
help/SeraphyScriptDialog.hhk [new file with mode: 0644]
help/SeraphyScriptDialog2.hhp [new file with mode: 0644]
help/buidl.cmd [new file with mode: 0644]
help/examplecode/preference.ini [new file with mode: 0644]
help/examplecode/sample_about.wsf [new file with mode: 0644]
help/examplecode/sample_button.vbs [new file with mode: 0644]
help/examplecode/sample_cd1.vbs [new file with mode: 0644]
help/examplecode/sample_cd2.vbs [new file with mode: 0644]
help/examplecode/sample_chkbutton1.vbs [new file with mode: 0644]
help/examplecode/sample_chkbutton2.vbs [new file with mode: 0644]
help/examplecode/sample_chkbutton3.vbs [new file with mode: 0644]
help/examplecode/sample_combo.vbs [new file with mode: 0644]
help/examplecode/sample_const.wsf [new file with mode: 0644]
help/examplecode/sample_dropdownlist.vbs [new file with mode: 0644]
help/examplecode/sample_editbox.vbs [new file with mode: 0644]
help/examplecode/sample_editbtn.vbs [new file with mode: 0644]
help/examplecode/sample_fileedit.vbs [new file with mode: 0644]
help/examplecode/sample_label.vbs [new file with mode: 0644]
help/examplecode/sample_listbox.vbs [new file with mode: 0644]
help/examplecode/sample_modal.vbs [new file with mode: 0644]
help/examplecode/sample_modaless.vbs [new file with mode: 0644]
help/examplecode/sample_modaless2.vbs [new file with mode: 0644]
help/examplecode/sample_outputwnd.vbs [new file with mode: 0644]
help/examplecode/sample_profilevalue.vbs [new file with mode: 0644]
help/examplecode/sample_radiobutton1.vbs [new file with mode: 0644]
help/examplecode/sample_radiobutton2.vbs [new file with mode: 0644]
help/html/ClearAllControls.html [new file with mode: 0644]
help/html/CommonDlgMethod.html [new file with mode: 0644]
help/html/ComposeForm.html [new file with mode: 0644]
help/html/DataConvMethod.html [new file with mode: 0644]
help/html/DataConvProp.html [new file with mode: 0644]
help/html/DefineButton.html [new file with mode: 0644]
help/html/DefineCheckButton.html [new file with mode: 0644]
help/html/DefineComboBox.html [new file with mode: 0644]
help/html/DefineDropdownList.html [new file with mode: 0644]
help/html/DefineEdit.html [new file with mode: 0644]
help/html/DefineEditButton.html [new file with mode: 0644]
help/html/DefineFileEdit.html [new file with mode: 0644]
help/html/DefineLabel.html [new file with mode: 0644]
help/html/DefineListBox.html [new file with mode: 0644]
help/html/DefineRadioButton.html [new file with mode: 0644]
help/html/EventMethod.html [new file with mode: 0644]
help/html/ExecuteForm.html [new file with mode: 0644]
help/html/FileMethod.html [new file with mode: 0644]
help/html/ListObjSynop.html [new file with mode: 0644]
help/html/OutputWindowSynop.html [new file with mode: 0644]
help/html/PreferencesProp.html [new file with mode: 0644]
help/html/ScrDlgRootSynop.html [new file with mode: 0644]
help/html/ShellMethod.html [new file with mode: 0644]
help/html/SystemMethod.html [new file with mode: 0644]
help/html/UserFormProp.html [new file with mode: 0644]
help/html/UserFormSynop.html [new file with mode: 0644]
help/html/bugs.html [new file with mode: 0644]
help/html/devstyle.css [new file with mode: 0644]
help/html/history.html [new file with mode: 0644]
help/html/howtoinstall.html [new file with mode: 0644]
help/html/howtouse.html [new file with mode: 0644]
help/html/license.html [new file with mode: 0644]
help/html/sample1.png [new file with mode: 0644]
help/html/sample2.png [new file with mode: 0644]
help/html/sample3.png [new file with mode: 0644]
help/html/sample4.png [new file with mode: 0644]
help/html/sample_button.png [new file with mode: 0644]
help/html/sample_chkbutton1.png [new file with mode: 0644]
help/html/sample_chkbutton2.png [new file with mode: 0644]
help/html/sample_chkbutton3.png [new file with mode: 0644]
help/html/sample_combo.png [new file with mode: 0644]
help/html/sample_combo_B.png [new file with mode: 0644]
help/html/sample_dropdownlist.png [new file with mode: 0644]
help/html/sample_dropdownlist_B.png [new file with mode: 0644]
help/html/sample_editbox.png [new file with mode: 0644]
help/html/sample_editbtn.png [new file with mode: 0644]
help/html/sample_fileedit.png [new file with mode: 0644]
help/html/sample_label.png [new file with mode: 0644]
help/html/sample_listbox.png [new file with mode: 0644]
help/html/sample_modal.png [new file with mode: 0644]
help/html/sample_modaless.png [new file with mode: 0644]
help/html/sample_modaless2.png [new file with mode: 0644]
help/html/sample_radiobutton1.png [new file with mode: 0644]
help/html/sample_radiobutton2.png [new file with mode: 0644]
help/html/technote.html [new file with mode: 0644]
help/html/top.html [new file with mode: 0644]
help/html/wsfref.html [new file with mode: 0644]
help/seraphyscriptdialog.hhc [new file with mode: 0644]
sample/About.wsf [new file with mode: 0644]
sample/CalcSample.js [new file with mode: 0644]
sample/FormSample1.vbs [new file with mode: 0644]
sample/FormSample2.vbs [new file with mode: 0644]
sample/GetSpecialFolderPath.wsf [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..9b1c8b1
--- /dev/null
@@ -0,0 +1 @@
+/dist
diff --git a/SeraphyScriptDialog.sln b/SeraphyScriptDialog.sln
new file mode 100644 (file)
index 0000000..3f07166
--- /dev/null
@@ -0,0 +1,30 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SeraphyScriptDialog", "SeraphyScriptDialog\SeraphyScriptDialog.vcproj", "{45020F5C-CD2D-429B-BF1D-4AAAB0674D56}"
+EndProject
+Global
+       GlobalSection(SubversionScc) = preSolution
+               Svn-Managed = True
+               Manager = AnkhSVN - Subversion Support for Visual Studio
+       EndGlobalSection
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Win32 = Debug|Win32
+               Debug|x64 = Debug|x64
+               Release|Win32 = Release|Win32
+               Release|x64 = Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {45020F5C-CD2D-429B-BF1D-4AAAB0674D56}.Debug|Win32.ActiveCfg = Debug|Win32
+               {45020F5C-CD2D-429B-BF1D-4AAAB0674D56}.Debug|Win32.Build.0 = Debug|Win32
+               {45020F5C-CD2D-429B-BF1D-4AAAB0674D56}.Debug|x64.ActiveCfg = Debug|x64
+               {45020F5C-CD2D-429B-BF1D-4AAAB0674D56}.Debug|x64.Build.0 = Debug|x64
+               {45020F5C-CD2D-429B-BF1D-4AAAB0674D56}.Release|Win32.ActiveCfg = Release|Win32
+               {45020F5C-CD2D-429B-BF1D-4AAAB0674D56}.Release|Win32.Build.0 = Release|Win32
+               {45020F5C-CD2D-429B-BF1D-4AAAB0674D56}.Release|x64.ActiveCfg = Release|x64
+               {45020F5C-CD2D-429B-BF1D-4AAAB0674D56}.Release|x64.Build.0 = Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/SeraphyScriptDialog/.gitignore b/SeraphyScriptDialog/.gitignore
new file mode 100644 (file)
index 0000000..205fe45
--- /dev/null
@@ -0,0 +1,2 @@
+/Win32
+/x64
diff --git a/SeraphyScriptDialog/ArrayUtil.cpp b/SeraphyScriptDialog/ArrayUtil.cpp
new file mode 100644 (file)
index 0000000..67a5f0c
--- /dev/null
@@ -0,0 +1,127 @@
+#include "stdafx.h"
+
+#include "ArrayUtil.h"
+
+
+LPCWSTR ArrayUtil::GetNextToken(LPCWSTR pSrc, WCHAR delimiter, BSTR *pRet) throw()
+{
+       ATLASSERT(pRet);
+
+       if (!pSrc) {
+               return NULL;
+       }
+
+       LPCWSTR p = pSrc;
+       while (*p && *p != delimiter) p++;
+       size_t len = p - pSrc;
+
+       if (pRet) {
+               *pRet = SysAllocStringLen(pSrc, static_cast<UINT>(len));
+       }
+
+       if (!*p) {
+               return NULL;
+       }
+       return p + 1;
+}
+
+HRESULT ArrayUtil::DelimitedStringToSafeArray(LPCWSTR pSrc, WCHAR delimiter, VARIANT *pArray) throw()
+{
+       if (!pArray) {
+               return E_POINTER;
+       }
+       VariantInit(pArray);
+       pArray->vt = VT_NULL;
+
+       LPCWSTR p = pSrc;
+       if (p == NULL) {
+               p = L"";
+       }
+
+       // \83g\81[\83N\83\93\82Ì\8cÂ\90\94\82ð\90\94\82¦\82é
+       ULONG count = 0;
+       while (p) {
+               CComBSTR token;
+               p = GetNextToken(p, delimiter, &token);
+               count++;
+       }
+
+       // SAFEARRAY\82ð\8dì\90¬
+       SAFEARRAY* pArr = SafeArrayCreateVector(VT_VARIANT, 0, count);
+       if (pArr == NULL) {
+               // \8am\95Û\82Å\82«\82È\82¢\8fê\8d\87\82Í\82½\82Ô\82ñ\83\81\83\82\83\8a\95s\91«\82®\82ç\82¢?
+               return E_OUTOFMEMORY;
+       }
+       ATLASSERT(pArr->cDims == 1);
+       ATLASSERT(pArr->rgsabound[0].lLbound == 0);
+       ATLASSERT(pArr->rgsabound[0].cElements == count);
+
+       try {
+               p = pSrc;
+               if (p == NULL) {
+                       p = L"";
+               }
+               for (ULONG idx = 0; idx < count; idx++) {
+                       LONG rgIndices[] = {idx};
+
+                       CComVariant tmp;
+
+                       tmp.vt = VT_BSTR;
+                       p = GetNextToken(p, delimiter, &tmp.bstrVal);
+
+                       HRESULT hr = SafeArrayPutElement(pArr, &rgIndices[0], reinterpret_cast<void*>(&tmp));
+                       if (FAILED(hr)) {
+                               AtlThrow(hr);
+                       }
+               }
+
+               pArray->vt = VT_VARIANT | VT_ARRAY;
+               pArray->parray = pArr;
+
+               return S_OK;
+
+       } catch (CAtlException &ex) {
+               SafeArrayDestroy(pArr);
+               return ex.m_hr;
+       }
+}
+
+HRESULT ArrayUtil::GetSafeArrayFromVariant(const VARIANT* pVar, SAFEARRAY **ppSafeArray) throw()
+{
+       if (!ppSafeArray) {
+               return E_POINTER;
+       }
+       *ppSafeArray = NULL;
+
+       // \8eQ\8fÆ\8aO\82µ
+       while (pVar && pVar->vt == (VT_BYREF | VT_VARIANT)) {
+               pVar = pVar->pvarVal;
+       }
+
+       // NULL\94»\92è
+       if (IsNullOrError(pVar)) {
+               // NULL\82Ü\82½\82ÍERROR/EMPTY\82Ì\8fê\8d\87\82Í\81AS_FALSE\82ð\95Ô\82·\81B
+               return S_FALSE;
+       }
+
+       if (!(pVar->vt & VT_ARRAY) && (pVar->vt != VT_SAFEARRAY)) {
+               // SAFEARRAY\94z\97ñ\88È\8aO\82Í\81ADISP_E_TYPEMISMATCH\82ð\95Ô\82·\81B
+               return DISP_E_TYPEMISMATCH;
+       }
+
+       // SAFEARRAY\82ð\8eæ\93¾
+       SAFEARRAY *pSafeArray;
+       if (pVar->vt & VT_BYREF) {
+               pSafeArray = *pVar->pparray;
+       } else {
+               pSafeArray = pVar->parray;
+       }
+       if (!pSafeArray) {
+               return E_INVALIDARG;
+       }
+
+       ATLASSERT(!*ppSafeArray);
+       *ppSafeArray = pSafeArray;
+
+       return S_OK;
+}
diff --git a/SeraphyScriptDialog/ArrayUtil.h b/SeraphyScriptDialog/ArrayUtil.h
new file mode 100644 (file)
index 0000000..1d2a181
--- /dev/null
@@ -0,0 +1,44 @@
+#pragma once
+
+namespace ArrayUtil
+{
+       /**
+        * \8bæ\90Ø\82è\95\8e\9a\82à\82µ\82­\82Í\8ds\96\96\82Ü\82Å\82ð1\82Â\82Ì\83g\81[\83N\83\93\82Æ\82µ\82Ä\95\8e\9a\97ñ\82ð\90Ø\82è\8fo\82µ\81A
+        * \8e\9f\82Ì\83g\81[\83N\83\93\82Ì\90æ\93ª\83|\83C\83\93\83^\82ð\95Ô\82µ\82Ü\82·\81B
+        * \8e\9f\82Ì\83g\81[\83N\83\93\82ª\82È\82¢\8fê\8d\87\82ÍNULL\82ð\95Ô\82µ\82Ü\82·\81B
+        * \82·\82Å\82ÉNULL\82Ì\8fê\8d\87\82Í\89½\82à\82¹\82¸NULL\82ð\95Ô\82µ\82Ü\82·\81B
+        * \92·\82³0\82Ì\8fê\8d\87\82Í\92·\82³0\82Ì\95\8e\9a\97ñ\82ª\95Ô\82³\82ê\81A\96ß\82è\92l\82ÍNULL\82Æ\82È\82è\82Ü\82·\81B
+        * @param pSrc \83g\81[\83N\83\93\82Ì\8aJ\8en\83|\83C\83\93\83^
+        * @param delimiter \8bæ\90Ø\82è\95\8e\9a
+        * @param pRet \90Ø\82è\8fo\82³\82ê\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\81A\96ß\82è\92l\82ªNULL\82Ì\8fê\8d\87\82Í\89e\8b¿\82È\82µ\81B\8ai\94[\95s\97v\82Å\82 \82ê\82ÎNULL\89Â\81B
+        * @return \8e\9f\82Ì\83g\81[\83N\83\93\82Ì\90æ\93ª\83|\83C\83\93\83^\81A\82à\82µ\82­\82ÍNULL
+        */
+       LPCWSTR GetNextToken(LPCWSTR pSrc, WCHAR delimiter, BSTR *pRet) throw();
+
+       /**
+        * \8bæ\90Ø\82è\95\8e\9a\82ð\82à\82Â\95\8e\9a\97ñ\82©\82ç\81A\8bæ\90Ø\82è\95\8e\9a\82²\82Æ\82É\97v\91f\82Æ\82µ\82½\88ê\8e\9f\8c³\94z\97ñ\82ÌSAFEARRAY\82É\95Ï\8a·\82µ\82Ä\95Ô\82µ\82Ü\82·\81B
+        * \94z\97ñ\82Í\95K\82¸\88ê\97v\91f\88È\8fã\82É\82È\82è\82Ü\82·\81B
+        * \8bó\95\8e\9a\82â\81A\8bæ\90Ø\82è\95\8e\9a\82ª\82È\82¢\8fê\8d\87\82Í\81A\82»\82ê\8e©\90g\82ª1\97v\91f\82Ì\94z\97ñ\82Æ\82È\82è\82Ü\82·\81B
+        * @param pSrc \95\8e\9a\97ñ\81ANULL\82Ì\8fê\8d\87\82Í\8bó\95\8e\9a\82Æ\82Ý\82È\82³\82ê\82Ü\82·\81B
+        * @param delimiter \8bæ\90Ø\82è\95\8e\9a
+        * @param pArray \83Z\81[\83t\83A\83\8c\83C\82Ì\8ai\94[\90æ(VARIANT)
+        * @return HRESULT
+        */
+       HRESULT DelimitedStringToSafeArray(LPCWSTR pSrc, WCHAR delimiter, VARIANT *pArray) throw();
+
+       /**
+        * VARIANT\82É\8ai\94[\82³\82ê\82Ä\82¢\82éSAFEARRAY\82Ö\82Ì\83|\83C\83\93\83^\82ð\8eæ\93¾\82µ\81AS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * VARIANT\82ªNULL/ERROR/EMPTY\82Å\82 \82ê\82Î\83|\83C\83\93\83^\82ÍNULL\82ð\8ai\94[\82µ\81AS_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * SAFEARRAY\82ª\8ai\94[\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82ÍDISP_E_TYPEMISMATCH\82ð\95Ô\82µ\82Ü\82·\81B
+        * @param pVar VARIANT\82Ö\82Ì\83|\83C\83\93\83^
+        * @param ppSafeArray \8ai\94[\82·\82éSAFEARRAY*\82Ì\83|\83C\83\93\83^\81BSAFEARRAY\82Å\82È\82¯\82ê\82ÎNULL
+        * @return HRESULT
+        */
+       HRESULT GetSafeArrayFromVariant(const VARIANT* pVar, SAFEARRAY **ppSafeArray) throw();
+
+       /**
+        * SAFEARRAY\82ð\88ê\8e\9f\8c³\94z\97ñ\82Æ\82µ\82Ä\8ew\92è\82µ\82½\83C\83\93\83f\83b\83N\83X
+        */
+       HRESULT GetSafeArrayElement(SAFEARRAY *pSafeArray, LONG idx, BSTR *pRet) throw();
+}
+
diff --git a/SeraphyScriptDialog/CommOpenFileName.cpp b/SeraphyScriptDialog/CommOpenFileName.cpp
new file mode 100644 (file)
index 0000000..f3c20b5
--- /dev/null
@@ -0,0 +1,239 @@
+#include "stdafx.h"
+
+#include "CommOpenFileName.h"
+
+#include <vector>
+
+HRESULT CommonDialogUtil::CommOpenFileName(BOOL bOpenFileMode, VARIANT defaultName, VARIANT filter, VARIANT defaultDir, VARIANT *pSelectedFilePath) throw()
+{
+       if (!pSelectedFilePath) {
+               return E_POINTER;
+       }
+       VariantInit(pSelectedFilePath);
+       pSelectedFilePath->vt = VT_NULL;
+
+       // \83f\83t\83H\83\8b\83g\96¼\82ª\8ew\92è\82³\82ê\82Ä\82¢\82é\8fê\8d\87
+       CComBSTR strDefaultName;
+       if (!IsNullOrError(&defaultName)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &defaultName, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               strDefaultName.Attach(tmp.bstrVal);
+       }
+
+       // \83t\83B\83\8b\83^\82ª\8ew\92è\82³\82ê\82Ä\82¢\82é\8fê\8d\87
+       CComBSTR joinedFilter;
+       CComBSTR baseFilter;
+       if (!IsNullOrError(&filter)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &filter, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               baseFilter.Attach(tmp.bstrVal);
+       }
+
+       // \81u\82·\82×\82Ä\82Ì\83t\83@\83C\83\8b\81v\97p\82Ì\83t\83B\83\8b\83^
+       CComBSTR filterAllFilter;
+       filterAllFilter.LoadString(IDS_FILTER_ALLFILES);
+
+       int lenBaseFilter = baseFilter.Length();
+       int lenAllFilter = filterAllFilter.Length();
+
+       std::vector<OLECHAR> buf(lenBaseFilter + lenAllFilter + 3); // \81u\82·\82×\82Ä\81v\82Ì\90Ú\91±\97p\8bæ\90Ø\82è\82Æ\83_\83u\83\8b\83k\83\8b\8fI\92[\97p\82Å+3
+       OLECHAR *p = &buf[0];
+
+       if (lenBaseFilter > 0) {
+               for (int idx = 0; idx < lenBaseFilter; idx++) {
+                       OLECHAR c = baseFilter[idx];
+                       if (c == '|') {
+                               c = 0;
+                       }
+                       *p++ = c;
+               }
+               *p++ = 0;
+       }
+       if (lenAllFilter > 0) {
+               for (int idx = 0; idx < lenAllFilter; idx++) {
+                       OLECHAR c = filterAllFilter[idx];
+                       if (c == '|') {
+                               c = 0;
+                       }
+                       *p++ = c;
+               }
+       }
+       *p++ = 0;
+       *p++ = 0;
+
+       joinedFilter.Attach(SysAllocStringLen(&buf[0], static_cast<int>(buf.size())));
+
+       // \83f\83t\83H\83\8b\83g\8ag\92£\8eq\82ð\81A\83t\83B\83\8b\83^\82Ì\8dÅ\8f\89\82Ì\8ag\92£\8eq\82©\82ç\93¾\82é
+       CComBSTR defExt;
+       if (joinedFilter.Length() > 0) {
+               LPCWSTR p = joinedFilter;
+               while (*p++);
+               if (*p) {
+                       while (*p && *p != '.') p++;
+                       if (*p == '.') {
+                               if (wcschr(p, '*') == NULL && wcschr(p, '?') == NULL && wcschr(p, ';') == NULL) {
+                                       // \92P\88ê\8a\8e\82Â\8ag\92£\8eq\82É\83\8f\83C\83\8b\83h\83J\81[\83h\82ª\8aÜ\82Ü\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Ì\82Ý\83f\83t\83H\83\8b\83g\82Æ\82µ\82Ä\97L\8cø
+                                       defExt = p + 1;
+                               }
+                       }
+               }
+       }
+
+       // \83f\83t\83H\83\8b\83g\83f\83B\83\8c\83N\83g\83\8a\82ª\8ew\92è\82³\82ê\82Ä\82¢\82é\8fê\8d\87
+       CComBSTR strDefaultDir;
+       if (!IsNullOrError(&defaultDir)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &defaultDir, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       ATLASSERT(tmp.vt == VT_BSTR);
+                       strDefaultDir.Attach(tmp.bstrVal);
+               }
+       }
+
+       TCHAR name[MAX_PATH] = {0};
+       if (strDefaultName.Length() > 0) {
+               lstrcpy(name, strDefaultName);
+       }
+
+       OPENFILENAME ofn = {0};
+       ofn.lStructSize = sizeof(OPENFILENAME);
+       ofn.hwndOwner = ::GetActiveWindow();
+       if (joinedFilter.Length() > 0) {
+               ofn.lpstrFilter = joinedFilter;
+       }
+       ofn.lpstrFile = name;
+       ofn.nMaxFile = MAX_PATH;
+       ofn.Flags = OFN_ENABLESIZING | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
+       if (defExt.Length() > 0) {
+               ofn.lpstrDefExt = defExt;
+       }
+
+       BOOL ret;
+       if (bOpenFileMode) {
+               ret = ::GetOpenFileName(&ofn);
+       } else {
+               ret = ::GetSaveFileName(&ofn);
+       }
+
+       if (ret) {
+               pSelectedFilePath->vt = VT_BSTR;
+               pSelectedFilePath->bstrVal = SysAllocString(ofn.lpstrFile);
+               return S_OK;
+       }
+       return S_FALSE;
+}
+
+namespace // \96³\96¼\96¼\91O\8bó\8aÔ(\82±\82Ì\83\\81[\83X\93à\82Ì\82Ý\97L\8cø)
+{
+       // \83t\83H\83\8b\83_\91I\91ð\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94
+       int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
+       {
+               switch(uMsg)
+               {
+               case BFFM_INITIALIZED :
+                       if (lpData) {
+                               SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
+                       }
+                       break;
+
+               case BFFM_SELCHANGED :
+                       {
+                               LPITEMIDLIST pidl = reinterpret_cast<LPITEMIDLIST>(lParam);
+                               BOOL enabled = FALSE;
+                               if (pidl) {
+                                       TCHAR tmp[MAX_PATH];
+                                       if (SHGetPathFromIDList(pidl, tmp)) {
+                                               enabled = TRUE;
+                                       }
+                               }
+                               SendMessage(hwnd, BFFM_ENABLEOK, 0, enabled);
+                       }
+                       break;
+
+               case BFFM_VALIDATEFAILED :
+                       break;
+
+               default:
+                       break;
+               }
+
+               return 0;
+       }
+}
+
+HRESULT CommonDialogUtil::BrowseForFolder(VARIANT initdir, VARIANT* pSelectedDir) throw()
+{
+       if (!pSelectedDir) {
+               return E_POINTER;
+       }
+       VariantInit(pSelectedDir);
+       pSelectedDir->vt = VT_NULL;
+
+       // \8f\89\8aú\91I\91ð\83f\83B\83\8c\83N\83g\83\8a\82Ì\8ew\92è
+       CComBSTR strInitDir;
+       if (!IsNullOrError(&initdir)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &initdir, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               strInitDir.Attach(tmp.bstrVal);
+       }
+       if (strInitDir.Length() == 0) {
+               // \8ew\92è\82È\82¢\82Æ\82«\82Í\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82Æ\82·\82é
+               TCHAR curdir[MAX_PATH];
+               GetCurrentDirectory(MAX_PATH, curdir);
+               strInitDir = curdir;
+       }
+
+       // \83V\83F\83\8b\82Ì\83A\83\8d\83P\81[\83^
+       CComPtr<IMalloc> pMalloc(NULL);
+       HRESULT hr;
+       if (FAILED(hr = SHGetMalloc(&pMalloc))) {
+               return hr;
+       }
+
+       // \83t\83H\83\8b\83_\91I\91ð\83_\83C\83A\83\8d\83O
+
+       TCHAR buf[MAX_PATH];
+       BROWSEINFO binfo = {0};
+       binfo.hwndOwner = NULL;
+       binfo.pidlRoot = NULL;
+       binfo.pszDisplayName = buf;
+       binfo.lpszTitle = NULL;
+       binfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_SHAREABLE;
+       binfo.lpfn = BrowseCallbackProc;
+       binfo.lParam = reinterpret_cast<LPARAM>(static_cast<LPCWSTR>(strInitDir));
+
+       CComBSTR seldir;
+       LPITEMIDLIST pidlist = SHBrowseForFolder(&binfo);
+       if (pidlist) {
+               TCHAR path[MAX_PATH];
+               if (SHGetPathFromIDList(pidlist, path)) {
+                       seldir = path;
+               }
+               pMalloc->Free(pidlist);
+       }
+
+
+       if (seldir.Length() > 0) {
+               pSelectedDir->vt = VT_BSTR;
+               pSelectedDir->bstrVal = seldir.Detach();
+               return S_OK;
+       }
+
+       return S_FALSE;
+}
diff --git a/SeraphyScriptDialog/CommOpenFileName.h b/SeraphyScriptDialog/CommOpenFileName.h
new file mode 100644 (file)
index 0000000..95a552b
--- /dev/null
@@ -0,0 +1,24 @@
+#pragma once
+
+namespace CommonDialogUtil
+{
+       /**
+        * \83t\83@\83C\83\8b\82ð\8aJ\82­\81^\95Û\91\82·\82é\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é\81B
+        * \83t\83B\83\8b\83^\82É\82Í\8ew\92è\82µ\82½\82à\82Ì\88È\8aO\82É\8dÅ\8cã\82É\82©\82È\82ç\82¸\81u\82·\82×\82Ä\81v\82ª\92Ç\89Á\82³\82ê\82é\81B
+        * @param bOpenFileMode TRUE\82È\82ç\82Î\81u\83t\83@\83C\83\8b\82ð\8aJ\82­\81v\81AFALSE\82È\82ç\82Î\81u\83t\83@\83C\83\8b\82ð\95Û\91\82·\82é\81v\83_\83C\83A\83\8d\83O
+        * @param defaultName \8f\89\8aú\92l
+        * @param filter \83t\83@\83C\83\8b\82Ì\8eí\97Þ\82Ì\83t\83B\83\8b\83^\81A\83p\83C\83v\8bæ\90Ø\82è\82Å\81u\95\\8e¦\96¼|\8ag\92£\8eq\83\8a\83X\83g;...\81v\82ð0\8cÂ\88È\8fã\8ew\92è\82Å\82«\82é\81B
+        * @param defaultDir \8f\89\8aú\83f\83B\83\8c\83N\83g\82è
+        * @param pSelectedFilePath \91I\91ð\82³\82ê\82½\83t\83@\83C\83\8b\96¼(VT_BSTR)\81A\83L\83\83\83\93\83Z\83\8b\82³\82ê\82½\8fê\8d\87\82ÍVT_NULL
+        * @return HRESULT
+        */
+       HRESULT CommOpenFileName(BOOL bOpenFileMode, VARIANT defaultName, VARIANT filter, VARIANT defaultDir, VARIANT *pSelectedFilePath) throw();
+
+       /**
+        * \83t\83H\83\8b\83_\91I\91ð\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é\81B
+        * @param initdir \8f\89\8aú\83f\83B\83\8c\83N\83g\83\8a
+        * @param pSelectedDir \91I\91ð\82³\82ê\82½\83f\83B\83\8c\83N\83g\83\8a(VT_BSTR)\81A\83L\83\83\83\93\83Z\83\8b\82³\82ê\82½\8fê\8d\87\82ÍVT_NULL
+        * @return HRESULT
+        */
+       HRESULT BrowseForFolder(VARIANT initdir, VARIANT* pSelectedDir) throw();
+}
diff --git a/SeraphyScriptDialog/ControlComponent.cpp b/SeraphyScriptDialog/ControlComponent.cpp
new file mode 100644 (file)
index 0000000..92378da
--- /dev/null
@@ -0,0 +1,3018 @@
+#include "stdafx.h"
+
+#include "ControlComponent.h"
+
+#include "ArrayUtil.h"
+#include "CommOpenFileName.h"
+
+#include <vector>
+
+
+// \83_\83~\81[\83R\83\93\83g\83\8d\81[\83\8b\97p
+DummyControlComponent::DummyControlComponent()
+       : ControlComponent()
+{
+}
+
+DummyControlComponent::~DummyControlComponent() throw()
+{
+}
+
+HRESULT DummyControlComponent::Compose(WORD &nChildId, HWND hParent) throw()
+{
+       return S_OK;
+}
+
+HRESULT DummyControlComponent::Destroy(void) throw()
+{
+       return S_OK;
+}
+
+HRESULT DummyControlComponent::HasChildId(WORD childId) throw()
+{
+       return S_FALSE;
+}
+
+HRESULT DummyControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
+
+UINT DummyControlComponent::GetLineCount() throw()
+{
+       return 0;
+}
+
+HRESULT DummyControlComponent::DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw()
+{
+       return S_FALSE;
+}
+
+HRESULT DummyControlComponent::get_Value(BSTR *pValue) throw()
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       *pValue = SysAllocStringLen(NULL, 0);
+
+       return S_FALSE;
+}
+
+HRESULT DummyControlComponent::put_Value(BSTR value) throw()
+{
+       return S_FALSE;
+}
+
+HRESULT DummyControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       *pResult = VARIANT_FALSE;
+
+       return S_FALSE;
+}
+
+HRESULT DummyControlComponent::get_Enable(VARIANT_BOOL *pEnabled) throw()
+{
+       if (!pEnabled) {
+               return E_POINTER;
+       }
+
+       *pEnabled = VARIANT_TRUE;
+
+       return S_FALSE;
+}
+
+HRESULT DummyControlComponent::put_Enable(VARIANT_BOOL enabled) throw()
+{
+       return S_FALSE;
+}
+
+/**
+ * \83R\83\93\83|\81[\83l\83\93\83g\82ð\8d\\92z\82µ\82Ü\82·\81B
+ * @param ppComponent \8ai\94[\90æ\83|\83C\83\93\83^
+ * @return HRESULT
+ */
+HRESULT DummyControlComponent::Create(ControlComponent **ppComponent) throw()
+{
+       if (!ppComponent) {
+               return E_POINTER;
+       }
+       ATLASSERT(!*ppComponent);
+
+       *ppComponent = new DummyControlComponent();
+
+       return S_OK;
+}
+
+
+
+
+// \83\89\83x\83\8b\97p
+LabelControlComponent::LabelControlComponent()
+
+: ControlComponent()
+       , m_hWnd(NULL)
+       , m_enabled(VARIANT_TRUE)
+{
+}
+
+LabelControlComponent::~LabelControlComponent() throw()
+{
+       ATLASSERT(m_hWnd == NULL);
+}
+
+HRESULT LabelControlComponent::Create(BSTR text, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<LabelControlComponent> pLabel(new LabelControlComponent());
+
+       HRESULT hr;
+       if (FAILED(hr = pLabel->put_Value(text))) {
+               return hr;
+       }
+
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pLabel.Detach();
+
+       return S_OK;
+}
+
+UINT LabelControlComponent::GetLineCount() throw()
+{
+       // 1\8ds\8fÁ\94ï
+       return 1;
+}
+
+HRESULT LabelControlComponent::Compose(WORD &nChildId, HWND hParent) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(m_hWnd == NULL);
+       ATLASSERT(nChildId > 0);
+
+       try {
+
+               LPCTSTR caption;
+               if (m_text) {
+                       caption = m_text;
+               } else {
+                       caption = _T("");
+               }
+
+               m_hWnd = CreateWindow(_T("STATIC"), caption,
+                       WS_VISIBLE | WS_CHILD | WS_GROUP | SS_CENTERIMAGE,
+                       0, 0, 0, 0,
+                       hParent, reinterpret_cast<HMENU>(nChildId), NULL, NULL);
+
+               if (m_hWnd == NULL) {
+                       AtlThrowLastWin32();
+               }
+               
+               // \83t\83H\83\93\83g\82Ì\90Ý\92è
+               CWindow wndStatic(m_hWnd);
+               CWindow wndDialog(hParent);
+
+               wndStatic.SetFont(wndDialog.GetFont());
+
+               // \97L\8cø\81E\96³\8cø
+               wndStatic.EnableWindow(m_enabled ? TRUE : FALSE);
+
+       } catch (CAtlException &ex) {
+               Destroy();
+               return ex.m_hr;
+       }
+
+       nChildId++;
+       return S_OK;
+}
+
+HRESULT LabelControlComponent::Destroy(void) throw()
+{
+       if (!::IsWindow(m_hWnd)) {
+               return S_FALSE;
+       }
+
+       DestroyWindow(m_hWnd);
+       m_hWnd = NULL;
+
+       return S_OK;
+}
+
+HRESULT LabelControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       ATLASSERT(HasChildId(childId) == S_OK);
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
+
+HRESULT LabelControlComponent::HasChildId(WORD childId) throw()
+{
+       CWindow labelWnd(m_hWnd);
+       if (labelWnd.IsWindow()) {
+               if (childId == labelWnd.GetWindowLong(GWL_ID)) {
+                       return S_OK;
+               }
+       }
+       return S_FALSE;
+}
+
+HRESULT LabelControlComponent::DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(::IsWindow(m_hWnd));
+
+       SetWindowPos(m_hWnd, NULL,
+               rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,
+               SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+
+       return S_OK;
+}
+
+HRESULT LabelControlComponent::get_Value(BSTR *pValue) throw()
+{
+       return m_text.CopyTo(pValue);
+}
+
+HRESULT LabelControlComponent::put_Value(BSTR value)
+{
+       m_text = value;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       if (::IsWindow(m_hWnd)) {
+               if (value) {
+                       ::SetWindowText(m_hWnd, value);
+               } else {
+                       ::SetWindowText(m_hWnd, _T(""));
+               }
+       }
+
+       return S_OK;
+}
+
+HRESULT LabelControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \83\89\83x\83\8b\82ÍGUI\82Å\95Ï\8dX\82³\82ê\82È\82¢\82Ì\82Å\8fí\82ÉFALSE\82Æ\82·\82é\81B
+       *pResult = VARIANT_FALSE;
+
+       return S_FALSE;
+}
+
+HRESULT LabelControlComponent::get_Enable(VARIANT_BOOL *pEnabled) throw()
+{
+       if (!pEnabled) {
+               return E_POINTER;
+       }
+
+       *pEnabled = m_enabled;
+
+       return S_OK;
+}
+
+HRESULT LabelControlComponent::put_Enable(VARIANT_BOOL enabled) throw()
+{
+       m_enabled = enabled;
+
+       if (::IsWindow(m_hWnd)) {
+               CWindow wndStatic(m_hWnd);
+               wndStatic.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+
+       return S_OK;
+}
+
+
+// \83G\83f\83B\83b\83g\83{\83b\83N\83X\97p
+
+MultiEditControlComponent::MultiEditControlComponent()
+       : ControlComponent()
+       , m_hLabelWnd(NULL)
+       , m_hEditWnd(NULL)
+       , m_lineCount(1)
+       , m_enabled(VARIANT_TRUE)
+{
+}
+
+MultiEditControlComponent::~MultiEditControlComponent() throw()
+{
+       ATLASSERT(m_hEditWnd == NULL);
+       ATLASSERT(m_hLabelWnd == NULL);
+}
+
+HRESULT MultiEditControlComponent::InitInstance(VARIANT title, VARIANT initValue, VARIANT multiline) throw()
+{
+       // \83^\83C\83g\83\8b\82Ì\8eæ\93¾
+       m_label.Empty();
+       if (!IsNullOrError(&title)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &title, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_label.Attach(tmp.bstrVal);
+       }
+
+       // \8f\89\8aú\92l\82Ì\8eæ\93¾
+       m_value.Empty();
+       if (!IsNullOrError(&initValue)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &initValue, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_value.Attach(tmp.bstrVal);
+       }
+       m_initValue = m_value;
+
+       // \8ds\90\94\82Ì\8eæ\93¾
+       m_lineCount = 1; // \8aù\92è\82Í1\8ds
+       if (!IsNullOrError(&multiline)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &multiline, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+               if (tmp.iVal > 1) {
+                       // 1\88È\89º\82Í1\82Æ\82Ý\82È\82·\81B\82»\82ê\88È\8fã\82Ì\8fê\8d\87\82Ì\82Ý\83Z\83b\83g
+                       m_lineCount = tmp.iVal;
+               }
+       }
+
+       return S_OK;
+}
+
+HRESULT MultiEditControlComponent::Create(VARIANT title, VARIANT initValue, VARIANT multiline, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<MultiEditControlComponent> pEditCompo(new MultiEditControlComponent());
+
+       HRESULT hr = pEditCompo->InitInstance(title, initValue, multiline);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pEditCompo.Detach();
+
+       return S_OK;
+}
+
+UINT MultiEditControlComponent::GetLineCount() throw()
+{
+       return m_lineCount;
+}
+
+HRESULT MultiEditControlComponent::Compose(WORD &nChildId, HWND hParent) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(m_hLabelWnd == NULL);
+       ATLASSERT(m_hEditWnd == NULL);
+
+       WORD tempChildId = nChildId;
+       try {
+               // \83\89\83x\83\8b\95\8e\9a\97ñ\82ª\8bó\82Ü\82½\82ÍNULL\82Å\82È\82¯\82ê\82Î\83\89\83x\83\8b\82Ì\8d\\92z
+               if (m_label.Length() > 0) {
+                       m_hLabelWnd = CreateWindow(_T("STATIC"), m_label,
+                               WS_VISIBLE | WS_GROUP | WS_CHILD | SS_RIGHT | SS_CENTERIMAGE,
+                               0, 0, 0, 0,
+                               hParent, reinterpret_cast<HMENU>(tempChildId), NULL, NULL);
+
+                       if (m_hLabelWnd == NULL) {
+                               AtlThrowLastWin32();
+                       }
+                       tempChildId++;
+               }
+
+               // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\83^\83C\83v
+               DWORD dwEditStyle;
+               if (m_lineCount > 1) {
+                       // \95¡\90\94\8ds
+                       dwEditStyle = ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN;
+               } else {
+                       // \92P\88ê\8ds
+                       dwEditStyle = 0;
+               }
+               dwEditStyle |= ES_AUTOHSCROLL | WS_TABSTOP | WS_CHILD | WS_VISIBLE;
+
+               // \83\89\83x\83\8b\82ª\82È\82¯\82ê\82ÎEDIT\82É\83O\83\8b\81[\83v\8aJ\8en\82ð\8ew\92è
+               if (!::IsWindow(m_hLabelWnd)) {
+                       dwEditStyle |= WS_GROUP;
+               }
+               
+               // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\8d\\92z
+               m_hEditWnd = CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), // Ver1\82Å\82ÍWS_EX_OVERLAPPEDWINDOW\82ª\8ew\92è\82³\82ê\82Ä\82¢\82½
+                       _T(""), dwEditStyle,
+                       0, 0, 0, 0,
+                       hParent, reinterpret_cast<HMENU>(tempChildId), NULL, NULL);
+               if (m_hEditWnd == NULL) {
+                       AtlThrowLastWin32();
+               }
+               tempChildId++;
+
+               // \83e\83L\83X\83g\82Ì\90Ý\92è
+               HRESULT hr = SetUIValue();
+               if (FAILED(hr)) {
+                       AtlThrow(hr);
+               }
+
+               // \83t\83H\83\93\83g\82Ì\90Ý\92è
+
+               CWindow wndDialog(hParent);
+
+               if (::IsWindow(m_hLabelWnd)) {
+                       CWindow wndLabel(m_hLabelWnd);
+                       wndLabel.SetFont(wndDialog.GetFont());
+               }
+
+               CWindow wndEdit(m_hEditWnd);
+               wndEdit.SetFont(wndDialog.GetFont());
+
+               // \97L\8cø\81E\96³\8cø\82Ì\90Ý\92è
+
+               if (::IsWindow(m_hLabelWnd)) {
+                       CWindow wndLabel(m_hLabelWnd);
+                       wndLabel.EnableWindow(m_enabled ? TRUE : FALSE);
+               }
+               wndEdit.EnableWindow(m_enabled ? TRUE : FALSE);
+
+       } catch (CAtlException &ex) {
+
+               Destroy();
+
+               return ex.m_hr;
+       }
+
+       nChildId = tempChildId;
+       return S_OK;
+}
+
+HRESULT MultiEditControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       ATLASSERT(HasChildId(childId) == S_OK);
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
+
+HRESULT MultiEditControlComponent::HasChildId(WORD childId) throw()
+{
+       CWindow labelWnd(m_hLabelWnd);
+       if (labelWnd.IsWindow()) {
+               if (childId == labelWnd.GetWindowLong(GWL_ID)) {
+                       return S_OK;
+               }
+       }
+
+       CWindow editWnd(m_hEditWnd);
+       if (editWnd.IsWindow()) {
+               if (childId == editWnd.GetWindowLong(GWL_ID)) {
+                       return S_OK;
+               }
+       }
+
+       return S_FALSE;
+}
+
+HRESULT MultiEditControlComponent::Destroy(void) throw()
+{
+       if (!m_hLabelWnd && !m_hEditWnd) {
+               return S_FALSE;
+       }
+
+       if (m_hLabelWnd) {
+               DestroyWindow(m_hLabelWnd);
+               m_hLabelWnd = NULL;
+       }
+
+       if (m_hEditWnd) {
+               // \94j\8aü\91O\82É\83e\83L\83X\83g\82ð\8eæ\93¾\82·\82é
+               // (\94j\8aü\8f\88\97\9d\92\86\82Ì\82½\82ß\81A\8eæ\93¾\82É\8e¸\94s\82µ\82Ä\82à\83G\83\89\81[\82É\82Í\82µ\82È\82¢\81B)
+               GetUIValue();
+
+               // \94j\8aü\82·\82é
+               DestroyWindow(m_hEditWnd);
+               m_hEditWnd = NULL;
+       }
+
+       ATLASSERT(m_hEditWnd == NULL);
+       ATLASSERT(m_hLabelWnd == NULL);
+
+       return S_OK;
+}
+
+HRESULT MultiEditControlComponent::DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(::IsWindow(m_hEditWnd));
+
+       LONG width = rect.right - rect.left;
+       LONG height = rect.bottom - rect.top;
+
+       LONG labelWidth = 0;
+       if (::IsWindow(m_hLabelWnd)) {
+               // \83\89\83x\83\8b\82Í\83E\83B\83\93\83h\83E\95\9d\82Ì1/4\82Ì\83T\83C\83Y\82Æ\82·\82é
+               labelWidth = width / 4;
+
+               SetWindowPos(m_hLabelWnd, NULL,
+                       rect.left, rect.top, labelWidth, height,
+                       SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+       }
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\95\9d\82Í\83\89\83x\83\8b\82ð\88ø\82¢\82½\8ec\82è
+       LONG editWidth = width - labelWidth;
+       SetWindowPos(m_hEditWnd, NULL,
+               rect.left + labelWidth, rect.top, editWidth, height,
+               SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+
+       return S_OK;
+}
+
+HRESULT MultiEditControlComponent::get_Value(BSTR *pValue) throw()
+{
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\82Í\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return m_value.CopyTo(pValue);
+}
+
+HRESULT MultiEditControlComponent::put_Value(BSTR value) throw()
+{
+       m_value = value;
+       m_initValue = value;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       HRESULT hr = SetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return S_OK;
+}
+
+HRESULT MultiEditControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\82Í\89æ\96Ê\82Ì\93à\97e\82ð\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       *pResult = (m_value != m_initValue) ? VARIANT_TRUE : VARIANT_FALSE;
+
+       return S_OK;
+}
+
+HRESULT MultiEditControlComponent::get_Enable(VARIANT_BOOL *pEnabled) throw()
+{
+       if (!pEnabled) {
+               return E_POINTER;
+       }
+
+       *pEnabled = m_enabled;
+
+       return S_FALSE;
+}
+
+HRESULT MultiEditControlComponent::put_Enable(VARIANT_BOOL enabled) throw()
+{
+       m_enabled = enabled;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       if (::IsWindow(m_hEditWnd)) {
+               CWindow editWnd(m_hEditWnd);
+               editWnd.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+       if (::IsWindow(m_hLabelWnd)) {
+               CWindow labelWnd(m_hLabelWnd);
+               labelWnd.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+
+       return S_OK;
+}
+
+
+HRESULT MultiEditControlComponent::SetUIValue() throw()
+{
+       CWindow editWnd(m_hEditWnd);
+
+       if (!editWnd.IsWindow()) {
+               // \95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\82Ì\82Å\94½\89f\82µ\82È\82¢\81B
+               return S_FALSE;
+       }
+
+       if (m_value) {
+               if (!editWnd.SetWindowText(m_value)) {
+                       return HRESULT_FROM_WIN32(GetLastError());
+               }
+       } else {
+               if (!editWnd.SetWindowText(L"")) {
+                       return HRESULT_FROM_WIN32(GetLastError());
+               }
+       }
+
+       return S_OK;
+}
+
+HRESULT MultiEditControlComponent::GetUIValue() throw()
+{
+       CWindow editWnd(m_hEditWnd);
+
+       if (!editWnd.IsWindow()) {
+               // \95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\82Ì\82Å\8eæ\93¾\82µ\82È\82¢
+               return S_FALSE;
+       }
+       
+       CComBSTR newValue;
+       if (!editWnd.GetWindowText(&newValue)) {
+               // \83e\83L\83X\83g\82ð\8eæ\93¾\82Å\82«\82È\82¢\83P\81[\83X\82Í\81A\82¨\82»\82ç\82­\83\81\83\82\83\8a\95s\91«\82®\82ç\82¢?
+               return HRESULT_FROM_WIN32(GetLastError());
+       }
+
+       m_value = newValue;
+
+       return S_OK;
+}
+
+
+// \83R\83}\83\93\83h\83{\83^\83\93\97p
+
+CommandButtonControlComponent::CommandButtonControlComponent()
+{
+}
+
+CommandButtonControlComponent::~CommandButtonControlComponent() throw()
+{
+}
+
+HRESULT CommandButtonControlComponent::InitInstance(BSTR title, SHORT startEventCode) throw()
+{
+       LPCWSTR p = title;
+       if (p == NULL) {
+               p = L"";
+       }
+
+       SHORT eventCode = startEventCode;
+
+       m_buttons.RemoveAll();
+       while (p) {
+               CAutoPtr<CommandButtonInfo> pCmdBtn(new CommandButtonInfo());
+
+               p = ArrayUtil::GetNextToken(p, ';', &pCmdBtn->caption);
+
+               pCmdBtn->eventId = eventCode++;
+               pCmdBtn->hWnd = NULL;
+
+               m_buttons.Add(pCmdBtn);
+       }
+
+       ATLASSERT(m_buttons.GetCount() > 0);
+
+       return S_OK;
+}
+
+HRESULT CommandButtonControlComponent::Create(BSTR title, SHORT startEventCode, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<CommandButtonControlComponent> pCommandButton(new CommandButtonControlComponent());
+
+       HRESULT hr;
+       if (FAILED(hr = pCommandButton->InitInstance(title, startEventCode))) {
+               return hr;
+       }
+
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pCommandButton.Detach();
+
+       return S_OK;
+}
+
+HWND CommandButtonControlComponent::CreateButton(HWND hParent, LPCTSTR caption, WORD nStartChildId, WORD offset) throw()
+{
+       DWORD dwStyle = 0;
+       if (offset == 0) {
+               dwStyle |= WS_GROUP;
+       }
+       HWND hWnd = ::CreateWindow(_T("BUTTON"), 
+               caption,
+               BS_PUSHBUTTON | WS_TABSTOP | WS_CHILD | WS_VISIBLE | dwStyle,
+               0, 0, 0, 0,
+               hParent, reinterpret_cast<HMENU>(nStartChildId + offset), NULL, NULL);
+       return hWnd;
+}
+
+HRESULT CommandButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       ATLASSERT(HasChildId(childId) == S_OK);
+
+       size_t mx = m_buttons.GetCount();
+       for (size_t idx = 0; idx < mx; idx++) {
+               CWindow wnd(m_buttons.GetAt(idx)->hWnd);
+               if (wnd.IsWindow()) {
+                       if (wnd.GetWindowLong(GWL_ID) == childId) {
+                               *pEventId = m_buttons.GetAt(idx)->eventId;
+                               return S_OK;
+                       }
+               }
+       }
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
+
+HRESULT CommandButtonControlComponent::get_Value(BSTR *pValue) throw()
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       // \83{\83^\83\93\82É\82Í\92l\82Í\82È\82¢\82Ì\82Å\8fí\82É\8bó\82ð\95Ô\82·\81B
+       *pValue = SysAllocStringLen(NULL, 0);
+
+       return S_OK;
+}
+
+HRESULT CommandButtonControlComponent::put_Value(BSTR value) throw()
+{
+       // \83{\83^\83\93\82É\82Í\92l\82Í\82È\82¢\82Ì\82Å\8fí\82É\96³\8e\8b\82³\82ê\82é\81B
+       return S_FALSE;
+}
+
+HRESULT CommandButtonControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \83R\83}\83\93\83h\83{\83^\83\93\82Í\8fí\82É\81u\95Ï\8dX\82È\82µ\81v\82ð\95Ô\82·\81B
+       *pResult = VARIANT_FALSE;
+
+       return S_FALSE;
+}
+
+
+// \83`\83F\83b\83N\83{\83b\83N\83X\97p
+
+CheckButtonControlComponent::CheckButtonControlComponent()
+{
+}
+
+CheckButtonControlComponent::~CheckButtonControlComponent() throw()
+{
+}
+
+HRESULT CheckButtonControlComponent::InitInstance(BSTR title, VARIANT initValue, VARIANT mode) throw()
+{
+       // \90\82\92¼\83\82\81[\83h\82Ì\94»\92è
+       SetVerticalMode(mode);
+
+       // \83{\83^\83\93\82Ì\8d\\92z
+
+       LPCWSTR p = title;
+       if (p == NULL) {
+               p = L"";
+       }
+
+       m_buttons.RemoveAll();
+       while (p) {
+               CAutoPtr<CheckboxInfo> pCmdBtn(new CheckboxInfo());
+
+               p = ArrayUtil::GetNextToken(p, ';', &pCmdBtn->caption);
+
+               pCmdBtn->hWnd = NULL;
+
+               m_buttons.Add(pCmdBtn);
+       }
+
+       ATLASSERT(m_buttons.GetCount() > 0);
+
+
+       // \8f\89\8aú\8fó\91Ô
+
+       if (!IsNullOrError(&initValue)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &initValue, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_initValue.Attach(tmp.bstrVal);
+               m_value = m_initValue;
+
+       } else {
+               // \8fÈ\97ª\8e\9e\82Í\8bó\81B
+               m_initValue.Empty();
+               m_value.Empty();
+       }
+
+       return S_OK;
+}
+
+HRESULT CheckButtonControlComponent::Create(BSTR title, VARIANT initValue, VARIANT mode, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<CheckButtonControlComponent> pCheckboxButton(new CheckButtonControlComponent());
+
+       HRESULT hr;
+       if (FAILED(hr = pCheckboxButton->InitInstance(title, initValue, mode))) {
+               return hr;
+       }
+
+       // \8am\92è
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pCheckboxButton.Detach();
+
+       return S_OK;
+}
+
+HWND CheckButtonControlComponent::CreateButton(HWND hParent, LPCTSTR caption, WORD nStartChildId, WORD offset) throw()
+{
+       // \92\8d\88Ó: \90\82\92¼\81E\90\85\95½\82É\82æ\82è\8d\\92z\82·\82é\83X\83^\83C\83\8b\82ª\88Ù\82È\82é\82Ì\82Å
+       // \90æ\82Ém_vertical\83t\83\89\83O\82ªtrue/false\82Ì\82¢\82¸\82ê\82©\82É\90Ý\92è\82³\82ê\82Ä\82¢\82é\95K\97v\82ª\82 \82é\81B
+       DWORD dwStyle = 0;
+       if (!m_vertical) {
+               dwStyle |= BS_PUSHLIKE;
+       }
+       if (offset == 0) {
+               dwStyle |= WS_GROUP;
+       }
+
+       HWND hWnd = ::CreateWindow(_T("BUTTON"), 
+               caption,
+               BS_AUTOCHECKBOX | WS_TABSTOP | WS_TABSTOP | WS_CHILD | WS_VISIBLE | dwStyle,
+               0, 0, 0, 0,
+               hParent, reinterpret_cast<HMENU>(nStartChildId + offset), NULL, NULL);
+       return hWnd;
+}
+
+HRESULT CheckButtonControlComponent::get_Value(BSTR *pValue) throw()
+{
+       // \83`\83F\83b\83N\8fó\91Ô\82ð\8eæ\93¾\82·\82é
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return m_value.CopyTo(pValue);
+}
+
+HRESULT CheckButtonControlComponent::put_Value(BSTR value) throw()
+{
+       m_value = value;
+       m_initValue = value;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       HRESULT hr = SetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return S_OK;
+}
+
+HRESULT CheckButtonControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\82Í\89æ\96Ê\82Ì\93à\97e\82ð\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \8f\89\8aú\92l\82Í\8fÈ\97ª\89Â\94\\82Å\82 \82è\81A\89ß\95s\91«\82ª\82 \82è\82¦\82é\81B
+       // \89æ\96Ê\95\\8e¦\8cã\82É\83X\83e\81[\83^\83X\82ð\8eæ\93¾\82µ\82½\8fê\8d\87\82É\82Í
+       // \8c»\8dÝ\92l(m_value)\82Ì\82Ù\82¤\82ª\90³\8bK\89»\82³\82ê\89ß\95s\91«\82È\82¢\8fó\91Ô\82É\82È\82é\82½\82ß\81Am_value\82ð\8bì\93®\91¤\82Æ\82·\82é\81B
+       // Ver1\82Å\82Í\92P\8f\83\82É\8f\89\8aú\92l\82Æ\8c»\8dÝ\92l\82Ì\95\8e\9a\97ñ\82ð\94ä\8ar\82µ\82Ä\82¢\82½\82½\82ß
+       // \93¯\82\8fó\91Ô\82ð\88Ó\96¡\82µ\82Ä\82¢\82Ä\82à\95Ï\8dX\82 \82è\82Æ\8c©\82È\82·\82±\82Æ\82ª\82 \82Á\82½\81B
+
+       UINT mx = m_value.Length();
+       UINT len = m_initValue.Length();
+       VARIANT_BOOL modified = VARIANT_FALSE;
+
+       for (UINT idx = 0; idx < mx; idx++) {
+               WCHAR c1 = m_value[idx];
+               if (c1 < '0' || c1 > '2') {
+                       // 0,1,2\88È\8aO\82Ì\92l\82Í0\82Æ\8c©\82È\82·
+                       c1 = '0';
+               }
+               if (c1 == '2') {
+                       // BST_INDETERMINATE\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\82Ì\82Å\81B
+                       c1 = '1';
+               }
+               WCHAR c2 = '0'; // \95s\91«\8e\9e\82Í0\82Æ\82Ý\82È\82·\81B
+               if (idx < len) {
+                       c2 = m_initValue[idx];
+                       if (c2 < '0' || c2 > '2') {
+                               // 0,1,2\88È\8aO\82Ì\92l\82Í0\82Æ\8c©\82È\82·
+                               c2 = '0';
+                       }
+               }
+               if (c2 == '2') {
+                       // BST_INDETERMINATE\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\82Ì\82Å\81B
+                       c2 = '1';
+               }
+               if (c1 != c2) {
+                       modified = VARIANT_TRUE;
+                       break;
+               }
+       }
+
+       *pResult = modified;
+
+       return S_OK;
+}
+
+HRESULT CheckButtonControlComponent::GetUIValue() throw()
+{
+       size_t mx = m_buttons.GetCount();
+       ATLASSERT(mx > 0);
+
+       std::vector<WCHAR> status(mx + 1); // \8fI\92[\82Ì\83[\83\8d\82ð\8aÜ\82Þ
+
+       try {
+               for (size_t idx = 0; idx < mx; idx++) {
+                       CAutoPtr<CheckboxInfo> &pCheckboxInfo = m_buttons.GetAt(idx);
+
+                       CWindow checkbox(pCheckboxInfo->hWnd);
+                       if (!checkbox.IsWindow()) {
+                               // \83E\83B\83\93\83h\83E\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82·\81B
+                               return S_FALSE;
+                       }
+
+                       // \83`\83F\83b\83N\8fó\91Ô\82ð\96â\82¢\8d\87\82í\82¹\82é
+                       LRESULT ret = checkbox.SendMessage(BM_GETCHECK);
+                       WCHAR ch;
+                       if (ret == BST_UNCHECKED) {
+                               ch = '0';
+                       } else if (ret == BST_CHECKED) {
+                               ch = '1';
+                       } else if (ret == BST_INDETERMINATE) {
+                               // \92\8d\88Ó: \8c»\8dÝ\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81B
+                               ch = '2';
+                       } else {
+                               // \83G\83\89\81[(0)\82Ì\8fê\8d\87
+                               AtlThrow(E_FAIL);
+                       }
+
+                       status[idx] = ch;
+               }
+               status[mx] = 0;
+
+               // BSTR\82É\95Ï\8a·\82µ\82Ä\8ai\94[\81B
+               HRESULT hr;
+               m_value.Empty();
+               if (FAILED(hr = m_value.Append(&status[0], static_cast<int>(mx)))) {
+                       // \83\81\83\82\83\8a\95s\91«?
+                       AtlThrow(hr);
+               }
+
+               return S_OK;
+
+       } catch (CAtlException &ex) {
+               return ex.m_hr;
+       }
+}
+
+HRESULT CheckButtonControlComponent::SetUIValue() throw()
+{
+       size_t mx = m_buttons.GetCount();
+       ATLASSERT(mx > 0);
+
+       size_t len = m_value.Length();
+
+       try {
+               for (size_t idx = 0; idx < mx; idx++) {
+                       
+                       // \8ae\90Ý\92è\92l\82Ì\93Ç\82Ý\8eæ\82è
+                       // \83`\83F\83b\83N\83{\83b\83N\83X\82Ì\8cÂ\90\94\82æ\82è\82à\90Ý\92è\92l\82ª\95s\91«\82µ\82Ä\82¢\82é\8fê\8d\87\81A
+                       // \82à\82µ\82­\82Í\90\94\92l\82Ì\94Í\88Í\82ª0\81`2\82Ì\94Í\88Í\82É\82È\82¢\8fê\8d\87\82Í0\82Æ\82Ý\82È\82·\81B
+                       WPARAM state = BST_UNCHECKED;
+                       if (idx < len) {
+                               WCHAR ch = m_value[idx];
+                               if (ch == '0') {
+                                       state = BST_UNCHECKED;
+                               } else if (ch == '1' || ch == '2') {
+                                       // BST_INDETERMINATE(2)\82Í\83T\83|\81[\83g\82µ\82Ä\82¨\82ç\82¸\81ABST_CHECKED\82Æ\93¯\82\81B
+                                       // Ver1\82Å\82Í\81A1\82Ü\82½\82Í2\82ð\8ew\92è\82·\82é\82±\82Æ\82Å\8eÀ\8e¿\93I\82ÉCHECKED\82Æ\82È\82Á\82Ä\82¢\82½\82½\82ß\81B
+                                       state = BST_CHECKED;
+                               }
+                       }
+
+                       CAutoPtr<CheckboxInfo> &pCheckboxInfo = m_buttons.GetAt(idx);
+
+                       CWindow checkbox(pCheckboxInfo->hWnd);
+                       if (checkbox.IsWindow()) {
+                               // \83`\83F\83b\83N\8fó\91Ô\82ð\90Ý\92è\82·\82é\81B
+                               checkbox.SendMessage(BM_SETCHECK, state);
+                       }
+               }
+
+               return S_OK;
+
+       } catch (CAtlException &ex) {
+               return ex.m_hr;
+       }
+}
+
+
+
+// \83\89\83W\83I\83{\83b\83N\83X\97p
+
+RadioButtonControlComponent::RadioButtonControlComponent()
+       : m_initValue(-1)
+       , m_value(-1)
+{
+}
+
+RadioButtonControlComponent::~RadioButtonControlComponent() throw()
+{
+}
+
+HRESULT RadioButtonControlComponent::InitInstance(BSTR title, VARIANT initValue, VARIANT mode) throw()
+{
+       // \90\82\92¼\83\82\81[\83h\82Ì\94»\92è
+       SetVerticalMode(mode);
+
+       // \83{\83^\83\93\82Ì\8d\\92z
+
+       LPCWSTR p = title;
+       if (p == NULL) {
+               p = L"";
+       }
+
+       m_buttons.RemoveAll();
+       while (p) {
+               CAutoPtr<RadioInfo> pCmdBtn(new RadioInfo());
+
+               p = ArrayUtil::GetNextToken(p, ';', &pCmdBtn->caption);
+
+               pCmdBtn->hWnd = NULL;
+
+               m_buttons.Add(pCmdBtn);
+       }
+
+       ATLASSERT(m_buttons.GetCount() > 0);
+
+
+       // \8f\89\8aú\8fó\91Ô
+
+       SHORT selectIdx = -1; // \96¢\8ew\92è\8e\9e\82Í\96¢\91I\91ð
+       if (!IsNullOrError(&initValue)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &initValue, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+               selectIdx = tmp.iVal;
+       }
+
+       // \83{\83^\83\93\82Ì\94Í\88Í\8aO\82Ì\8fê\8d\87\82Í\96¢\91I\91ð\82Æ\82·\82é\81B
+       if (m_buttons.GetCount() <= static_cast<size_t>(selectIdx) || selectIdx < 0) {
+               selectIdx = -1;
+       }
+
+       m_initValue = selectIdx;
+       m_value = selectIdx;
+
+       return S_OK;
+}
+
+HRESULT RadioButtonControlComponent::Create(BSTR title, VARIANT initValue, VARIANT mode, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<RadioButtonControlComponent> pRadioButton(new RadioButtonControlComponent());
+
+       HRESULT hr;
+       if (FAILED(hr = pRadioButton->InitInstance(title, initValue, mode))) {
+               return hr;
+       }
+
+       // \8am\92è
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pRadioButton.Detach();
+
+       return S_OK;
+}
+
+HWND RadioButtonControlComponent::CreateButton(HWND hParent, LPCTSTR caption, WORD nStartChildId, WORD offset)
+{
+       // \92\8d\88Ó: \90\82\92¼\81E\90\85\95½\82É\82æ\82è\8d\\92z\82·\82é\83X\83^\83C\83\8b\82ª\88Ù\82È\82é\82Ì\82Å
+       // \90æ\82Ém_vertical\83t\83\89\83O\82ªtrue/false\82Ì\82¢\82¸\82ê\82©\82É\90Ý\92è\82³\82ê\82Ä\82¢\82é\95K\97v\82ª\82 \82é\81B
+       DWORD dwStyle = 0;
+       if (!m_vertical) {
+               dwStyle |= BS_PUSHLIKE;
+       }
+       if (offset == 0) {
+               dwStyle |= WS_GROUP;
+       }
+
+       HWND hWnd = ::CreateWindow(_T("BUTTON"), 
+               caption,
+               BS_AUTORADIOBUTTON | WS_TABSTOP | WS_TABSTOP | WS_CHILD | WS_VISIBLE | dwStyle,
+               0, 0, 0, 0,
+               hParent, reinterpret_cast<HMENU>(nStartChildId + offset), NULL, NULL);
+       return hWnd;
+}
+
+HRESULT RadioButtonControlComponent::get_Value(BSTR *pValue) throw()
+{
+       // \83`\83F\83b\83N\8fó\91Ô\82ð\8eæ\93¾\82·\82é
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       return VarBstrFromI2(m_value, LOCALE_SYSTEM_DEFAULT, 0, pValue);
+}
+
+HRESULT RadioButtonControlComponent::put_Value(BSTR value) throw()
+{
+       SHORT selectIdx = 0;
+       if (::SysStringLen(value) == 0 || FAILED(VarI2FromStr(value, LOCALE_SYSTEM_DEFAULT, LOCALE_NOUSEROVERRIDE, &selectIdx))) {
+               selectIdx = -1;
+       }
+
+       size_t mx = m_buttons.GetCount();
+       if (mx <= static_cast<size_t>(selectIdx) || selectIdx < 0) {
+               selectIdx = -1;
+       }
+
+       m_value = selectIdx;
+       m_initValue = selectIdx;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       HRESULT hr = SetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return S_OK;
+}
+
+HRESULT RadioButtonControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \83`\83F\83b\83N\8fó\91Ô\82ð\8eæ\93¾\82·\82é
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+       
+       // ver1\82Å\82Í\81u\95Ï\8dX\82ª\82È\82¢\8fê\8d\87\82ÍTrue\81v\82Æ\8bt\82É\82È\82Á\82Ä\82¢\82½\81B
+       // \82 \82Ü\82è\82É\82à\92v\96½\93I\82È\82Ì\82Å\8cÝ\8a·\90«\82È\82­\8fC\90³\82µ\82½\81B
+       *pResult = (m_initValue != m_value) ? VARIANT_TRUE : VARIANT_FALSE;
+
+       return S_OK;
+}
+
+HRESULT RadioButtonControlComponent::GetUIValue() throw()
+{
+       bool notComposed = false;
+
+       SHORT selectedIdx = -1; // \82Ç\82±\82É\82à\83`\83F\83b\83N\82ª\82È\82¢\8fê\8d\87\82Í-1
+
+       size_t mx = m_buttons.GetCount();
+       for (size_t idx = 0; idx < mx; idx++) {
+               CAutoPtr<RadioInfo> &pRadioInfo = m_buttons.GetAt(idx);
+               if (!::IsWindow(pRadioInfo->hWnd)) {
+                       notComposed = true;
+                       break;
+               }
+               if (::SendMessage(pRadioInfo->hWnd, BM_GETCHECK, 0, 0)) {
+                       // \8dÅ\8f\89\82É\8c©\82Â\82©\82Á\82½\83`\83F\83b\83N\82³\82ê\82Ä\82¢\82é\83{\83^\83\93\82ð\91I\91ð\82Æ\82Ý\82È\82·\81B
+                       selectedIdx = static_cast<SHORT>(idx);
+                       break;
+               }
+       }
+
+       if (notComposed) {
+               // \83E\83B\83\93\83h\83E\82ª\8d\\92z\82³\82ê\82Ä\82¢\82È\82¢(\82à\82Ì\82ª\82 \82é)
+               return S_FALSE;
+       }
+
+       m_value = selectedIdx;
+
+       return S_OK;
+}
+
+HRESULT RadioButtonControlComponent::SetUIValue() throw()
+{
+       bool notComposed = false;
+
+       size_t mx = m_buttons.GetCount();
+       for (size_t idx = 0; idx < mx; idx++) {
+               CAutoPtr<RadioInfo> &pRadioInfo = m_buttons.GetAt(idx);
+               if (!::IsWindow(pRadioInfo->hWnd)) {
+                       notComposed = true;
+               } else {
+                       WPARAM chk = (m_value == idx) ? BST_CHECKED : BST_UNCHECKED;
+                       ::SendMessage(pRadioInfo->hWnd, BM_SETCHECK, chk, 0);
+               }
+       }
+
+       return notComposed ? S_FALSE : S_OK;
+}
+
+
+
+// \83\8a\83X\83g\83{\83b\83N\83X\97p
+
+ListboxControlComponent::ListboxControlComponent()
+       : ControlComponent()
+       , m_hListWnd(NULL)
+       , m_lineCount(1)
+       , m_enabled(VARIANT_TRUE)
+{
+}
+
+ListboxControlComponent::~ListboxControlComponent() throw()
+{
+       ATLASSERT(m_hListWnd == NULL);
+}
+
+HRESULT ListboxControlComponent::InitInstance(VARIANT listValues, VARIANT initValues, VARIANT numberOfLines, VARIANT multiSelMode) throw()
+{
+       HRESULT hr;
+
+       // \95\\8e¦\93à\97e\82Ì\8eæ\93¾
+       hr = InitItems(listValues);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \8f\89\8aú\92l\82Ì\8eæ\93¾
+       m_initValue.Empty();
+       m_value.Empty();
+       if (!IsNullOrError(&initValues)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               hr = VariantChangeType(&tmp, &initValues, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_initValue.Attach(tmp.bstrVal);
+               m_value = m_initValue;
+       }
+
+       // \95\\8e¦\8ds\90\94\82Ì\8eæ\93¾
+       UINT lineCount = 1; // \8aù\92è\82Ì\8ds\90\94\82Í1
+       if (!IsNullOrError(&numberOfLines)) {
+               CComVariant tmp;
+               hr = VariantChangeType(&tmp, &numberOfLines, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               if (tmp.iVal > 0) { // \8dÅ\92á1\8ds\82Í\95K\97v\81B
+                       lineCount = tmp.iVal;
+               }
+       }
+       m_lineCount = lineCount;
+
+       // \95¡\90\94\91I\91ð\83\82\81[\83h\82Ì\8eæ\93¾
+       bool msd = false;
+       if (!IsNullOrError(&multiSelMode)) {
+               CComVariant tmp;
+               hr = VariantChangeType(&tmp, &multiSelMode, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               msd = tmp.iVal ? true : false;
+       }
+       m_multiSelMode = msd;
+
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::Create(VARIANT listValues, VARIANT initValue, VARIANT numberOfLines, VARIANT multiSelMode, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<ListboxControlComponent> pRadioButton(new ListboxControlComponent());
+
+       HRESULT hr;
+       hr = pRadioButton->InitInstance(listValues, initValue, numberOfLines, multiSelMode);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \8am\92è
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pRadioButton.Detach();
+
+       return S_OK;
+}
+
+UINT ListboxControlComponent::GetLineCount() throw()
+{
+       return m_lineCount;
+}
+
+HRESULT ListboxControlComponent::Compose(WORD& nChildId, HWND hParent) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(m_hListWnd == NULL);
+
+       WORD tempChildId = nChildId;
+       try {
+
+
+               DWORD dwStyle = 0;
+               if (m_multiSelMode) {
+                       dwStyle |= LBS_EXTENDEDSEL;
+               }
+
+               m_hListWnd = CreateWindow(_T("LISTBOX"), _T(""),
+                       LBS_USETABSTOPS | WS_VSCROLL | WS_BORDER | WS_TABSTOP | WS_GROUP |
+                       LBS_NOINTEGRALHEIGHT | LBS_NOTIFY | WS_VISIBLE | WS_CHILD | dwStyle,
+                       0, 0, 0, 0,
+                       hParent, reinterpret_cast<HMENU>(tempChildId), NULL, NULL);
+
+               if (m_hListWnd == NULL) {
+                       AtlThrowLastWin32();
+               }
+               tempChildId++;
+
+               // \83t\83H\83\93\83g\82Ì\90Ý\92è
+
+               CWindow wndDialog(hParent);
+               CWindow wndList(m_hListWnd);
+               wndList.SetFont(wndDialog.GetFont());
+
+               // \8f\89\8aú\92l\82Ì\90Ý\92è
+               size_t mx = m_items.GetCount();
+               for (size_t idx = 0; idx < mx; idx++) {
+                       CAtlStringW item = m_items.GetAt(idx);
+
+                       // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83e\83L\83X\83g\8ds\82ð\92Ç\89Á
+                       LRESULT pos = wndList.SendMessage(LB_ADDSTRING, 0, reinterpret_cast<LPARAM>(static_cast<LPCTSTR>(item)));
+                       if (pos == LB_ERR || pos == LB_ERRSPACE) {
+                               // \83G\83\89\81[\82à\82µ\82­\82Í\83\81\83\82\83\8a\95s\91«
+                               return E_FAIL;
+                       }
+               }
+
+               // \91I\91ð\8fó\91Ô\82Ì\90Ý\92è
+               HRESULT hr = SetUIValue();
+               if (FAILED(hr)) {
+                       AtlThrow(hr);
+               }
+
+               // \83\8a\83X\83g\82É\95\\8e¦\82³\82ê\82Ä\82¢\82é\83g\83b\83v\8ds\82ð\90æ\93ª\8ds\82É\82 \82í\82¹\82é
+               if (mx > 0) {
+                       wndList.SendMessage(LB_SETTOPINDEX, 0);
+               }
+
+               // \97L\8cø\81E\96³\8cø\82Ì\90Ý\92è
+
+               wndList.EnableWindow(m_enabled ? TRUE : FALSE);
+
+       } catch (CAtlException &ex) {
+
+               Destroy();
+
+               return ex.m_hr;
+       }
+
+       nChildId = tempChildId;
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::HasChildId(WORD childId) throw()
+{
+       CWindow wndList(m_hListWnd);
+       if (wndList.IsWindow()) {
+               if (childId == wndList.GetWindowLong(GWL_ID)) {
+                       return S_OK;
+               }
+       }
+       return S_FALSE;
+}
+
+HRESULT ListboxControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       ATLASSERT(HasChildId(childId) == S_OK);
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
+
+HRESULT ListboxControlComponent::Destroy(void) throw()
+{
+       if (!m_hListWnd) {
+               return S_FALSE;
+       }
+
+       if (m_hListWnd) {
+               // \94j\8aü\91O\82É\91I\91ð\8fó\91Ô\82ð\8eæ\93¾\82·\82é
+               // (\94j\8aü\8f\88\97\9d\92\86\82Ì\82½\82ß\81A\8eæ\93¾\82É\8e¸\94s\82µ\82Ä\82à\83G\83\89\81[\82É\82Í\82µ\82È\82¢\81B)
+               GetUIValue();
+
+               // \94j\8aü\82·\82é
+               DestroyWindow(m_hListWnd);
+               m_hListWnd = NULL;
+       }
+
+       ATLASSERT(m_hListWnd == NULL);
+
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(::IsWindow(m_hListWnd));
+
+       SetWindowPos(m_hListWnd, NULL,
+               rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,
+               SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::get_Value(BSTR *pValue) throw()
+{
+       // \91I\91ð\8fó\91Ô\82ð\8eæ\93¾\82·\82é
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return m_value.CopyTo(pValue);
+}
+
+HRESULT ListboxControlComponent::put_Value(BSTR value) throw()
+{
+       m_value = value;
+       m_initValue = value;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       HRESULT hr = SetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\82Í\89æ\96Ê\82Ì\93à\97e\82ð\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \91I\91ð\8fó\91Ô\82Ì\83C\83\93\83f\83b\83N\83X\82ð\83Z\83~\83R\83\8d\83\93\8bæ\90Ø\82è\82Å\95\8e\9a\97ñ\82Æ\82µ\82Ä\97ñ\8b\93\82·\82é\8c`\8e®\82Å\82 \82è
+       // \83C\83\93\83f\83b\83N\83X\82Ì\8f\87\8f\98\82Í\8f\87\95s\93¯\82Å\82æ\82­\81A\8a\8e\82Â\81A\94Í\88Í\8aO\82Ì\83C\83\93\83f\83b\83N\83X\82Í\96³\8e\8b\82³\82ê\82é\81B
+       // \82æ\82Á\82Ä\97L\8cø\82È\94Í\88Í\82Ì\83C\83\93\83f\83b\83N\83X\82Ì\8fó\91Ô\82ð\83`\83F\83b\83N\82·\82é\82½\82ß\82É\88ê\92[\83}\83b\83v\8c`\8e®\82É
+       // \93W\8aJ\82µ\82Ä\94ä\8ar\82·\82é\81B
+
+       size_t mx = m_items.GetCount();
+
+       if (mx == 0) {
+               // \95\\8e¦\82·\82é\93à\97e\82ª\8bó\82Å\82 \82ê\82Î\8f\89\8aú\92l\82Í\96³\88Ó\96¡\82Å\82 \82é\82½\82ß\94ä\8ar\82à\95s\97v\81B
+               *pResult = VARIANT_FALSE;
+               return S_OK;
+       }
+
+       std::vector<BOOL> initValMap(mx);
+       std::vector<BOOL> valMap(mx);
+
+       GetMarkedMap(m_initValue, !m_multiSelMode, &initValMap[0], mx); // \83T\83C\83Y\82ª0\82Ì\83o\83b\83t\83@\82Ì\83A\83h\83\8c\83X\82Í\82 \82è\82¦\82È\82¢\82Ì\82Å\92\8d\88Ó
+       GetMarkedMap(m_value, false, &valMap[0], mx);
+
+       bool modified = (memcmp(&initValMap[0], &valMap[0], sizeof(BOOL) * mx) != 0);
+
+       *pResult = modified ? VARIANT_TRUE : VARIANT_FALSE;
+
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::get_Enable(VARIANT_BOOL *pEnabled) throw()
+{
+       if (!pEnabled) {
+               return E_POINTER;
+       }
+
+       *pEnabled = m_enabled;
+
+       return S_FALSE;
+}
+
+HRESULT ListboxControlComponent::put_Enable(VARIANT_BOOL enabled) throw()
+{
+       m_enabled = enabled;
+
+       if (::IsWindow(m_hListWnd)) {
+               CWindow wndList(m_hListWnd);
+               wndList.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::GetUIValue() throw()
+{
+       CWindow wndList(m_hListWnd);
+
+       if (!wndList.IsWindow()) {
+               // \95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\82Ì\82Å\94½\89f\82µ\82È\82¢\81B
+               return S_FALSE;
+       }
+
+       size_t mx = m_items.GetCount();
+
+       CComBSTR strIndexes;
+
+       int selectedCount = 0;
+       for (size_t idx = 0; idx < mx; idx++) {
+               LRESULT res = wndList.SendMessage(LB_GETSEL, idx);
+               ATLASSERT(res != LB_ERR);
+               if (res == LB_ERR) {
+                       return E_FAIL;
+               }
+               if (res > 0) {
+                       selectedCount++;
+
+                       CComBSTR tmp;
+                       HRESULT hr = VarBstrFromI4(static_cast<LONG>(idx), LOCALE_SYSTEM_DEFAULT, 0, &tmp);
+                       ATLASSERT(SUCCEEDED(hr));
+                       if (FAILED(hr)) {
+                               // BSTR\8a\84\82è\93\96\82Ä\82Ì\83\81\83\82\83\8a\95s\91«\82Æ\82©?
+                               return hr;
+                       }
+
+                       if (selectedCount > 1) {
+                               strIndexes.Append(L";");
+                       }
+                       strIndexes.Append(tmp);
+               }
+       }
+       
+       if (strIndexes.Length() == 0) {
+               ATLASSERT(selectedCount == 0);
+               strIndexes = L"-1";
+       }
+
+       m_value.Attach(strIndexes.Detach());
+
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::SetUIValue() throw()
+{
+       CWindow wndList(m_hListWnd);
+
+       if (!wndList.IsWindow()) {
+               // \95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\82Ì\82Å\94½\89f\82µ\82È\82¢\81B
+               return S_FALSE;
+       }
+
+
+       // \95\\8e¦\82³\82ê\82Ä\82¢\82é(\82Í\82¸)\82Ì\8cÂ\90\94\82ð\8eæ\93¾\82·\82é\81B
+       size_t mx = m_items.GetCount();
+
+       if (mx == 0) {
+               // (\83A\83C\83e\83\80\82ª\83[\83\8d\8cÂ\82È\82Ì\82Å\81A\82»\82à\82»\82à\91I\91ð\82³\82ê\82Ä\82¢\82é\82Í\82¸\82Í\82È\82¢\82ª)
+               if (!m_multiSelMode) {
+                       // \92P\88ê\91I\91ð\83\82\81[\83h\82Ì\8fê\8d\87
+                       LRESULT res = wndList.SendMessage(LB_SETCURSEL, -1); // set to have no selection.
+                       ATLASSERT(res != LB_ERR);
+
+               } else {
+                       // \95¡\90\94\91I\91ð\83\82\81[\83h\82Ì\8fê\8d\87
+                       LRESULT res = wndList.SendMessage(LB_SETSEL, FALSE, -1); // remove selection from all.
+                       ATLASSERT(res != LB_ERR);
+               }
+               return S_OK;
+       }
+
+       // \91I\91ð\8fó\91Ô\82Æ\82·\82é\83C\83\93\83f\83b\83N\83X\82ð\83}\83b\83v\89»\82·\82é
+       std::vector<BOOL> map(mx);
+       GetMarkedMap(m_value, !m_multiSelMode, &map[0], mx);
+
+       // \83C\83\93\83f\83b\83N\83X\83}\83b\83v\82ð\91\96\8d¸\82µ\82Ä\91I\91ð\82ÌON/OFF\82ð\90Ý\92è\82·\82é\81B
+       for (size_t idx = 0; idx < mx; idx++) {
+               if (!m_multiSelMode) {
+                       // \92P\88ê\91I\91ð\83\82\81[\83h\82Ì\8fê\8d\87
+                       if (map[idx]) {
+                               LRESULT res = wndList.SendMessage(LB_SETCURSEL, idx);
+                               ATLASSERT(res != LB_ERR);
+                       }
+
+               } else {
+                       // \95¡\90\94\91I\91ð\83\82\81[\83h\82Ì\8fê\8d\87
+                       LRESULT res = wndList.SendMessage(LB_SETSEL, map[idx], idx);
+                       ATLASSERT(res != LB_ERR);
+               }
+       }
+
+       return S_OK;
+}
+
+HRESULT ListboxControlComponent::InitItems(VARIANT varList) throw()
+{
+       m_items.RemoveAll();
+       
+       if (IsNullOrError(&varList)) {
+               // \83\8a\83X\83g\82Í\8bó\82Å\82 \82é\81B
+               return S_FALSE;
+       }
+
+       HRESULT hr;
+
+       CComVariant arg;
+       hr = VariantChangeType(&arg, &varList, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+       if (FAILED(hr)) {
+               return hr;
+       }
+       ATLASSERT(arg.vt == VT_BSTR);
+
+       LPCWSTR p = arg.bstrVal;
+       if (p == NULL) {
+               p = L"";
+       }
+
+       while (p && *p) { // *p\82Í\81A\8bó\95\8e\9a\82Ì\8fê\8d\87\82Í\83A\83C\83e\83\80\82È\82µ\82Æ\8c©\82È\82·\82½\82ß\81B
+               CComBSTR itemVal;
+               p = ArrayUtil::GetNextToken(p, ';', &itemVal);
+
+               // \83\8a\83X\83g\82É\93o\98^
+               if (itemVal.Length() > 0) {
+                       m_items.Add(itemVal);
+               } else {
+                       m_items.Add(L"");
+               }
+       }
+
+       return S_OK;
+}
+
+void ListboxControlComponent::GetMarkedMap(LPCWSTR pSrc, bool onlyLastToken, BOOL *pMap, size_t length) throw()
+{
+       // \8cÂ\90\94\83[\83\8d\82Ì\8fê\8d\87\82Í\89½\82à\82µ\82È\82¢\82µ\81A\83|\83C\83\93\83^\82à\88Ó\96¡\82ð\8e\9d\82½\82È\82¢\81B(\8cÂ\90\94\83[\83\8d\82Í\82 \82è\82¦\82é\83P\81[\83X)
+       if (length == 0) {
+               return;
+       }
+
+       // \8f\89\8aú\89»
+       ATLASSERT(pMap);
+       memset(pMap, 0, sizeof(BOOL) * length);
+
+       // \83Z\83~\83R\83\8d\83\93\8bæ\90Ø\95\8e\9a\97ñ\82©\82ç\8cÂ\81X\82Ì\83C\83\93\83f\83b\83N\83X\82ð\8b\81\82ß\82Ä\94z\97ñ\82É\83t\83\89\83O\82ð\82½\82Ä\82é
+       if (pSrc == NULL) {
+               pSrc = L"";
+       }
+       while (pSrc && *pSrc) {
+               CComBSTR strIndex;
+               pSrc = ArrayUtil::GetNextToken(pSrc, ';', &strIndex);
+               if (!onlyLastToken || !pSrc) { // \8dÅ\8cã\82Ì\83g\81[\83N\83\93\82Å\82 \82é\82©\81A\8dÅ\8cã\82Ì\83g\81[\83N\83\93\88È\8aO\82à\97L\8cø\82Å\82 \82é\8fê\8d\87
+                       if (strIndex.Length() > 0) {
+                               LONG markedIndex = 0;
+                               if (SUCCEEDED(VarI4FromStr(strIndex, LOCALE_SYSTEM_DEFAULT, LOCALE_NOUSEROVERRIDE, &markedIndex))) {
+                                       if (markedIndex >= 0 && static_cast<size_t>(markedIndex) < length) {
+                                               pMap[markedIndex] = TRUE;
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
+
+/// \83R\83\93\83{\81^\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\83{\83b\83N\83X\82Ì\8b¤\92Ê\95\94
+
+AbstractComboboxControlComponent::AbstractComboboxControlComponent()
+       : ControlComponent()
+       , m_hLabelWnd(NULL)
+       , m_hComboWnd(NULL)
+       , m_enabled(VARIANT_TRUE)
+{
+}
+
+AbstractComboboxControlComponent::~AbstractComboboxControlComponent() throw()
+{
+       ATLASSERT(m_hLabelWnd == NULL);
+       ATLASSERT(m_hComboWnd == NULL);
+}
+
+HRESULT AbstractComboboxControlComponent::InitInstance(VARIANT title, VARIANT listValues) throw()
+{
+       // \83\89\83x\83\8b\83L\83\83\83v\83V\83\87\83\93\82ð\8eæ\93¾
+       m_label.Empty();
+       if (!IsNullOrError(&title)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &title, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_label.Attach(tmp.bstrVal);
+       }
+
+       // \83\8a\83X\83g\82Ì\8eæ\93¾
+       m_listItems.RemoveAll();
+       if (!IsNullOrError(&listValues)) {
+               CComVariant tmp;
+               HRESULT hr = VariantChangeType(&tmp, &listValues, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+
+               LPCWSTR pSrc = tmp.bstrVal;
+               if (pSrc == NULL) {
+                       pSrc = L"";
+               }
+
+               while (pSrc && *pSrc) { // \8bó\95\8e\9a\82Í\83A\83C\83e\83\80\82È\82µ\82Æ\8c©\82È\82·\82½\82ß
+                       CComBSTR itemVal;
+                       pSrc = ArrayUtil::GetNextToken(pSrc, ';', &itemVal);
+                       if (itemVal.Length() > 0) {
+                               m_listItems.Add(itemVal);
+                       } else {
+                               m_listItems.Add(L"");
+                       }
+               }
+       }
+
+       return S_OK;
+}
+
+UINT AbstractComboboxControlComponent::GetLineCount() throw()
+{
+       // \83R\83\93\83{\83{\83b\83N\83X\82Í\8fí\82É1\8ds\82Ì\82Ý
+       return 1;
+}
+
+HRESULT AbstractComboboxControlComponent::Compose(WORD& nChildId, HWND hParent) throw()
+{
+       ATLASSERT(hParent);
+       ATLASSERT(m_hLabelWnd == NULL);
+       ATLASSERT(m_hComboWnd == NULL);
+
+       WORD tempChildId = nChildId;
+       try {
+               // \83\89\83x\83\8b\95\8e\9a\97ñ\82ª\8bó\82Ü\82½\82ÍNULL\82Å\82È\82¯\82ê\82Î\83\89\83x\83\8b\82Ì\8d\\92z
+               if (m_label.Length() > 0) {
+                       m_hLabelWnd = CreateWindow(_T("STATIC"), m_label,
+                               WS_VISIBLE | WS_GROUP | WS_CHILD | SS_RIGHT | SS_CENTERIMAGE,
+                               0, 0, 0, 0,
+                               hParent, reinterpret_cast<HMENU>(tempChildId), NULL, NULL);
+
+                       if (m_hLabelWnd == NULL) {
+                               AtlThrowLastWin32();
+                       }
+                       tempChildId++;
+               }
+
+               // \83R\83\93\83{\83{\83b\83N\83X\82Ì\83^\83C\83v
+               DWORD dwComboStyle = CBS_AUTOHSCROLL | WS_TABSTOP | WS_CHILD | WS_VISIBLE;
+
+               // \83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\81^\83R\83\93\83{\83{\83b\83N\83X\8cÅ\97L\82Ì\83X\83^\83C\83\8b\82Ì\92Ç\89Á
+               dwComboStyle |= GetComboStyle();
+
+               // \83\89\83x\83\8b\82ª\82È\82¯\82ê\82ÎEDIT\82É\83O\83\8b\81[\83v\8aJ\8en\82ð\8ew\92è
+               if (!::IsWindow(m_hLabelWnd)) {
+                       dwComboStyle |= WS_GROUP;
+               }
+               
+               // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8d\\92z
+               m_hComboWnd = CreateWindowEx(WS_EX_CLIENTEDGE, _T("COMBOBOX"),
+                       _T(""), dwComboStyle,
+                       0, 0, 0, 0,
+                       hParent, reinterpret_cast<HMENU>(tempChildId), NULL, NULL);
+               if (m_hComboWnd == NULL) {
+                       AtlThrowLastWin32();
+               }
+               tempChildId++;
+
+               CWindow wndCombobox(m_hComboWnd);
+
+               // \83\8a\83X\83g\82Ì\90Ý\92è
+               size_t mx = m_listItems.GetCount();
+               for (size_t idx = 0; idx < mx; idx++) {
+                       CAtlStringW listItem = m_listItems.GetAt(idx);
+                       
+                       LRESULT res = wndCombobox.SendMessage(CB_INSERTSTRING,
+                               idx, reinterpret_cast<LPARAM>(static_cast<LPCTSTR>(listItem)));
+                       ATLASSERT(res >= 0);
+                       if (res < 0) {
+                               // CB_ERR or CB_ERRSPACE
+                               return E_FAIL;
+                       }
+               }
+
+               // \83e\83L\83X\83g\82Ì\90Ý\92è
+               HRESULT hr = SetUIValue();
+               if (FAILED(hr)) {
+                       AtlThrow(hr);
+               }
+
+               // \83t\83H\83\93\83g\82Ì\90Ý\92è
+
+               CWindow wndDialog(hParent);
+
+               if (::IsWindow(m_hLabelWnd)) {
+                       CWindow wndLabel(m_hLabelWnd);
+                       wndLabel.SetFont(wndDialog.GetFont());
+               }
+
+               wndCombobox.SetFont(wndDialog.GetFont());
+
+               // \97L\8cø\81E\96³\8cø\82Ì\90Ý\92è
+
+               if (::IsWindow(m_hLabelWnd)) {
+                       CWindow wndLabel(m_hLabelWnd);
+                       wndLabel.EnableWindow(m_enabled ? TRUE : FALSE);
+               }
+               wndCombobox.EnableWindow(m_enabled ? TRUE : FALSE);
+
+       } catch (CAtlException &ex) {
+
+               Destroy();
+
+               return ex.m_hr;
+       }
+
+       nChildId = tempChildId;
+       return S_OK;
+}
+
+HRESULT AbstractComboboxControlComponent::HasChildId(WORD childId) throw()
+{
+       CWindow labelWnd(m_hLabelWnd);
+       if (labelWnd.IsWindow()) {
+               if (childId == labelWnd.GetWindowLong(GWL_ID)) {
+                       return S_OK;
+               }
+       }
+
+       CWindow comboboxWnd(m_hComboWnd);
+       if (comboboxWnd.IsWindow()) {
+               if (childId == comboboxWnd.GetWindowLong(GWL_ID)) {
+                       return S_OK;
+               }
+       }
+
+       return S_FALSE;
+}
+
+HRESULT AbstractComboboxControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       ATLASSERT(HasChildId(childId) == S_OK);
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
+
+HRESULT AbstractComboboxControlComponent::Destroy(void) throw()
+{
+       if (!m_hLabelWnd && !m_hComboWnd) {
+               return S_FALSE;
+       }
+
+       if (m_hLabelWnd) {
+               DestroyWindow(m_hLabelWnd);
+               m_hLabelWnd = NULL;
+       }
+
+       if (m_hComboWnd) {
+               // \94j\8aü\91O\82É\83e\83L\83X\83g\82ð\8eæ\93¾\82·\82é
+               // (\94j\8aü\8f\88\97\9d\92\86\82Ì\82½\82ß\81A\8eæ\93¾\82É\8e¸\94s\82µ\82Ä\82à\83G\83\89\81[\82É\82Í\82µ\82È\82¢\81B)
+               GetUIValue();
+
+               // \94j\8aü\82·\82é
+               DestroyWindow(m_hComboWnd);
+               m_hComboWnd = NULL;
+       }
+
+       ATLASSERT(m_hComboWnd == NULL);
+       ATLASSERT(m_hLabelWnd == NULL);
+
+       return S_OK;
+}
+
+HRESULT AbstractComboboxControlComponent::DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(::IsWindow(m_hComboWnd));
+
+       LONG width = rect.right - rect.left;
+       LONG height = rect.bottom - rect.top;
+
+       LONG labelWidth = 0;
+       if (::IsWindow(m_hLabelWnd)) {
+               // \83\89\83x\83\8b\82Í\83E\83B\83\93\83h\83E\95\9d\82Ì1/4\82Ì\83T\83C\83Y\82Æ\82·\82é
+               labelWidth = width / 4;
+
+               SetWindowPos(m_hLabelWnd, NULL,
+                       rect.left, rect.top, labelWidth, height,
+                       SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+       }
+
+       // \83R\83\93\83{\83{\83b\83N\83X\82Ì\95\9d\82Í\83\89\83x\83\8b\82ð\88ø\82¢\82½\8ec\82è
+       LONG editWidth = width - labelWidth;
+       SetWindowPos(m_hComboWnd, NULL,
+               rect.left + labelWidth, rect.top, editWidth, height,
+               SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+
+       return S_OK;
+}
+
+HRESULT AbstractComboboxControlComponent::get_Enable(VARIANT_BOOL *pEnabled) throw()
+{
+       if (!pEnabled) {
+               return E_POINTER;
+       }
+
+       *pEnabled = m_enabled;
+
+       return S_FALSE;
+}
+
+HRESULT AbstractComboboxControlComponent::put_Enable(VARIANT_BOOL enabled) throw()
+{
+       m_enabled = enabled;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       if (::IsWindow(m_hComboWnd)) {
+               CWindow comboboxWnd(m_hComboWnd);
+               comboboxWnd.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+       if (::IsWindow(m_hLabelWnd)) {
+               CWindow labelWnd(m_hLabelWnd);
+               labelWnd.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+
+       return S_OK;
+}
+
+/// \83R\83\93\83{\83{\83b\83N\83X
+
+ComboboxControlComponent::ComboboxControlComponent()
+       : AbstractComboboxControlComponent()
+{
+}
+
+ComboboxControlComponent::~ComboboxControlComponent() throw()
+{
+}
+
+HRESULT ComboboxControlComponent::InitInstance(VARIANT title, VARIANT initValue, VARIANT listValues) throw()
+{
+       HRESULT hr;
+
+       hr = AbstractComboboxControlComponent::InitInstance(title, listValues);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \8f\89\8aú\92l\82Ì\8eæ\93¾
+       m_initValue.Empty();
+       if (!IsNullOrError(&initValue)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &initValue, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_initValue.Attach(tmp.bstrVal);
+       }
+       m_value = m_initValue;
+
+       return S_OK;
+}
+
+HRESULT ComboboxControlComponent::Create(VARIANT title, VARIANT initValues, VARIANT listValues, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<ComboboxControlComponent> pCombobox(new ComboboxControlComponent());
+
+       HRESULT hr;
+       hr = pCombobox->InitInstance(title, initValues, listValues);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \8am\92è
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pCombobox.Detach();
+
+       return S_OK;
+}
+
+HRESULT ComboboxControlComponent::get_Value(BSTR *pValue) throw()
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       // \89æ\96Ê\82ª\95\\8e¦\92\86\82È\82ç\82ÎUI\82æ\82è\92l\82ð\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return m_value.CopyTo(pValue);
+}
+
+HRESULT ComboboxControlComponent::put_Value(BSTR value) throw()
+{
+       m_initValue = value;
+       m_value = value;
+
+       HRESULT hr = SetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return S_OK;
+}
+
+HRESULT ComboboxControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \89æ\96Ê\82ª\95\\8e¦\92\86\82È\82ç\82ÎUI\82æ\82è\92l\82ð\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       bool modified = (m_initValue != m_value);
+
+       *pResult = modified ? VARIANT_TRUE : VARIANT_FALSE;
+
+       return S_OK;
+}
+
+DWORD ComboboxControlComponent::GetComboStyle() throw()
+{
+       return CBS_DROPDOWN;
+}
+
+HRESULT ComboboxControlComponent::GetUIValue() throw()
+{
+       CWindow wndCombobox(m_hComboWnd);
+
+       if (!wndCombobox.IsWindow()) {
+               return S_FALSE;
+       }
+
+       CComBSTR tmp;
+       if (!wndCombobox.GetWindowText(&tmp)) {
+               return E_OUTOFMEMORY;
+       }
+
+       m_value.Attach(tmp.Detach());
+
+       return S_OK;
+}
+
+HRESULT ComboboxControlComponent::SetUIValue() throw()
+{
+       CWindow wndCombobox(m_hComboWnd);
+
+       if (!wndCombobox.IsWindow()) {
+               return S_FALSE;
+       }
+
+       if (m_value.Length() == 0) {
+               wndCombobox.SetWindowText(L"");
+       } else {
+               wndCombobox.SetWindowText(m_value);
+       }
+
+       return S_OK;
+}
+
+
+/// \83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g
+
+DropdownListControlComponent::DropdownListControlComponent()
+       : AbstractComboboxControlComponent()
+{
+}
+
+DropdownListControlComponent::~DropdownListControlComponent() throw()
+{
+}
+
+HRESULT DropdownListControlComponent::InitInstance(VARIANT title, VARIANT initValue, VARIANT listValues) throw()
+{
+       HRESULT hr;
+
+       hr = AbstractComboboxControlComponent::InitInstance(title, listValues);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \8f\89\8aú\92l\82ð\8eæ\93¾\82·\82é\81B
+
+       m_value = -1;
+       if (!IsNullOrError(&initValue)) {
+               CComVariant tmp;
+               hr = VariantChangeType(&tmp, &initValue, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+
+               hr = GetValue(tmp.bstrVal, &m_value);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+       }
+       m_initValue = m_value;
+
+       return S_OK;
+}
+
+HRESULT DropdownListControlComponent::Create(VARIANT titles, VARIANT initValue, VARIANT listValues, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<DropdownListControlComponent> pDropdown(new DropdownListControlComponent());
+
+       HRESULT hr;
+       hr = pDropdown->InitInstance(titles, initValue, listValues);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \8am\92è
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pDropdown.Detach();
+
+       return S_OK;
+}
+
+HRESULT DropdownListControlComponent::get_Value(BSTR *pValue) throw()
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       // \89æ\96Ê\82ª\95\\8e¦\92\86\82È\82ç\82ÎUI\82æ\82è\8eæ\93¾\82·\82é\81B
+       HRESULT hr;
+       hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \8eæ\93¾\82µ\82½\92l\82ð\95\8e\9a\97ñ\82Æ\82µ\82Ä\95Ô\82·\81B
+       CComBSTR tmp;
+       hr = VarBstrFromI2(m_value, LOCALE_SYSTEM_DEFAULT, LOCALE_NOUSEROVERRIDE, &tmp);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       *pValue = tmp.Detach();
+
+       return S_OK;
+}
+
+HRESULT DropdownListControlComponent::GetValue(LPCWSTR pStr, SHORT *pValue) throw()
+{
+       // \90æ\8ds\82·\82é\8bó\94\92\82Í\93Ç\82Ý\94ò\82Î\82·
+       while (pStr && *pStr == ' ') {
+               pStr++;
+       }
+       // NULL\82Ü\82½\82Í\8bó\95\8e\9a\82Ì\8fê\8d\87\82Í-1\82ð\95Ô\82·\81B
+       if (!pStr || !*pStr) {
+               *pValue = -1;
+               return S_OK;
+       }
+
+       // \95\8e\9a\97ñ\82©\82ç\90\94\92l\82ð\8eæ\93¾\82·\82é\81B
+       SHORT tmp;
+       HRESULT hr;
+       hr = VarI2FromStr(pStr, LOCALE_SYSTEM_DEFAULT, LOCALE_NOUSEROVERRIDE, &tmp);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \95\89\82Ì\92l\82Í-1\82ð\82»\82ë\82¦\82é\81B
+       if (tmp < 0) {
+               tmp = -1;
+       }
+
+       // \83\8a\83X\83g\82æ\82è\82à\91å\82«\82È\92l\82Í\96¢\92è\8b`\82È\82Ì\82Å\91I\91ð\95s\89Â\82Æ\82·\82é\81B
+       size_t mx = m_listItems.GetCount();
+       if (static_cast<size_t>(tmp) >= mx) {
+               tmp = -1;
+       }
+
+       ATLASSERT(pValue);
+       *pValue = tmp;
+
+       return S_OK;
+}
+
+HRESULT DropdownListControlComponent::put_Value(BSTR value) throw()
+{
+       return GetValue(value, &m_value);
+}
+
+HRESULT DropdownListControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \89æ\96Ê\82ª\95\\8e¦\92\86\82È\82ç\82ÎUI\82æ\82è\92l\82ð\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       bool modified = false;
+       if (m_initValue < 0 || m_value < 0) {
+               // \82¢\82¸\82ê\82©\82ª\95\89\82Ì\8fê\8d\87\81A\91o\95û\82Æ\82à\95\89\82Å\82È\82¢\82¯\82ê\82Î\95Ï\8dX\82 \82è
+               modified = !(m_initValue < 0 && m_value < 0);
+       } else {
+               // \82¢\82¸\82ê\82à\90³\82Å\82 \82é\8fê\8d\87\81A\82»\82Ì\92l\82ª\93\99\82µ\82­\82È\82¯\82ê\82Î\95Ï\8dX\82 \82è
+               modified = (m_initValue != m_value);
+       }
+
+       *pResult = modified ? VARIANT_TRUE : VARIANT_FALSE;
+
+       return S_OK;
+}
+
+DWORD DropdownListControlComponent::GetComboStyle() throw()
+{
+       return CBS_DROPDOWNLIST;
+}
+
+HRESULT DropdownListControlComponent::GetUIValue() throw()
+{
+       CWindow wndCombobox(m_hComboWnd);
+
+       if (!wndCombobox.IsWindow()) {
+               return S_FALSE;
+       }
+
+       LRESULT res = wndCombobox.SendMessage(CB_GETCURSEL);
+
+       if (res < 0) {
+               // no item is selected.
+               m_value = -1;
+
+       } else {
+               m_value = static_cast<SHORT>(res);
+       }
+
+       return S_OK;
+}
+
+HRESULT DropdownListControlComponent::SetUIValue() throw()
+{
+       CWindow wndCombobox(m_hComboWnd);
+
+       if (!wndCombobox.IsWindow()) {
+               return S_FALSE;
+       }
+
+       if (m_value < 0) {
+               // remove section and clear edit control
+               wndCombobox.SendMessage(CB_SETCURSEL, -1);
+
+       } else {
+               wndCombobox.SendMessage(CB_SETCURSEL, m_value);
+       }
+
+       return S_OK;
+}
+
+
+/// \83G\83f\83C\83b\83g+\83{\83^\83\93\82Ì\8b¤\92Ê\83N\83\89\83X
+
+AbstractEditButtonControlComponent::AbstractEditButtonControlComponent()
+       : ControlComponent()
+       , m_hLabelWnd(NULL)
+       , m_hEditWnd(NULL)
+       , m_hButtonWnd(NULL)
+       , m_enabled(VARIANT_TRUE)
+{
+}
+
+AbstractEditButtonControlComponent::~AbstractEditButtonControlComponent() throw()
+{
+       ATLASSERT(m_hLabelWnd == NULL);
+       ATLASSERT(m_hEditWnd == NULL);
+       ATLASSERT(m_hButtonWnd == NULL);
+}
+
+HRESULT AbstractEditButtonControlComponent::InitInstance(VARIANT title, VARIANT initValue, VARIANT btnTitle) throw()
+{
+       // \83\89\83x\83\8b\83^\83C\83g\83\8b\82Ì\8eæ\93¾
+       m_label.Empty();
+       if (!IsNullOrError(&title)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &title, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_label.Attach(tmp.bstrVal);
+       }
+
+       // \8f\89\8aú\92l\82Ì\8eæ\93¾
+       m_initValue.Empty();
+       if (!IsNullOrError(&initValue)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &initValue, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_initValue.Attach(tmp.bstrVal);
+       }
+       m_value = m_initValue;
+
+       // \83{\83^\83\93\83^\83C\83g\83\8b\82Ì\8eæ\93¾
+       m_btnLabel.Empty();
+       if (!IsNullOrError(&btnTitle)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &btnTitle, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               m_btnLabel.Attach(tmp.bstrVal);
+       }
+
+       return S_OK;
+}
+
+UINT AbstractEditButtonControlComponent::GetLineCount() throw()
+{
+       // \8fí\82É\88ê\8ds
+       return 1;
+}
+
+HRESULT AbstractEditButtonControlComponent::Compose(WORD& nChildId, HWND hParent) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(m_hLabelWnd == NULL);
+       ATLASSERT(m_hEditWnd == NULL);
+       ATLASSERT(m_hButtonWnd == NULL);
+
+       WORD tempChildId = nChildId;
+       try {
+               // \83\89\83x\83\8b\95\8e\9a\97ñ\82ª\8bó\82Ü\82½\82ÍNULL\82Å\82È\82¯\82ê\82Î\83\89\83x\83\8b\82Ì\8d\\92z
+               if (m_label.Length() > 0) {
+                       m_hLabelWnd = CreateWindow(_T("STATIC"), m_label,
+                               WS_VISIBLE | WS_GROUP | WS_CHILD | SS_RIGHT | SS_CENTERIMAGE,
+                               0, 0, 0, 0,
+                               hParent, reinterpret_cast<HMENU>(tempChildId), NULL, NULL);
+
+                       if (m_hLabelWnd == NULL) {
+                               AtlThrowLastWin32();
+                       }
+                       tempChildId++;
+               }
+
+               // \83\89\83x\83\8b\82ª\82È\82¯\82ê\82ÎEDIT\82É\83O\83\8b\81[\83v\8aJ\8en\82ð\8ew\92è
+               DWORD dwEditStyle = 0;
+               if (!::IsWindow(m_hLabelWnd)) {
+                       dwEditStyle |= WS_GROUP;
+               }
+               
+               // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\8d\\92z
+               m_hEditWnd = CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), // Ver1\82Å\82ÍWS_EX_OVERLAPPEDWINDOW\82ª\8ew\92è\82³\82ê\82Ä\82¢\82½
+                       _T(""), ES_AUTOHSCROLL | WS_TABSTOP | WS_CHILD | WS_VISIBLE | dwEditStyle,
+                       0, 0, 0, 0,
+                       hParent, reinterpret_cast<HMENU>(tempChildId), NULL, NULL);
+               if (m_hEditWnd == NULL) {
+                       AtlThrowLastWin32();
+               }
+               tempChildId++;
+
+               // \83{\83^\83\93\82Ì\8d\\92z
+               LPCTSTR btnCaption;
+               if (m_btnLabel.Length() > 0) {
+                       btnCaption = m_btnLabel;
+               } else {
+                       btnCaption = _T("");
+               }
+               m_hButtonWnd = ::CreateWindow(_T("BUTTON"), 
+                       btnCaption,
+                       BS_PUSHBUTTON | WS_TABSTOP | WS_CHILD | WS_VISIBLE,
+                       0, 0, 0, 0,
+                       hParent, reinterpret_cast<HMENU>(tempChildId), NULL, NULL);
+               if (m_hButtonWnd == NULL) {
+                       AtlThrowLastWin32();
+               }
+               tempChildId++;
+
+               // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82É\83e\83L\83X\83g\82Ì\90Ý\92è
+               HRESULT hr = SetUIValue();
+               if (FAILED(hr)) {
+                       AtlThrow(hr);
+               }
+
+               // \83t\83H\83\93\83g\82Ì\90Ý\92è
+
+               CWindow wndDialog(hParent);
+
+               CWindow wndLabel(m_hLabelWnd);
+               if (wndLabel.IsWindow()) {
+                       wndLabel.SetFont(wndDialog.GetFont());
+               }
+
+               CWindow wndEdit(m_hEditWnd);
+               wndEdit.SetFont(wndDialog.GetFont());
+
+               CWindow wndButton(m_hButtonWnd);
+               wndButton.SetFont(wndDialog.GetFont());
+
+               // \97L\8cø\81E\96³\8cø\82Ì\90Ý\92è
+
+               if (wndLabel.IsWindow()) {
+                       wndLabel.EnableWindow(m_enabled ? TRUE : FALSE);
+               }
+               wndEdit.EnableWindow(m_enabled ? TRUE : FALSE);
+               wndButton.EnableWindow(m_enabled ? TRUE : FALSE);
+
+       } catch (CAtlException &ex) {
+
+               Destroy();
+
+               return ex.m_hr;
+       }
+
+       nChildId = tempChildId;
+       return S_OK;
+}
+
+HRESULT AbstractEditButtonControlComponent::HasChildId(WORD childId) throw()
+{
+       HWND wnds[] = {m_hLabelWnd, m_hEditWnd, m_hButtonWnd};
+
+       for (int idx = 0; idx < 3; idx++) {
+               CWindow wnd(wnds[idx]);
+               if (wnd.IsWindow()) {
+                       if (wnd.GetWindowLong(GWL_ID) == childId) {
+                               return S_OK;
+                       }
+               }
+       }
+
+       return S_FALSE;
+}
+
+HRESULT AbstractEditButtonControlComponent::Destroy(void) throw()
+{
+       bool destroyed = false;
+
+       if (m_hLabelWnd) {
+               DestroyWindow(m_hLabelWnd);
+               m_hLabelWnd = NULL;
+               destroyed = true;
+       }
+
+       if (m_hButtonWnd) {
+               DestroyWindow(m_hButtonWnd);
+               m_hButtonWnd = NULL;
+               destroyed = true;
+       }
+
+       if (m_hEditWnd) {
+               // \94j\8aü\91O\82É\91I\91ð\8fó\91Ô\82ð\8eæ\93¾\82·\82é
+               // (\94j\8aü\8f\88\97\9d\92\86\82Ì\82½\82ß\81A\8eæ\93¾\82É\8e¸\94s\82µ\82Ä\82à\83G\83\89\81[\82É\82Í\82µ\82È\82¢\81B)
+               GetUIValue();
+
+               // \94j\8aü\82·\82é
+               DestroyWindow(m_hEditWnd);
+               m_hEditWnd = NULL;
+               destroyed = true;
+       }
+
+       ATLASSERT(m_hEditWnd == NULL);
+       ATLASSERT(m_hLabelWnd == NULL);
+       ATLASSERT(m_hButtonWnd == NULL);
+
+       return destroyed ? S_OK : S_FALSE;
+}
+
+HRESULT AbstractEditButtonControlComponent::DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw()
+{
+       ATLASSERT(::IsWindow(hParent));
+       ATLASSERT(::IsWindow(m_hEditWnd));
+       ATLASSERT(::IsWindow(m_hButtonWnd));
+
+       LONG width = rect.right - rect.left;
+       LONG height = rect.bottom - rect.top;
+
+       LONG labelWidth = 0;
+       if (::IsWindow(m_hLabelWnd)) {
+               // \83\89\83x\83\8b\82Í\83E\83B\83\93\83h\83E\95\9d\82Ì1/4\82Ì\83T\83C\83Y\82Æ\82·\82é
+               labelWidth = width / 4;
+
+               SetWindowPos(m_hLabelWnd, NULL,
+                       rect.left, rect.top, labelWidth, height,
+                       SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+       }
+
+       // \83{\83^\83\93\95\9d\82Í\83E\83B\83\93\83h\83E\95\9d\82Ì1/5\82Ì\83T\83C\83Y\82Æ\82·\82é\81B
+       LONG buttonWidth = width / 5;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\95\9d\82Í\83\89\83x\83\8b\82Æ\83{\83^\83\93\82ð\88ø\82¢\82½\8ec\82è
+       LONG editWidth = width - labelWidth - buttonWidth;
+       SetWindowPos(m_hEditWnd, NULL,
+               rect.left + labelWidth, rect.top, editWidth, height,
+               SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+
+       // \83{\83^\83\93\82Ì\94z\92u
+       SetWindowPos(m_hButtonWnd, NULL,
+               rect.left + labelWidth + editWidth, rect.top, buttonWidth, height,
+               SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+
+       return S_OK;
+}
+
+HRESULT AbstractEditButtonControlComponent::get_Value(BSTR *pValue) throw()
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return m_value.CopyTo(pValue);
+}
+
+HRESULT AbstractEditButtonControlComponent::put_Value(BSTR value) throw()
+{
+       m_initValue = value;
+       m_value = value;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       HRESULT hr = SetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return S_OK;
+}
+
+HRESULT AbstractEditButtonControlComponent::get_IsModified(VARIANT_BOOL *pResult) throw()
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       HRESULT hr = GetUIValue();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       bool modified = (m_initValue != m_value);       
+
+       *pResult = modified ? VARIANT_TRUE : VARIANT_FALSE;
+
+       return S_OK;
+}
+
+HRESULT AbstractEditButtonControlComponent::get_Enable(VARIANT_BOOL *pEnabled) throw()
+{
+       if (!pEnabled) {
+               return E_POINTER;
+       }
+
+       *pEnabled = m_enabled;
+
+       return S_FALSE;
+}
+
+HRESULT AbstractEditButtonControlComponent::put_Enable(VARIANT_BOOL enabled) throw()
+{
+       m_enabled = enabled;
+
+       // \95\\8e¦\92\86\82Ì\8fê\8d\87\81A\8dX\90V\82·\82é\81B
+       CWindow labelWnd(m_hLabelWnd);
+       CWindow editWnd(m_hEditWnd);
+       CWindow btnWnd(m_hButtonWnd);
+
+       if (editWnd.IsWindow()) {
+               editWnd.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+       if (labelWnd.IsWindow()) {
+               labelWnd.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+       if (btnWnd.IsWindow()) {
+               btnWnd.EnableWindow(m_enabled ? TRUE : FALSE);
+       }
+
+       return S_OK;
+}
+
+HRESULT AbstractEditButtonControlComponent::GetUIValue() throw()
+{
+       CWindow editWnd(m_hEditWnd);
+       if (!editWnd.IsWindow()) {
+               return S_FALSE;
+       }
+       
+       CComBSTR newValue;
+       if (!editWnd.GetWindowText(&newValue)) {
+               // \83e\83L\83X\83g\82ð\8eæ\93¾\82Å\82«\82È\82¢\83P\81[\83X\82Í\81A\82¨\82»\82ç\82­\83\81\83\82\83\8a\95s\91«\82®\82ç\82¢?
+               return HRESULT_FROM_WIN32(GetLastError());
+       }
+
+       m_value = newValue;
+
+       return S_OK;
+}
+
+HRESULT AbstractEditButtonControlComponent::SetUIValue() throw()
+{
+       CWindow editWnd(m_hEditWnd);
+       if (!editWnd.IsWindow()) {
+               return S_FALSE;
+       }
+
+       if (m_value.Length() > 0) {
+               editWnd.SetWindowText(m_value); 
+       } else {
+               editWnd.SetWindowText(L"");
+       }
+
+       return S_OK;
+}
+
+
+// \83G\83f\83B\83b\83g + \83R\83}\83\93\83h\83{\83^\83\93\82Ì\92è\8b`
+
+EditButtonControlComponent::EditButtonControlComponent()
+{
+}
+
+HRESULT EditButtonControlComponent::InitInstance(VARIANT title, VARIANT initValue, VARIANT btnTitle, SHORT eventId) throw()
+{
+       HRESULT hr;
+       
+       hr = AbstractEditButtonControlComponent::InitInstance(title, initValue, btnTitle);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       m_eventId = eventId;
+
+       return S_OK;
+}
+
+HRESULT EditButtonControlComponent::Create(VARIANT title, VARIANT initValue, VARIANT btnTitle, SHORT eventId, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<EditButtonControlComponent> pCommandButton(new EditButtonControlComponent());
+
+       HRESULT hr;
+       if (FAILED(hr = pCommandButton->InitInstance(title, initValue, btnTitle, eventId))) {
+               return hr;
+       }
+
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pCommandButton.Detach();
+
+       return S_OK;
+}
+
+EditButtonControlComponent::~EditButtonControlComponent() throw()
+{
+}
+
+HRESULT EditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       ATLASSERT(HasChildId(childId) == S_OK);
+
+       CWindow wndBtn(m_hButtonWnd);
+       if (wndBtn.IsWindow()) {
+               if (wndBtn.GetWindowLong(GWL_ID) == childId) {
+                       *pEventId = m_eventId;
+                       return S_OK;
+               }
+       }
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
+
+
+// \83G\83f\83B\83b\83g + \83t\83@\83C\83\8b\91I\91ð\83{\83^\83\93\82Ì\92è\8b`
+
+FileEditButtonControlComponent::FileEditButtonControlComponent()
+{
+}
+
+FileEditButtonControlComponent::~FileEditButtonControlComponent() throw()
+{
+}
+
+HRESULT FileEditButtonControlComponent::InitInstance(VARIANT title, VARIANT initValue, VARIANT btnTitle, VARIANT openSaveMode, VARIANT filter) throw()
+{
+       HRESULT hr;
+
+       hr = AbstractEditButtonControlComponent::InitInstance(title, initValue, btnTitle);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \83t\83B\83\8b\83^\82Ì\90Ý\92è
+       m_filter = filter;
+
+       // \8aJ\82­(0)\81E\95Û\91¶(1)\82Ì\8eæ\93¾
+       BOOL openMode = TRUE; // \83f\83t\83H\83\8b\83g\82Í\81u\8aJ\82­\81v
+       if (!IsNullOrError(&openSaveMode)) {
+               CComVariant tmp;
+               hr = VariantChangeType(&tmp, &openSaveMode, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+               openMode = (tmp.iVal == 0) ? TRUE : FALSE; // 0\82È\82ç\82Î\8aJ\82­\81A0\88È\8aO(1)\82È\82ç\82Î\95Û\91\82·\82é
+       }
+
+       m_openMode = openMode;
+
+       return S_OK;
+}
+
+HRESULT FileEditButtonControlComponent::Create(VARIANT title, VARIANT initValue, VARIANT btnTitle,  VARIANT openSaveMode, VARIANT filter, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<FileEditButtonControlComponent> pCommandButton(new FileEditButtonControlComponent());
+
+       HRESULT hr;
+       if (FAILED(hr = pCommandButton->InitInstance(title, initValue, btnTitle, openSaveMode, filter))) {
+               return hr;
+       }
+
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pCommandButton.Detach();
+
+       return S_OK;
+}
+
+HRESULT FileEditButtonControlComponent::Compose(WORD& nChildId, HWND hParent) throw()
+{
+       HRESULT hr = AbstractEditButtonControlComponent::Compose(nChildId, hParent);
+       if (SUCCEEDED(hr)) {
+               // \83t\83@\83C\83\8b\83V\83X\83e\83\80\82Ì\83I\81[\83g\83R\83\93\83v\83\8a\81[\83g\82É\82·\82é\81B
+               ATLASSERT(::IsWindow(m_hEditWnd));
+               SHAutoComplete(m_hEditWnd, SHACF_DEFAULT); // \8e¸\94s\82µ\82Ä\82à\96³\8e\8b\82µ\82Ä\8cp\91±\82·\82é
+       }
+       return hr;
+}
+
+HRESULT FileEditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       ATLASSERT(HasChildId(childId) == S_OK);
+
+       CWindow wndBtn(m_hButtonWnd);
+       if (wndBtn.IsWindow()) {
+               if (wndBtn.GetWindowLong(GWL_ID) == childId) {
+
+                       HRESULT hr;
+
+                       // \95\\8e¦\82³\82ê\82Ä\82¢\82é\82È\82ç\82Î\92l\82ð\8eæ\93¾\82·\82é\81B
+                       hr = GetUIValue();
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+
+                       // \83_\83C\83A\83\8d\83O\82ð\8aJ\82­
+
+                       CComVariant selectedFilePath;
+                       CComVariant defaultDir; // \83f\83t\83H\83\8b\83g\83f\83B\83\8c\83N\83g\83\8a\82Í\96¢\8ew\92è(EMPTY)
+                       CComVariant defaultName(m_value); // \83f\83t\83H\83\8b\83g\96¼\82Í\83{\83b\83N\83X\82Ì\92l
+                       hr = CommonDialogUtil::CommOpenFileName(m_openMode, defaultName, m_filter, defaultDir, &selectedFilePath);
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+                       if (hr == S_OK) {
+                               ATLASSERT(selectedFilePath.vt == VT_BSTR);
+                               m_value = selectedFilePath.bstrVal;
+
+                               // \95\\8e¦\82³\82ê\82Ä\82¢\82é\82È\82ç\82Î\92l\82ð\8dX\90V\82·\82é
+                               hr = SetUIValue();
+                               if (FAILED(hr)) {
+                                       return hr;
+                               }
+                       }
+               }
+       }
+
+       // \8fí\82É\83C\83x\83\93\83g\82Í\94­\90\82µ\82È\82¢\81B
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
+
+// \83G\83f\83B\83b\83g + \83t\83H\83\8b\83_\91I\91ð\83{\83^\83\93\82Ì\92è\8b`
+
+FolderEditButtonControlComponent::FolderEditButtonControlComponent()
+{
+}
+
+FolderEditButtonControlComponent::~FolderEditButtonControlComponent() throw()
+{
+}
+
+HRESULT FolderEditButtonControlComponent::Create(VARIANT title, VARIANT initValue, VARIANT btnTitle, ControlComponent** ppCompo) throw()
+{
+       if (!ppCompo) {
+               return E_POINTER;
+       }
+
+       CAutoPtr<FolderEditButtonControlComponent> pCommandButton(new FolderEditButtonControlComponent());
+
+       HRESULT hr;
+       if (FAILED(hr = pCommandButton->InitInstance(title, initValue, btnTitle))) {
+               return hr;
+       }
+
+       ATLASSERT(!*ppCompo);
+       *ppCompo = pCommandButton.Detach();
+
+       return S_OK;
+}
+
+HRESULT FolderEditButtonControlComponent::Compose(WORD& nChildId, HWND hParent) throw()
+{
+       HRESULT hr = AbstractEditButtonControlComponent::Compose(nChildId, hParent);
+       if (SUCCEEDED(hr)) {
+               // \83t\83@\83C\83\8b\83V\83X\83e\83\80(\83f\83B\83\8c\83N\83g\83\8a\82Ì\82Ý)\82Ì\83I\81[\83g\83R\83\93\83v\83\8a\81[\83g\82É\82·\82é\81B
+               ATLASSERT(::IsWindow(m_hEditWnd));
+               SHAutoComplete(m_hEditWnd, SHACF_FILESYS_DIRS); // \8e¸\94s\82µ\82Ä\82à\96³\8e\8b\82µ\82Ä\8cp\91±\82·\82é
+       }
+       return hr;
+}
+
+HRESULT FolderEditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+{
+       if (!pEventId) {
+               return E_POINTER;
+       }
+
+       ATLASSERT(HasChildId(childId) == S_OK);
+
+       CWindow wndBtn(m_hButtonWnd);
+       if (wndBtn.IsWindow()) {
+               if (wndBtn.GetWindowLong(GWL_ID) == childId) {
+
+                       HRESULT hr;
+
+                       // \95\\8e¦\82³\82ê\82Ä\82¢\82é\82È\82ç\82Î\92l\82ð\8eæ\93¾\82·\82é\81B
+                       hr = GetUIValue();
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+
+                       // \83_\83C\83A\83\8d\83O\82ð\8aJ\82­
+
+                       CComVariant selectedDir;
+                       CComVariant initdir(m_value); // \83f\83t\83H\83\8b\83g\96¼\82Í\83{\83b\83N\83X\82Ì\92l
+                       hr = CommonDialogUtil::BrowseForFolder(initdir, &selectedDir);
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+                       if (hr == S_OK) {
+                               ATLASSERT(selectedDir.vt == VT_BSTR);
+                               m_value = selectedDir.bstrVal;
+
+                               // \95\\8e¦\82³\82ê\82Ä\82¢\82é\82È\82ç\82Î\92l\82ð\8dX\90V\82·\82é
+                               hr = SetUIValue();
+                               if (FAILED(hr)) {
+                                       return hr;
+                               }
+                       }
+               }
+       }
+
+       // \8fí\82É\83C\83x\83\93\83g\82Í\94­\90\82µ\82È\82¢\81B
+
+       *pEventId = 0;
+
+       return S_FALSE;
+}
diff --git a/SeraphyScriptDialog/ControlComponent.h b/SeraphyScriptDialog/ControlComponent.h
new file mode 100644 (file)
index 0000000..f3b345f
--- /dev/null
@@ -0,0 +1,1248 @@
+#pragma once
+
+#include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
+
+#include <atlhost.h>
+
+#include "SeraphyScriptDialog_i.h"
+
+
+// \8eq\83R\83\93\83g\83\8d\81[\83\8b\82Ì\8aî\92ê\83N\83\89\83X
+// \8aù\92è\82Ì\8eÀ\91\95\82Í\89½\82à\82µ\82Ü\82¹\82ñ\81B(\94Í\88Í\8aO\82Ì\83C\83\93\83f\83b\83N\83X\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Ì\93®\8dì)
+
+class ControlComponent
+{
+protected:
+
+       /**
+        * \82·\82×\82Ä\82Ì\83R\83\93\83|\81[\83l\83\93\83g\82Í\8ae\83N\83\89\83X\82Ì\90Ã\93I\83\81\83\\83b\83hCreate\82Å
+        * \8d\\92z\82³\82ê\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B
+        */
+       ControlComponent()
+       {
+       }
+
+public:
+
+       /**
+        * \83R\83\93\83|\81[\83l\83\93\83g\82ð\94j\8aü\82µ\82Ü\82·\81B
+        * Compose\82Å\83E\83B\83\93\83h\83E\82ð\8d\\92z\82µ\82½\8fê\8d\87\82Í\81A
+        * \8cÄ\82Ñ\8fo\82µ\91O\82ÉDestroy\82Å\83E\83B\83\93\83h\83E\82ð\94j\8aü\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
+        */
+       virtual ~ControlComponent() throw() = 0
+       {
+       }
+
+       /**
+        * \83E\83B\83\93\83h\83E\82ª\95K\97v\82Å\82 \82ê\82Î\8d\\92z\82µ\82Ü\82·\81B
+        * \82·\82Å\82É\8d\\92z\8dÏ\82Ý\82Å\82 \82Á\82Ä\82Í\82È\82è\82Ü\82¹\82ñ\81B
+        * \8eÀ\8dÛ\82É\94z\92u\82·\82é\82½\82ß\82É\82Í\8e\9f\82ÉDoLayout\82Ì\8cÄ\82Ñ\8fo\82µ\82ª\95K\97v\82Å\82·\81B
+        * \8e¯\95Ê\8eq\82ð\8fÁ\94ï\82µ\82½\8fê\8d\87\81A\8fÁ\94ï\82µ\82½\95ª\82¾\82¯\89Á\8eZ\82³\82ê\82Ä\82©\82ç\96ß\82è\82Ü\82·\81B
+        * \8e¯\95Ê\8eq\82ð\8fÁ\94ï\82µ\82È\82©\82Á\82½\8fê\8d\87\81AnChildId\82Í\95Ï\8dX\82¹\82¸\82É\96ß\82µ\82Ü\82·\81B
+        * @param nChildId [in/out] \8eq\83E\83B\83\93\83h\83E\82É\90Ý\92è\82·\82éID
+        * @param hParent \90e\83E\83B\83\93\83h\83E
+        */
+       virtual HRESULT Compose(WORD &nChildId, HWND hParent) throw() = 0;
+
+       /**
+        * \83E\83B\83\93\83h\83E\82ð\94j\8aü\82µ\82Ü\82·\81B
+        * \83E\83B\83\93\83h\83E\82ª\8dì\90¬\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82µ\82Ü\82¹\82ñ\81B
+        * \83E\83B\83\93\83h\83E\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82é\8fê\8d\87\81A\94j\8aü\91O\82É\8fó\91Ô\82ª\95Û\91\82³\82ê\82Ü\82·\81B
+        */
+       virtual HRESULT Destroy(void) throw() = 0;
+
+       /** 
+        * Compose\8e\9e\82É\90Ý\92è\82µ\82½\8eq\83E\83B\83\93\83h\83E\82ð\8e¯\95Ê\82·\82éID\82ð\8f\8a\97L\82µ\82Ä\82¢\82é\82©\94»\92è\82µ\82Ü\82·\81B
+        * @param pChildId \8e¯\95Ê\8eq
+        * @return HRESULT S_OK\82È\82ç\8f\8a\97L\81AS_FALSE\82È\82ç\8f\8a\97L\82µ\82Ä\82¢\82È\82¢
+        */
+       virtual HRESULT HasChildId(WORD childId) throw() = 0;
+
+       /** 
+        * \83C\83x\83\93\83g\82ª\94­\90\82·\82é\8fê\8d\87\82Í\83C\83x\83\93\83gID\82Æ\81A\8c\8b\89Ê\82ÍS_OK\81B
+        * \83C\83x\83\93\83g\82ª\94­\90\82µ\82È\82¢\8fê\8d\87\82ÍID\82Í0\81A\8c\8b\89Ê\82ÍS_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @param notifyCode \92Ê\92m\83R\81[\83h
+        * @param childId \8e¯\95Ê\8eq
+        * @param pEventId \83C\83x\83\93\83gID\82Ì\8ai\94[\90æ
+        * @return HRESULT \83C\83x\83\93\83g\82ª\94­\90\82·\82é\8fê\8d\87\82ÍS_OK\81A\82µ\82È\82¢\8fê\8d\87\82ÍS_FALSE
+        */
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw() = 0;
+
+       /**
+        * \83E\83B\83\93\83h\83E\82ª\95K\97v\82Æ\82·\82é\8ds\8d\82\82³\82ð\95Ô\82µ\82Ü\82·\81B
+        * \83E\83B\83\93\83h\83E\82ª\95s\97v\82Å\82 \82ê\82Î0\81B
+        * @return \8ds\90\94
+        */
+       virtual UINT GetLineCount() throw() = 0;
+
+       /**
+        * \83E\83B\83\93\83h\83E\82ð\8d\\92z\82µ\82½\82 \82Æ\8eÀ\8dÛ\82É\90e\83E\83B\83\93\83h\83E\8fã\82É\94z\92u\82µ\82Ü\82·\81B
+        * \83E\83B\83\93\83h\83E\82ª\95K\97v\82È\82¯\82ê\82Î\89½\82à\82µ\82Ü\82¹\82ñ\81B
+        * Compose\83\81\83\\83b\83h\82Ì\8cÄ\82Ñ\8fo\82µ\82ª\90æ\82É\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B
+        * @param hParent \94z\92u\82·\82é\83E\83B\83\93\83h\83E
+        * @param baseHeight 1\8ds\82Ì\8d\82\82³
+        * @param rect \94z\92u\82Å\82«\82é\83G\83\8a\83A
+        * @return HRESULT
+        */
+       virtual HRESULT DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw() = 0;
+
+       /**
+        * \83R\83\93\83|\81[\83l\83\93\83g\82Ì\92l\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+        * \83E\83B\83\93\83h\83E\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82é\8fó\91Ô\82Å\82Í\81A\82»\82Ì\8fó\91Ô\82ð\8eæ\93¾\82µ\81A
+        * \8fó\91Ô\82ð\95Û\91\82µ\82½\82Ì\82¿\81A\82»\82ê\82ª\95Ô\82³\82ê\82Ü\82·\81B
+        * @param pValue \95Û\91\90æ
+        * @return HRESULT
+        */
+       virtual HRESULT get_Value(BSTR *pValue) throw() = 0;
+
+       /**
+        * \83R\83\93\83|\81[\83l\83\93\83g\82Ì\92l\82ð\90Ý\92è\82µ\82Ü\82·\81B
+        * \83E\83B\83\93\83h\83E\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82é\8fó\91Ô\82Å\82Í\81A\8fó\91Ô\82ª\94½\89f\82³\82ê\82Ü\82·\81B
+        * @param value \92l
+        * @return HRESULT
+        */
+       virtual HRESULT put_Value(BSTR value) throw() = 0;
+
+       /**
+        * \8f\89\8aú\92l\82à\82µ\82­\82Í\92l\82Ì\90Ý\92è\8cã\81AUI\82É\82æ\82Á\82Ä\93à\97e\82ª\95Ï\8dX\82³\82ê\82Ä\82¢\82é\82©
+        * \94»\92è\82µ\82Ü\82·\81B
+        * @param pResult \8c\8b\89Ê\82Ì\8ai\94[\90æ
+        * @return HRESULT
+        */
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw() = 0;
+
+       /**
+        * \83R\83\93\83g\83\8d\81[\83\8b\82ð\97L\8cø\81E\96³\8cø\82Ì\8fó\91Ô\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+        * @param pEnabled \95Û\91\90æ
+        * @return HRESULT
+        */
+       virtual HRESULT get_Enable(VARIANT_BOOL *pEnabled) throw() = 0;
+
+       /**
+        * \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø\81E\96³\8cø\82Ì\8fó\91Ô\82ð\90Ý\92è\82µ\82Ü\82·\81B
+        * @param pEnabled \90Ý\92è\92l
+        * @return HRESULT
+        */
+       virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw() = 0;
+
+private:
+       ControlComponent& operator=(const ControlComponent&); // \8eÀ\91\95\82È\82µ\81A\83R\83s\81[\95s\89Â
+       ControlComponent(const ControlComponent&); // \8eÀ\91\95\82È\82µ\81A\83R\83s\81[\95s\89Â
+};
+
+
+// \83_\83~\81[\83R\83\93\83g\83\8d\81[\83\8b\97p
+class DummyControlComponent
+       : public ControlComponent
+{
+protected:
+       DummyControlComponent();
+
+public:
+
+       virtual ~DummyControlComponent() throw();
+
+       virtual HRESULT Compose(WORD &nChildId, HWND hParent) throw();
+
+       virtual HRESULT Destroy(void) throw();
+
+       virtual HRESULT HasChildId(WORD childId) throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+       virtual UINT GetLineCount() throw();
+
+       virtual HRESULT DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+       virtual HRESULT get_Enable(VARIANT_BOOL *pEnabled) throw();
+
+       virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw();
+
+       /**
+        * \83R\83\93\83|\81[\83l\83\93\83g\82ð\8d\\92z\82µ\82Ü\82·\81B
+        * @param ppComponent \8ai\94[\90æ\83|\83C\83\93\83^
+        * @return HRESULT
+        */
+       static HRESULT Create(ControlComponent **ppComponent) throw();
+
+};
+
+
+
+
+// \83\89\83x\83\8b\97p
+class LabelControlComponent
+       : public ControlComponent
+{
+private:
+
+       // \8d\\92z\8dÏ\82Ý\82È\82çHWND\81A\82»\82¤\82Å\82È\82¯\82ê\82ÎNULL
+       HWND m_hWnd;
+
+       // \83\89\83x\83\8b\83e\83L\83X\83g
+       CComBSTR m_text;
+
+       // \97L\8cø\96³\8cø\82ð\8e¦\82·
+       VARIANT_BOOL m_enabled;
+
+protected:
+
+       LabelControlComponent();
+
+public:
+
+       virtual ~LabelControlComponent() throw();
+
+       static HRESULT Create(BSTR text, ControlComponent** ppCompo) throw();
+
+       virtual UINT GetLineCount() throw();
+
+       virtual HRESULT Compose(WORD &nChildId, HWND hParent) throw();
+
+       virtual HRESULT HasChildId(WORD childId) throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+       virtual HRESULT Destroy(void) throw();
+
+       virtual HRESULT DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value);
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+       virtual HRESULT get_Enable(VARIANT_BOOL *pEnabled) throw();
+
+       virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw();
+
+};
+
+// \83G\83f\83B\83b\83g\83{\83b\83N\83X\97p
+class MultiEditControlComponent
+       : public ControlComponent
+{
+private:
+
+       // \83\89\83x\83\8b\97p\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81A\82È\82¯\82ê\82ÎNULL
+       HWND m_hLabelWnd;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\97p\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81A\82È\82¯\82ê\82ÎNULL
+       HWND m_hEditWnd;
+
+       // \83\89\83x\83\8b\83e\83L\83X\83g
+       CComBSTR m_label;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\8f\89\8aú\93à\97e/\90Ý\92è\92l
+       CComBSTR m_initValue;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\93ü\97Í\93à\97e
+       CComBSTR m_value;
+
+       // \8ds\90\94
+       UINT m_lineCount;
+
+       // \97L\8cø\96³\8cø\82ð\8e¦\82·
+       VARIANT_BOOL m_enabled;
+
+protected:
+
+       MultiEditControlComponent();
+
+       HRESULT InitInstance(VARIANT title, VARIANT initValue, VARIANT multiline) throw();
+
+public:
+
+       virtual ~MultiEditControlComponent() throw();
+
+       static HRESULT Create(VARIANT title, VARIANT initValue, VARIANT multiline, ControlComponent** ppCompo) throw();
+
+       virtual UINT GetLineCount() throw();
+
+       virtual HRESULT Compose(WORD& nChildId, HWND hParent) throw();
+
+       virtual HRESULT HasChildId(WORD childId) throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+       virtual HRESULT Destroy(void) throw();
+
+       virtual HRESULT DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+       virtual HRESULT get_Enable(VARIANT_BOOL *pEnabled) throw();
+
+       virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw();
+
+protected:
+
+       /**
+        * \83G\83f\83B\83b\83g\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ð\8eæ\93¾\82µS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \93à\97e\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83G\83f\83B\83b\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       HRESULT GetUIValue() throw();
+
+       /**
+        * \83G\83f\83B\83b\83g\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ð\90Ý\92è\82µS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \93à\97e\82Ì\90Ý\92è\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83G\83f\83B\83b\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       HRESULT SetUIValue() throw();
+
+};
+
+
+
+
+// \83v\83b\83V\83\85\83{\83^\83\93\81E\83`\83F\83b\83N\83{\83b\83N\83X\81E\83\89\83W\83I\83{\83^\83\93\82Ì\8b¤\92Ê\83N\83\89\83X
+
+template <class CHILDHWND>
+class AbstractButtonControlComponent
+       : public ControlComponent
+{
+protected:
+
+       // \83R\83}\83\93\83h\83{\83^\83\93\81E\83R\83\93\83g\83\8d\81[\83\8b\82Ì\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\82Ì\94z\97ñ
+       // CHILDHWND\82Ì\83\81\83\93\83o\82Æ\82µ\82Ä\81A
+       // { HWND hWnd;
+       //   CComBSTR caption; }
+       // \82ª\95K\97v\82Å\82·\81B
+       // \8d\\92z\8e\9e\82É\8c\88\92è\82µ\82Ü\82·\81B
+       CAutoPtrArray<CHILDHWND> m_buttons;
+
+       // \8fc\94z\92u\83\82\81[\83h\82ð\8e¦\82·\81B
+       // \83f\83t\83H\83\8b\83g\82Í\90\85\95½\94z\92u\82Å\82·\81B
+       // \8d\\92z\8e\9e\82É\8c\88\92è\82µ\82Ü\82·\81B
+       bool m_vertical;
+
+       // \97L\8cø\96³\8cø\82ð\8e¦\82·
+       VARIANT_BOOL m_enabled;
+
+
+       AbstractButtonControlComponent()
+               : ControlComponent()
+               , m_enabled(VARIANT_TRUE)
+               , m_vertical(false)
+       {
+       }
+
+       /**
+        * VARIANT\82©\82ç\90\82\92¼\94z\92u\83\82\81[\83h\82ð\8eæ\93¾\82µ\83C\83\93\83X\83^\83\93\83X\82É\90Ý\92è\82µ\82Ü\82·\81B
+        * \83f\83t\83H\83\8b\83g\82Í\90\85\95½\94z\92u\82Å\82·\81B
+        * @param mode \83\82\81[\83h
+        */
+       void SetVerticalMode(VARIANT mode) throw()
+       {
+               bool vertical = false;
+               if (!IsNullOrError(&mode)) {
+                       VARIANT tmp;
+                       VariantInit(&tmp);
+                       if (SUCCEEDED(VariantChangeType(&tmp, &mode, VARIANT_NOUSEROVERRIDE, VT_I2))) {
+                               ATLASSERT(tmp.vt == VT_I2);
+                               vertical = tmp.iVal ? true : false;
+                       }
+               }
+               m_vertical = vertical;
+       }
+
+public:
+
+       virtual ~AbstractButtonControlComponent() = 0
+       {
+               Destroy();
+               m_buttons.RemoveAll();
+       }
+
+       virtual UINT GetLineCount() throw()
+       {
+               if (!m_vertical) {
+                       // \8fc\83\82\81[\83h\82Å\82È\82¯\82ê\82Î1\8ds\82Ì\82Ý
+                       return 1;
+               }
+               // \83{\83^\83\93\90\94\95ª\82¾\82¯\8ds\82ð\8fÁ\94ï\82·\82é
+               return static_cast<UINT>(m_buttons.GetCount());
+       }
+
+       virtual HRESULT Compose(WORD& refChildId, HWND hParent) throw()
+       {
+               ATLASSERT(::IsWindow(hParent));
+
+               WORD offset = 0;
+               try {
+                       CWindow wndDialog(hParent);
+
+                       size_t mx = m_buttons.GetCount();
+                       for (size_t idx = 0; idx < mx; idx++) {
+                               ATLASSERT(m_buttons.GetAt(idx)->hWnd == NULL);
+
+                               CAutoPtr<CHILDHWND> &pCmdBtn = m_buttons.GetAt(idx);
+
+                               // \83{\83^\83\93\82Ì\8d\\92z
+                               HWND hWnd = CreateButton(hParent, pCmdBtn->caption, refChildId, offset);
+                               if (hWnd == NULL) {
+                                       AtlThrowLastWin32();
+                               }
+
+                               // \83t\83H\83\93\83g\82Ì\90Ý\92è
+                               CWindow btnWnd(hWnd);
+                               btnWnd.SetFont(wndDialog.GetFont());
+
+                               // \93o\98^
+                               pCmdBtn->hWnd = hWnd;
+                               offset++;
+                       }
+
+                       // \92l\82Ì\90Ý\92è
+                       HRESULT hr = SetUIValue();
+                       if (FAILED(hr)) {
+                               AtlThrow(hr);
+                       }
+
+                       // \97L\8cø\81E\96³\8cø\8fó\91Ô\82Ì\90Ý\92è
+                       EnableButtons(m_enabled);
+
+               } catch (CAtlException &ex) {
+                       
+                       Destroy();
+
+                       return ex.m_hr;
+               }
+
+               refChildId += offset;
+
+               return S_OK;
+       }
+
+       HRESULT DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw()
+       {
+               ATLASSERT(::IsWindow(hParent));
+
+               LONG width = rect.right - rect.left;
+               LONG height = rect.bottom - rect.top;
+
+               size_t mx = m_buttons.GetCount();
+               ATLASSERT(mx > 0);
+
+               if (m_vertical) {
+                       // \90\82\92¼\94z\92u
+                       LONG pos = 0;
+                       for (size_t idx = 0; idx < mx; idx++) {
+                               HWND hCmdWnd = m_buttons.GetAt(idx)->hWnd;
+                               ATLASSERT(::IsWindow(hCmdWnd));
+
+                               SetWindowPos(hCmdWnd, NULL,
+                                       rect.left, rect.top + pos, width, baseHeight,
+                                       SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+
+                               pos += baseHeight;
+                       }
+
+               } else {
+                       // \90\85\95½\94z\92u
+                       double standardSize = width / 4.; // \83E\83B\83\93\83h\83E\95\9d\82Ì1/4\82ð\8aî\96{\82Æ\82·\82é
+                       
+                       double btnWidth = width / static_cast<double>(mx); // \92~\90Ï\8cë\8d·\82ð\97}\82¦\82é\82½\82ß\95\82\93®\8f¬\90\94\93_\82Æ\82·\82é
+                       if (btnWidth < 5) {
+                               btnWidth = 5.; // 5px\82æ\82è\8f¬\82³\82­\82µ\82È\82¢\81B
+                       }
+
+                       LONG leftMargin = 0;
+
+                       if (btnWidth > standardSize) {
+                               // \8aî\96{\95\9d\82æ\82è\82à\8dL\82­\82¹\82¸\81A\82»\82Ì\8fê\8d\87\82Í\8d\91¤\82É\8bó\94\92\82ð\82¢\82ê\82é\81B
+                               btnWidth = standardSize;
+                               leftMargin = static_cast<LONG>(width - btnWidth * static_cast<double>(mx));
+                       }
+
+                       double pos = leftMargin;
+                       for (size_t idx = 0; idx < mx; idx++) {
+                               HWND hCmdWnd = m_buttons.GetAt(idx)->hWnd;
+                               ATLASSERT(::IsWindow(hCmdWnd));
+
+                               SetWindowPos(hCmdWnd, NULL,
+                                       static_cast<LONG>(rect.left + pos), rect.top, static_cast<LONG>(btnWidth), height,
+                                       SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOZORDER);
+
+                               pos += btnWidth;
+                       }
+               }
+
+               return S_OK;
+       }
+
+       virtual HRESULT HasChildId(WORD childId) throw()
+       {
+               size_t mx = m_buttons.GetCount();
+               for (size_t idx = 0; idx < mx; idx++) {
+                       CWindow wnd(m_buttons.GetAt(idx)->hWnd);
+                       if (wnd.IsWindow()) {
+                               if (wnd.GetWindowLong(GWL_ID) == childId) {
+                                       return S_OK;
+                               }
+                       }
+               }
+               return S_FALSE;
+       }
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
+       {
+               if (!pEventId) {
+                       return E_POINTER;
+               }
+
+               // \8aù\92è\82Ì\8eÀ\91\95\82Í\81u\83C\83x\83\93\83g\82É\89\9e\93\9a\82µ\82È\82¢\81v\82Æ\82·\82é\81B
+               // \89\9e\93\9a\82·\82é\8fê\8d\87\82Í\94h\90\83N\83\89\83X\82Å\91Î\89\9e\82·\82é\81B
+               *pEventId = 0;
+               return S_FALSE;
+       }
+
+       virtual HRESULT Destroy(void) throw()
+       {
+               // \89æ\96Ê\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82ê\82Î\81A\82»\82Ì\8fó\91Ô\82ð\8eæ\93¾\82µ\82Ä\95Û\91\82·\82é\81B
+               HRESULT hr = GetUIValue();
+               if (SUCCEEDED(hr)) {
+                       // \83E\83B\83\93\83h\83E\82ª1\82Â\88È\8fã\94j\8aü\82³\82ê\82½\82Ì\82È\82ç\82ÎS_OK\81B
+                       // \83E\83B\83\93\83h\83E\82ª\82à\82Æ\82à\82Æ\82È\82¢\82Ì\82Å\82 \82ê\82ÎS_FALSE\82ð\95Ô\82·\82½\82ß\81B
+                       hr = S_FALSE;
+               }
+
+               // GetUIValue\82ª\8e¸\94s\82µ\82Ä\82à\83E\83B\83\93\83h\83E\82Ì\94j\8aü\82ð\8e\8e\8ds\82·\82é
+
+               size_t mx = m_buttons.GetCount();
+               for (size_t idx = 0; idx < mx; idx++) {
+                       CAutoPtr<CHILDHWND> &pCmdWnd = m_buttons.GetAt(idx);
+                       CWindow wnd(pCmdWnd->hWnd);
+                       if (wnd.IsWindow()) {
+                               wnd.DestroyWindow();
+                               if (SUCCEEDED(hr)) { // \83G\83\89\81[\83R\81[\83h\82Í\8fã\8f\91\82«\82µ\82È\82¢\81B
+                                       hr = S_OK;
+                               }
+                       }
+                       pCmdWnd->hWnd = NULL;
+               }
+
+               return hr;
+       }
+
+       virtual HRESULT get_Enable(VARIANT_BOOL *pEnabled) throw()
+       {
+               if (!pEnabled) {
+                       return E_POINTER;
+               }
+
+               *pEnabled = m_enabled;
+
+               return S_OK;
+       }
+
+       virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw()
+       {
+               m_enabled = enabled;
+
+               EnableButtons(m_enabled);
+
+               return S_OK;
+       }
+
+protected:
+
+       /**
+        * \83v\83b\83V\83\85\83{\83^\83\93\81E\83`\83F\83b\83N\83{\83b\83N\83X\81E\83\89\83W\83I\83{\83^\83\93\82È\82Ç\81A\83{\83^\83\93\83R\83\93\83g\83\8d\81[\83\8b\82ð
+        * \8eÀ\8dÛ\82É\8d\\92z\82µ\82Ä\95Ô\82µ\82Ü\82·\81B\8d\\92z\82Å\82«\82È\82¢\8fê\8d\87\82ÍNULL\82ð\95Ô\82µ\81AGetLastError()\82Å
+        * Win32API\82Ì\83G\83\89\81[\83R\81[\83h\82ð\8eæ\93¾\82Å\82«\82é\82æ\82¤\82É\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
+        * nStartChildId + offset\82ð\83E\83B\83\93\83h\83E\8e¯\95Ê\8eq\82Æ\82µ\82Ä\8eg\97p\82µ\82Ü\82·\81B
+        * \93¯\82\83O\83\8b\81[\83v\82É\95¡\90\94\8cÂ\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82ª\82 \82é\8fê\8d\87\81Aoffset\82Å\8f\87\94Ô\82ð\94c\88¬\82Å\82«\82Ü\82·\81B
+        * @param caption \83L\83\83\83v\83V\83\87\83\93
+        * @param nStartChildId \8eq\83E\83B\83\93\83h\83E\82Ì\8e¯\95Ê\8eq\82Ì\83x\81[\83X
+        * @param offset \8eq\83E\83B\83\93\83h\83E\82Ì\8e¯\95Ê\8eq\82Ì\83I\83t\83Z\83b\83g
+        */
+       virtual HWND CreateButton(HWND hParent, LPCTSTR caption, WORD nStartChildId, WORD offset) throw() = 0;
+
+       /**
+        * \83{\83^\83\93\8ds\82É\91Î\82µ\82Ä\88ê\8a\87\82µ\82Ä\97L\8cø\81E\96³\8cø\82ð\8ds\82¢\82Ü\82·\81B
+        * @param enabled \97L\8cø\81E\96³\8cø\82ð\8e¦\82·
+        */
+       virtual void EnableButtons(VARIANT_BOOL enabled) throw()
+       {
+               // \83R\83}\83\93\83h\83{\83^\83\93\82Ì\97L\8cø\81E\96³\8cø\82Í\81A1\8ds\82É\95¡\90\94\8cÂ\82Ì\83{\83^\83\93\82ª\82 \82é\8fê\8d\87\82Å\82à\88ê\8a\87\82µ\82Ä\8ds\82í\82ê\82é\81B
+               // \82à\82Æ\82à\82Æ\8cÂ\95Ê\82Ì\8ew\92è\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81B
+
+               size_t mx = m_buttons.GetCount();
+               for (size_t idx = 0; idx < mx; idx++) {
+                       CAutoPtr<CHILDHWND> &pCmdBtn = m_buttons.GetAt(idx);
+                       CWindow btnWnd(pCmdBtn->hWnd);
+                       if (btnWnd.IsWindow()) {
+                               btnWnd.EnableWindow(enabled ? TRUE : FALSE);
+                       }
+               }
+       }
+
+       /** 
+        * \83{\83^\83\93\82ª\8fó\91Ô\82ð\82à\82Â\8fê\8d\87(CHECKBOX/RADIO)\82É\81A\82»\82Ì\8fó\91Ô\82ðUI\82É\94½\89f\82³\82¹\82Ü\82·\81B
+        * \83R\83\93\83g\83\8d\81[\83\8b\82ª\82Ü\82¾\8d\\92z\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * \94½\89f\82³\82ê\82½\8fê\8d\87\82ÍS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \94½\89f\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT SetUIValue() throw()
+       {
+               return S_FALSE;
+       }
+
+       /**
+        * \83{\83^\83\93\82ª\8fó\91Ô\82ð\82à\82Â\8fê\8d\87\81A\82»\82Ì\8fó\91Ô\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+        * \83R\83\93\83g\83\8d\81[\83\8b\82ª\82Ü\82¾\8d\\92z\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * \8eæ\93¾\82³\82ê\82½\8fê\8d\87\82ÍS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT GetUIValue() throw()
+       {
+               return S_FALSE;
+       }
+};
+
+
+// \8cÂ\81X\82Ì\83R\83}\83\93\83h\83{\83^\83\93\82²\82Æ\82Ì\92è\8b`
+class CommandButtonInfo
+{
+public:
+
+       CommandButtonInfo()
+               : eventId(0)
+               , hWnd(0)
+       {
+       }
+
+       // \95\\8e¦\83e\83L\83X\83g
+       CComBSTR caption;
+
+       // \83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b
+       HWND hWnd;
+
+       // \83C\83x\83\93\83gID
+       SHORT eventId;
+
+private:
+
+       CommandButtonInfo(const CommandButtonInfo&); // \8eÀ\91\95\82È\82µ
+       CommandButtonInfo& operator=(const CommandButtonInfo&); // \8eÀ\91\95\82È\82µ
+};
+
+// \83R\83}\83\93\83h\83{\83^\83\93\8ds\97p
+class CommandButtonControlComponent
+       : public AbstractButtonControlComponent<CommandButtonInfo>
+{
+protected:
+
+       CommandButtonControlComponent();
+
+       virtual HWND CreateButton(HWND hParent, LPCTSTR caption, WORD nStartChildId, WORD offset);
+
+       HRESULT InitInstance(BSTR title, SHORT startEventCode) throw();
+
+public:
+
+       virtual ~CommandButtonControlComponent() throw();
+
+       static HRESULT Create(BSTR title, SHORT startEventCode, ControlComponent** ppCompo) throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+};
+
+
+// \8cÂ\81X\82Ì\83`\83F\83b\83N\83{\83b\83N\83X\82²\82Æ\82Ì\92è\8b`
+class CheckboxInfo
+{
+public:
+
+       CheckboxInfo()
+               : hWnd(0)
+       {
+       }
+
+       // \95\\8e¦\83e\83L\83X\83g
+       CComBSTR caption;
+
+       // \83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b
+       HWND hWnd;
+
+private:
+       
+       CheckboxInfo(const CheckboxInfo&); // \8eÀ\91\95\82È\82µ
+       CheckboxInfo& operator=(const CheckboxInfo&); // \8eÀ\91\95\82È\82µ
+};
+
+// \83`\83F\83b\83N\83{\83b\83N\83X\8ds\97p
+class CheckButtonControlComponent
+       : public AbstractButtonControlComponent<CheckboxInfo>
+{
+private:
+
+       CComBSTR m_initValue;
+
+       CComBSTR m_value;
+
+protected:
+
+       CheckButtonControlComponent();
+
+       HRESULT InitInstance(BSTR title, VARIANT initValue, VARIANT mode) throw();
+
+       virtual HWND CreateButton(HWND hParent, LPCTSTR caption, WORD nStartChildId, WORD offset);
+
+public:
+
+       virtual ~CheckButtonControlComponent() throw();
+
+       static HRESULT Create(BSTR title, VARIANT initValue, VARIANT mode, ControlComponent** ppCompo) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+protected:
+
+       virtual HRESULT GetUIValue() throw();
+
+       virtual HRESULT SetUIValue() throw();
+};
+
+
+
+// \8cÂ\81X\82Ì\83\89\83W\83I\83{\83b\83N\83X\82²\82Æ\82Ì\92è\8b`
+class RadioInfo
+{
+public:
+
+       RadioInfo()
+               : hWnd(0)
+       {
+       }
+
+       // \95\\8e¦\83e\83L\83X\83g
+       CComBSTR caption;
+
+       // \83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b
+       HWND hWnd;
+
+private:
+       
+       RadioInfo(const RadioInfo&); // \8eÀ\91\95\82È\82µ
+       RadioInfo& operator=(const RadioInfo&); // \8eÀ\91\95\82È\82µ
+};
+
+// \83\89\83W\83I\83{\83b\83N\83X\8ds\97p
+class RadioButtonControlComponent
+       : public AbstractButtonControlComponent<RadioInfo>
+{
+private:
+
+       SHORT m_initValue;
+
+       SHORT m_value;
+
+protected:
+
+       RadioButtonControlComponent();
+
+       HRESULT InitInstance(BSTR title, VARIANT initValue, VARIANT mode) throw();
+
+       virtual HWND CreateButton(HWND hParent, LPCTSTR caption, WORD nStartChildId, WORD offset);
+
+public:
+
+       virtual ~RadioButtonControlComponent() throw();
+
+       static HRESULT Create(BSTR title, VARIANT initValue, VARIANT mode, ControlComponent** ppCompo) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+protected:
+
+       virtual HRESULT GetUIValue() throw();
+
+       virtual HRESULT SetUIValue() throw();
+};
+
+
+
+// \83\8a\83X\83g\83{\83b\83N\83X\97p
+class ListboxControlComponent
+       : public ControlComponent
+{
+private:
+
+       // \83\8a\83X\83g\83{\83b\83N\83X\97p\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81A\82È\82¯\82ê\82ÎNULL
+       HWND m_hListWnd;
+
+       // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\95\\8e¦\93à\97e
+       CAtlArray<CAtlStringW> m_items;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\8f\89\8aú\93à\97e/\90Ý\92è\92l
+       CComBSTR m_initValue;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\93ü\97Í\93à\97e
+       CComBSTR m_value;
+
+       // \8ds\90\94
+       UINT m_lineCount;
+
+       // \95¡\90\94\91I\91ð\83\82\81[\83h
+       bool m_multiSelMode;
+
+       // \97L\8cø\96³\8cø\82ð\8e¦\82·
+       VARIANT_BOOL m_enabled;
+
+protected:
+
+       ListboxControlComponent();
+
+       HRESULT InitInstance(VARIANT listValues, VARIANT initValues, VARIANT numberOfLines, VARIANT multiSelMode) throw();
+
+public:
+
+       virtual ~ListboxControlComponent() throw();
+
+       static HRESULT Create(VARIANT listValues, VARIANT initValues, VARIANT numberOfLines, VARIANT multiSelMode, ControlComponent** ppCompo) throw();
+
+       virtual UINT GetLineCount() throw();
+
+       virtual HRESULT Compose(WORD& nChildId, HWND hParent) throw();
+
+       virtual HRESULT HasChildId(WORD childId) throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+       virtual HRESULT Destroy(void) throw();
+
+       virtual HRESULT DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+       virtual HRESULT get_Enable(VARIANT_BOOL *pEnabled) throw();
+
+       virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw();
+
+protected:
+
+       /**
+        * \83\8a\83X\83g\82Ì\95\\8e¦\93à\97e\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+        * @param varList \83\8a\83X\83g\82Ì\95\\8e¦\93à\97e
+        * @return HRESULT
+        */
+       HRESULT InitItems(VARIANT varList) throw();
+
+       /**
+        * \83Z\83~\83R\83\8d\83\93\8bæ\90Ø\82è\95\8e\9a\97ñ\82Å\8ew\92è\82³\82ê\82Ä\82¢\82é\90\94\92l\82ð\83C\83\93\83f\83b\83N\83X\82Æ\82µ\82Ä
+        * pMap\94z\97ñ\82ÌTRUE/FALSE\82ð\90Ý\92è\82µ\82Ä\95Ô\82µ\82Ü\82·\81B
+        * 0\82æ\82è\82à\8f¬\82³\82¢\90\94\92l\82¨\82æ\82Ñlenth\88È\8fã\82Ì\90\94\92l\82Í\96³\8e\8b\82³\82ê\82Ü\82·\81B
+        * \90\94\92l\88È\8aO\82Ì\8fê\8d\87\82à\96³\8e\8b\82³\82ê\82Ü\82·\81B
+        * @param pSrc \83Z\83~\83R\83\8d\83\93\8bæ\90Ø\82è\95\8e\9a\97ñ
+        * @param onlyLastToken \8dÅ\8cã\82Ì\83g\81[\83N\83\93\82¾\82¯\82ð\8eæ\93¾\82·\82é\8fê\8d\87
+        * @param pMap \94z\97ñ
+        * @param length \94z\97ñ\82Ì\83T\83C\83Y
+        */
+       void GetMarkedMap(LPCWSTR pSrc, bool onlyLastToken, BOOL *pMap, size_t length) throw();
+
+       /**
+        * \83\8a\83X\83g\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82©\82ç\8eæ\93¾\82µS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \93à\97e\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83\8a\83X\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT GetUIValue() throw();
+
+       /**
+        * \83\8a\83X\83g\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82É\94½\89f\82³\82¹\82Ü\82·\81B
+        * \90Ý\92è\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83\8a\83X\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT SetUIValue() throw();
+
+};
+
+// \83R\83\93\83{\81^\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\83{\83b\83N\83X\8b¤\92Ê\97p
+class AbstractComboboxControlComponent
+       : public ControlComponent
+{
+protected:
+
+       // \83\89\83x\83\8b\97p\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81A\82È\82¯\82ê\82ÎNULL
+       HWND m_hLabelWnd;
+
+       // \83R\83\93\83{\83{\83b\83N\83X\97p\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81A\82È\82¯\82ê\82ÎNULL
+       HWND m_hComboWnd;
+
+       // \83\89\83x\83\8b\83e\83L\83X\83g
+       CComBSTR m_label;
+
+       // \83R\83\93\83{\83{\83b\83N\83X\82Ì\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\82Ì\93à\97e
+       CAtlArray<CAtlStringW> m_listItems;
+
+       // \97L\8cø\96³\8cø\82ð\8e¦\82·
+       VARIANT_BOOL m_enabled;
+
+       AbstractComboboxControlComponent();
+
+       HRESULT InitInstance(VARIANT title, VARIANT listValues) throw();
+
+public:
+
+       virtual ~AbstractComboboxControlComponent() throw() = 0;
+
+       virtual UINT GetLineCount() throw();
+
+       virtual HRESULT Compose(WORD& nChildId, HWND hParent) throw();
+
+       virtual HRESULT HasChildId(WORD childId) throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+       virtual HRESULT Destroy(void) throw();
+
+       virtual HRESULT DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw();
+
+       virtual HRESULT get_Enable(VARIANT_BOOL *pEnabled) throw();
+
+       virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw();
+
+protected:
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82Ì\8d\\92z\8e\9e\82Ì\83X\83^\83C\83\8b\82ð\95Ô\82µ\82Ü\82·\81B
+        * \94h\90\83N\83\89\83X\82É\82Ä\83I\81[\83o\81[\83\89\83C\83h\82µ\81A\82»\82Ì\92l\82ÍCompose\83\81\83\\83b\83h\82Ì\8cÄ\82Ñ\8fo\82µ\91O\81A
+        * \82Â\82Ü\82è\81A\8d\\92z\8e\9e(Create\8e\9e)\82É\8am\92è\82µ\82Ä\82¢\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B
+        */
+       virtual DWORD GetComboStyle() throw() = 0;
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82©\82ç\8eæ\93¾\82µS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \93à\97e\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83R\83\93\83{\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT GetUIValue() throw() = 0;
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82É\94½\89f\82³\82¹\82Ü\82·\81B
+        * \90Ý\92è\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83R\83\93\83{\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT SetUIValue() throw() = 0;
+
+};
+
+// \83R\83\93\83{\83{\83b\83N\83X\97p
+class ComboboxControlComponent
+       : public AbstractComboboxControlComponent
+{
+       // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8f\89\8aú\93à\97e/\90Ý\92è\92l
+       CComBSTR m_initValue;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\93ü\97Í\93à\97e
+       CComBSTR m_value;
+
+protected:
+
+       ComboboxControlComponent();
+
+       HRESULT InitInstance(VARIANT titles, VARIANT initValues, VARIANT listValues) throw();
+
+public:
+
+       virtual ~ComboboxControlComponent() throw();
+
+       static HRESULT Create(VARIANT title, VARIANT initValue, VARIANT listValues, ControlComponent** ppCompo) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+protected:
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82Ì\8d\\92z\8e\9e\82Ì\83X\83^\83C\83\8b\82ð\95Ô\82µ\82Ü\82·\81B
+        * \94h\90\83N\83\89\83X\82É\82Ä\83I\81[\83o\81[\83\89\83C\83h\82µ\81A\82»\82Ì\92l\82ÍCompose\83\81\83\\83b\83h\82Ì\8cÄ\82Ñ\8fo\82µ\91O\81A
+        * \82Â\82Ü\82è\81A\8d\\92z\8e\9e(Create\8e\9e)\82É\8am\92è\82µ\82Ä\82¢\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B
+        */
+       virtual DWORD GetComboStyle() throw();
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82©\82ç\8eæ\93¾\82µS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \93à\97e\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83\8a\83X\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT GetUIValue() throw();
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82É\94½\89f\82³\82¹\82Ü\82·\81B
+        * \90Ý\92è\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83\8a\83X\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT SetUIValue() throw();
+
+};
+
+
+// \83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\97p
+class DropdownListControlComponent
+       : public AbstractComboboxControlComponent
+{
+private:
+
+       // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8f\89\8aú\93à\97e/\90Ý\92è\92l
+       SHORT m_initValue;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\93ü\97Í\93à\97e
+       SHORT m_value;
+
+protected:
+
+       DropdownListControlComponent();
+
+       HRESULT InitInstance(VARIANT title, VARIANT initValues, VARIANT listValues) throw();
+
+public:
+
+       virtual ~DropdownListControlComponent() throw();
+
+       static HRESULT Create(VARIANT title, VARIANT initValue, VARIANT listValues, ControlComponent** ppCompo) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+protected:
+
+       /**
+        * \95\8e\9a\97ñ\82©\82çSHORT\82Ì\90\94\92l\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+        * \90æ\8ds\82·\82é\8bó\94\92\82Í\96³\8e\8b\82³\82ê\82Ü\82·\81B
+        * \90\94\92l\82ª\95\89\82Å\82 \82é\82©\81A\95\8e\9a\97ñ\82ªNULL\82Ü\82½\82Í\8bó\82Ì\8fê\8d\87\82Í-1\82ð\95Ô\82µ\82Ü\82·\81B
+        * \92è\8b`\82³\82ê\82Ä\82¢\82é\83\8a\83X\83g\90\94\82æ\82è\82à\91å\82«\82È\8fê\8d\87\82à-1\82É\90Ý\92è\82³\82ê\82Ü\82·\81B
+        * (InitInstance\82Å\83\8a\83X\83g\90\94\82ª\8am\92è\82µ\82Ä\82¢\82È\82¯\82ê\82Î\8cÄ\82Ñ\8fo\82·\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ\81B)
+        */
+       HRESULT GetValue(LPCWSTR pStr, SHORT *pValue) throw();  
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82Ì\8d\\92z\8e\9e\82Ì\83X\83^\83C\83\8b\82ð\95Ô\82µ\82Ü\82·\81B
+        * \94h\90\83N\83\89\83X\82É\82Ä\83I\81[\83o\81[\83\89\83C\83h\82µ\81A\82»\82Ì\92l\82ÍCompose\83\81\83\\83b\83h\82Ì\8cÄ\82Ñ\8fo\82µ\91O\81A
+        * \82Â\82Ü\82è\81A\8d\\92z\8e\9e(Create\8e\9e)\82É\8am\92è\82µ\82Ä\82¢\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B
+        */
+       virtual DWORD GetComboStyle() throw();
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82©\82ç\8eæ\93¾\82µS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \93à\97e\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83\8a\83X\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT GetUIValue() throw();
+
+       /**
+        * \83R\83\93\83{\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82É\94½\89f\82³\82¹\82Ü\82·\81B
+        * \90Ý\92è\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83\8a\83X\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT SetUIValue() throw();
+
+};
+
+
+// \83G\83f\83C\83b\83g+\83{\83^\83\93\82Ì\8b¤\92Ê\83N\83\89\83X
+class AbstractEditButtonControlComponent
+       : public ControlComponent
+{
+protected:
+
+       // \83\89\83x\83\8b\97p\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81A\82È\82¯\82ê\82ÎNULL
+       HWND m_hLabelWnd;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\97p\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81A\82È\82¯\82ê\82ÎNULL
+       HWND m_hEditWnd;
+
+       // \83{\83^\83\93\97p\83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81A\82È\82¯\82ê\82ÎNULL
+       HWND m_hButtonWnd;
+
+       // \83\89\83x\83\8b\83e\83L\83X\83g
+       CComBSTR m_label;
+
+       // \83{\83^\83\93\97p\83e\83L\83X\83g
+       CComBSTR m_btnLabel;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\8f\89\8aú\93à\97e
+       CComBSTR m_initValue;
+
+       // \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\93à\97e
+       CComBSTR m_value;
+
+       // \97L\8cø\96³\8cø\82ð\8e¦\82·
+       VARIANT_BOOL m_enabled;
+
+       AbstractEditButtonControlComponent();
+
+       HRESULT InitInstance(VARIANT title, VARIANT initValue, VARIANT btnTitle) throw();
+
+public:
+
+       virtual ~AbstractEditButtonControlComponent() throw() = 0;
+
+       virtual UINT GetLineCount() throw();
+
+       virtual HRESULT Compose(WORD& nChildId, HWND hParent) throw();
+
+       virtual HRESULT HasChildId(WORD childId) throw();
+
+       virtual HRESULT Destroy(void) throw();
+
+       virtual HRESULT DoLayout(HWND hParent, int baseHeight, const RECT &rect) throw();
+
+       virtual HRESULT get_Value(BSTR *pValue) throw();
+
+       virtual HRESULT put_Value(BSTR value) throw();
+
+       virtual HRESULT get_IsModified(VARIANT_BOOL *pResult) throw();
+
+       virtual HRESULT get_Enable(VARIANT_BOOL *pEnabled) throw();
+
+       virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw();
+
+protected:
+
+       /**
+        * \83G\83f\83B\83b\83g\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82©\82ç\8eæ\93¾\82µS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \93à\97e\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83G\83f\83B\83b\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT GetUIValue() throw();
+
+       /**
+        * \83G\83f\83B\83b\83g\83{\83b\83N\83X\82ª\95\\8e¦\92\86\82Å\82 \82ê\82Î\81A\93à\97e\82ðGUI\82É\94½\89f\82³\82¹\82Ü\82·\81B
+        * \90Ý\92è\82É\8e¸\94s\82µ\82½\8fê\8d\87\82Í\83G\83\89\81[\83R\81[\83h\82ª\95Ô\82è\82Ü\82·\81B
+        * \83G\83f\83B\83b\83g\83{\83b\83N\83X\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82µ\82Ü\82·\81B
+        * @return HRESULT
+        */
+       virtual HRESULT SetUIValue() throw();
+
+};
+
+// \83G\83f\83B\83b\83g + \83R\83}\83\93\83h\83{\83^\83\93\82Ì\92è\8b`
+class EditButtonControlComponent
+       : public AbstractEditButtonControlComponent
+{
+private:
+
+       // \83C\83x\83\93\83gID
+       SHORT m_eventId;
+
+protected:
+
+       EditButtonControlComponent();
+
+       HRESULT InitInstance(VARIANT title, VARIANT initValue, VARIANT btnTitle, SHORT eventId) throw();
+
+public:
+
+       static HRESULT Create(VARIANT title, VARIANT initValue, VARIANT btnTitle, SHORT eventId, ControlComponent** ppCompo) throw();
+
+       virtual ~EditButtonControlComponent() throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+};
+
+// \83G\83f\83B\83b\83g + \83t\83@\83C\83\8b\91I\91ð\83{\83^\83\93\82Ì\92è\8b`
+class FileEditButtonControlComponent
+       : public AbstractEditButtonControlComponent
+{
+private:
+
+       /**
+        * OPEN\83\82\81[\83h\81BTRUE\82È\82ç\82Î\81u\83t\83@\83C\83\8b\82ð\8aJ\82­\81v\83_\83C\83A\83\8d\83O\81B
+        */
+       BOOL m_openMode;
+
+       /**
+        * \83t\83@\83C\83\8b\83_\83C\83A\83\8d\83O\82Ì\83t\83B\83\8b\83^
+        */
+       CComVariant m_filter;
+
+protected:
+
+       FileEditButtonControlComponent();
+
+       HRESULT InitInstance(VARIANT title, VARIANT initValue, VARIANT btnTitle, VARIANT openSaveMode, VARIANT filter) throw();
+
+public:
+
+       static HRESULT Create(VARIANT title, VARIANT initValue, VARIANT btnTitle,  VARIANT openSaveMode, VARIANT filter, ControlComponent** ppCompo) throw();
+
+       virtual HRESULT Compose(WORD& nChildId, HWND hParent) throw();
+
+       virtual ~FileEditButtonControlComponent() throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+};
+
+// \83G\83f\83B\83b\83g + \83t\83H\83\8b\83_\91I\91ð\83{\83^\83\93\82Ì\92è\8b`
+class FolderEditButtonControlComponent
+       : public AbstractEditButtonControlComponent
+{
+protected:
+
+       FolderEditButtonControlComponent();
+
+public:
+
+       static HRESULT Create(VARIANT title, VARIANT initValue, VARIANT btnTitle, ControlComponent** ppCompo) throw();
+
+       virtual HRESULT Compose(WORD& nChildId, HWND hParent) throw();
+
+       virtual ~FolderEditButtonControlComponent() throw();
+
+       virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
+
+};
diff --git a/SeraphyScriptDialog/OutputWindow.cpp b/SeraphyScriptDialog/OutputWindow.cpp
new file mode 100644 (file)
index 0000000..3d04e6b
--- /dev/null
@@ -0,0 +1,277 @@
+// OutputWindow.cpp : COutputWindow \82Ì\8eÀ\91\95
+
+#include "stdafx.h"
+#include "OutputWindow.h"
+
+
+// COutputWindow
+
+HRESULT COutputWindow::FinalConstruct()
+{
+       HWND hWnd = Create(::GetActiveWindow());
+       ATLASSERT(::IsWindow(hWnd));
+       return ::IsWindow(hWnd) ? S_OK : E_FAIL;
+}
+
+void COutputWindow::FinalRelease()
+{
+       if (::IsWindow(m_hWnd)) {
+               DestroyWindow();
+               m_hWnd = NULL;
+       }
+}
+
+
+STDMETHODIMP COutputWindow::InterfaceSupportsErrorInfo(REFIID riid)
+{
+       static const IID* arr[] = 
+       {
+               &IID_IOutputWindow
+       };
+
+       for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
+       {
+               if (InlineIsEqualGUID(*arr[i],riid))
+                       return S_OK;
+       }
+       return S_FALSE;
+}
+
+STDMETHODIMP COutputWindow::get__Text(BSTR *pText)
+{
+       return get_Text(pText);
+}
+
+STDMETHODIMP COutputWindow::put__Text(BSTR pText)
+{
+       return put_Text(pText);
+}
+
+STDMETHODIMP COutputWindow::get_Visible(VARIANT_BOOL *pbVisible)
+{
+       if (!pbVisible) {
+               return E_POINTER;
+       }
+
+       *pbVisible = IsWindowVisible() ? VARIANT_TRUE : VARIANT_FALSE;
+
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::put_Visible(VARIANT_BOOL bVisible)
+{
+       ShowWindow(bVisible ? SW_SHOWNORMAL : SW_HIDE);
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::get_Enable(VARIANT_BOOL *pbEnabled)
+{
+       if (!pbEnabled) {
+               return E_POINTER;
+       }
+
+       CWindow edit1 = GetDlgItem(IDC_EDIT1);
+       ATLASSERT(edit1.IsWindow());
+
+       // \88È\91O\82Í\83E\83B\83\93\83h\83E\82»\82Ì\82à\82Ì(\82Ì\82Ý)\82ðEnable/Disable\82µ\82Ä\82¢\82½\82ª\81A
+       // ver2\82Å\82Í\83G\83f\83B\83b\83g\83{\83b\83N\83X\82ªREADONLY\82Å\82 \82é\82©\82ð\94»\92è\82·\82é\82Ì\82Ý
+
+       DWORD style = edit1.GetWindowLong(GWL_STYLE);
+
+       *pbEnabled = (style & ES_READONLY) ? VARIANT_FALSE : VARIANT_TRUE;
+
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::put_Enable(VARIANT_BOOL bEnabled)
+{
+       CWindow edit1 = GetDlgItem(IDC_EDIT1);
+       ATLASSERT(edit1.IsWindow());
+
+       // \88È\91O\82Í\83E\83B\83\93\83h\83E\82»\82Ì\82à\82Ì(\82Ì\82Ý)\82ðEnable/Disable\82µ\82Ä\82¢\82½\82ª\81A
+       // ver2\82Å\82Í\83G\83f\83B\83b\83g\83{\83b\83N\83X\82ðREADONLY\82É\82·\82é\82Ì\82Ý
+
+       edit1.SendMessage(EM_SETREADONLY, bEnabled ? FALSE : TRUE);
+
+       // \83f\83B\83Z\81[\83u\83\8b\8e\9e\82Í\83t\83H\81[\83J\83X\82ð\8e\9d\82½\82È\82¢\82æ\82¤\82É\95Ï\8dX
+       DWORD exStyle = GetWindowLong(GWL_EXSTYLE);
+       if (bEnabled) {
+               exStyle &= ~WS_EX_NOACTIVATE;
+       } else {
+               exStyle |= WS_EX_NOACTIVATE;
+       }
+       exStyle |= WS_EX_APPWINDOW ;
+       SetWindowLong(GWL_EXSTYLE, exStyle);
+
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::get_Text(BSTR *pText)
+{
+       if (!pText) {
+               return E_POINTER;
+       }
+
+       CWindow edit1 = GetDlgItem(IDC_EDIT1);
+       ATLASSERT(edit1.IsWindow());
+
+       *pText = NULL;
+       if (!edit1.GetWindowText(pText)) {
+               return E_OUTOFMEMORY;
+       }
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::put_Text(BSTR pText)
+{
+       CWindow edit1 = GetDlgItem(IDC_EDIT1);
+       ATLASSERT(edit1.IsWindow());
+
+       if (pText) {
+               edit1.SetWindowText(pText);
+       } else {
+               edit1.SetWindowText(_T(""));
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::get_PosX(SHORT *pX)
+{
+       if (!pX) {
+               return E_POINTER;
+       }
+
+       RECT rect = {0};
+       GetWindowRect(&rect);
+
+       *pX = static_cast<SHORT>(rect.left);
+
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::put_PosX(SHORT x)
+{
+       RECT rect = {0};
+       GetWindowRect(&rect);
+       SetWindowPos(NULL, x, rect.top, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::get_PosY(SHORT *pY)
+{
+       if (!pY) {
+               return E_POINTER;
+       }
+
+       RECT rect = {0};
+       GetWindowRect(&rect);
+
+       *pY = static_cast<SHORT>(rect.top);
+
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::put_PosY(SHORT y)
+{
+       RECT rect = {0};
+       GetWindowRect(&rect);
+       SetWindowPos(NULL, rect.left, y, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::get_Width(SHORT *pWidth)
+{
+       if (!pWidth) {
+               return E_POINTER;
+       }
+
+       RECT rect = {0};
+       GetWindowRect(&rect);
+
+       *pWidth = static_cast<SHORT>(rect.right - rect.left);
+
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::put_Width(SHORT width)
+{
+       RECT rect = {0};
+       GetWindowRect(&rect);
+       SetWindowPos(NULL, 0, 0, width, rect.bottom - rect.top, SWP_NOZORDER | SWP_NOMOVE);
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::get_Height(SHORT *pHeight)
+{
+       if (!pHeight) {
+               return E_POINTER;
+       }
+
+       RECT rect = {0};
+       GetWindowRect(&rect);
+
+       *pHeight = static_cast<SHORT>(rect.bottom - rect.top);
+
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::put_Height(SHORT height)
+{
+       RECT rect = {0};
+       GetWindowRect(&rect);
+       SetWindowPos(NULL, 0, 0, rect.right - rect.left, height, SWP_NOZORDER | SWP_NOMOVE);
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::get_Title(BSTR *pTitle)
+{
+       if (!pTitle) {
+               return E_POINTER;
+       }
+
+       *pTitle = NULL;
+       if (!GetWindowText(pTitle)) {
+               return E_OUTOFMEMORY;
+       }
+       return S_OK;
+}
+
+STDMETHODIMP COutputWindow::put_Title(BSTR title)
+{
+       if (title) {
+               SetWindowText(title);
+       } else {
+               SetWindowText(_T(""));
+       }
+       return S_OK;
+}
+
+
+LRESULT COutputWindow::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+       CAxDialogImpl<COutputWindow>::OnInitDialog(uMsg, wParam, lParam, bHandled);
+
+       // \83E\83B\83\93\83h\83E\82ð\97L\8cø\89»\8fó\91Ô\82Æ\82·\82é\81B
+       HRESULT hr;
+       if (FAILED(hr = put_Enable(VARIANT_TRUE))) {
+               return hr;
+       }
+
+       bHandled = TRUE;
+
+       return 1;  // \83V\83X\83e\83\80\82Å\83t\83H\81[\83J\83X\82ð\90Ý\92è\82µ\82Ü\82·\81B
+}
+
+LRESULT COutputWindow::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
+{
+       RECT rect = {0};
+       GetClientRect(&rect);
+
+       CWindow edit1 = GetDlgItem(IDC_EDIT1);
+       ATLASSERT(edit1.IsWindow());
+
+       edit1.SetWindowPos(NULL, 0, 0, rect.right, rect.bottom, SWP_NOZORDER | SWP_NOMOVE);
+
+       return 0;
+}
diff --git a/SeraphyScriptDialog/OutputWindow.h b/SeraphyScriptDialog/OutputWindow.h
new file mode 100644 (file)
index 0000000..5077162
--- /dev/null
@@ -0,0 +1,89 @@
+// OutputWindow.h : COutputWindow \82Ì\90é\8c¾
+
+#pragma once
+
+#include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
+
+#include <atlhost.h>
+
+#include "SeraphyScriptDialog_i.h"
+
+
+// COutputWindow
+
+class COutputWindow : 
+       public CComObjectRootEx<CComSingleThreadModel>,
+       public CComCoClass<COutputWindow, &CLSID_OutputWindow>,
+       public ISupportErrorInfo,
+       public IDispatchImpl<IOutputWindow, &IID_IOutputWindow, &LIBID_SeraphyScriptDialog, /*wMajor =*/ 2, /*wMinor =*/ 0>,
+       public CAxDialogImpl<COutputWindow>
+{
+public:
+       COutputWindow()
+       {
+       }
+
+       static void WINAPI ObjectMain(bool bStarting)
+       {
+       }
+
+       enum { IDD = IDD_OUTPUTWINDOW };
+
+
+BEGIN_COM_MAP(COutputWindow)
+       COM_INTERFACE_ENTRY(IOutputWindow)
+       COM_INTERFACE_ENTRY(IDispatch)
+       COM_INTERFACE_ENTRY(ISupportErrorInfo)
+END_COM_MAP()
+
+// ISupportsErrorInfo
+       STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
+
+
+       DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+       HRESULT FinalConstruct();
+
+       void FinalRelease();
+
+
+DECLARE_NO_REGISTRY()
+
+BEGIN_MSG_MAP(COutputWindow)
+       MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
+       MESSAGE_HANDLER(WM_SIZE, OnSize)
+       CHAIN_MSG_MAP(CAxDialogImpl<COutputWindow>)
+END_MSG_MAP()
+
+// \83n\83\93\83h\83\89 \83v\83\8d\83g\83^\83C\83v:
+//  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+//  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
+//  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
+
+       LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+       LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
+
+public:
+
+       STDMETHOD(get__Text)(BSTR *pText);
+       STDMETHOD(put__Text)(BSTR pText);
+       STDMETHOD(get_Visible)(VARIANT_BOOL *pbVisible);
+       STDMETHOD(put_Visible)(VARIANT_BOOL bVisible);
+       STDMETHOD(get_Enable)(VARIANT_BOOL *pbEnabled);
+       STDMETHOD(put_Enable)(VARIANT_BOOL bEnabled);
+       STDMETHOD(get_Text)(BSTR *pText);
+       STDMETHOD(put_Text)(BSTR pText);
+       STDMETHOD(get_PosX)(SHORT *pX);
+       STDMETHOD(put_PosX)(SHORT x);
+       STDMETHOD(get_PosY)(SHORT *pY);
+       STDMETHOD(put_PosY)(SHORT y);
+       STDMETHOD(get_Width)(SHORT *pWidth);
+       STDMETHOD(put_Width)(SHORT width);
+       STDMETHOD(get_Height)(SHORT *pHeight);
+       STDMETHOD(put_Height)(SHORT height);
+       STDMETHOD(get_Title)(BSTR *pTitle);
+       STDMETHOD(put_Title)(BSTR title);
+};
+
+OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO(__uuidof(OutputWindow), COutputWindow)
\ No newline at end of file
diff --git a/SeraphyScriptDialog/ScrDlgRoot.cpp b/SeraphyScriptDialog/ScrDlgRoot.cpp
new file mode 100644 (file)
index 0000000..1ac3ac9
--- /dev/null
@@ -0,0 +1,1652 @@
+// ScrDlgRoot.cpp : CScrDlgRoot \82Ì\8eÀ\91\95
+
+#include "stdafx.h"
+#include "ScrDlgRoot.h"
+
+#include <vector>
+#include <math.h>
+
+#include "VarArray.h"
+#include "OutputWindow.h"
+#include "UserForm.h"
+
+#include "ArrayUtil.h"
+#include "CommOpenFileName.h"
+
+// CScrDlgRoot
+
+HRESULT CScrDlgRoot::FinalConstruct()
+{
+       // \8f\89\8aú\89»
+       m_defaultFS = m_defaultIS = 0;
+       m_defaultTolerance = 0;
+
+       //\90Ý\92è\83t\83@\83C\83\8b\82Ì\83p\83X\82Ì\83f\83t\83H\83\8b\83g\92l\82ð\90Ý\92è\82·\82é
+       try {
+               HRESULT hr;
+
+               TCHAR curdir[MAX_PATH];
+               GetCurrentDirectory(MAX_PATH, curdir);
+               CComBSTR tmp(curdir);
+               if (tmp[tmp.Length() - 1] != '\\') {
+                       if (FAILED(hr = tmp.Append(_T("\\")))) {
+                               // \83\81\83\82\83\8a\95s\91«\82Æ\82©?
+                               AtlThrow(hr);
+                       }
+               }
+
+               CComBSTR defaultPreferenceName;
+               defaultPreferenceName.LoadString(IDS_DEFAULT_PREFERENCENAME);
+               if (FAILED(hr = tmp.Append(defaultPreferenceName))) {
+                       // \83\81\83\82\83\8a\95s\91«\82Æ\82©?
+                       AtlThrow(hr);
+               }
+               m_profilePath = tmp;
+
+               return S_OK;
+       
+       } catch (CAtlException &ex) {
+               return ex.m_hr;
+       }
+}
+
+STDMETHODIMP CScrDlgRoot::InterfaceSupportsErrorInfo(REFIID riid)
+{
+       static const IID* arr[] = 
+       {
+               &IID_IScrDlgRoot
+       };
+
+       for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
+       {
+               if (InlineIsEqualGUID(*arr[i],riid))
+                       return S_OK;
+       }
+       return S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::get_DefaultFS(SHORT* pVal)
+{
+       if (!pVal) {
+               return E_POINTER;
+       }
+       *pVal = m_defaultFS;
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::put_DefaultFS(SHORT newVal)
+{
+       m_defaultFS = newVal;
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::get_DefaultIS(SHORT* pVal)
+{
+       if (!pVal) {
+               return E_POINTER;
+       }
+       *pVal = m_defaultIS;
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::put_DefaultIS(SHORT newVal)
+{
+       m_defaultIS = newVal;
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::get_DefaultTolerance(DOUBLE* pVal)
+{
+       if (!pVal) {
+               return E_POINTER;
+       }
+       *pVal = m_defaultTolerance;
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::put_DefaultTolerance(DOUBLE newVal)
+{
+       m_defaultTolerance = newVal;
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::get_ProfilePath(BSTR* pVal)
+{
+       if (!pVal) {
+               return E_POINTER;
+       }
+       return m_profilePath.CopyTo(pVal);
+}
+
+STDMETHODIMP CScrDlgRoot::put_ProfilePath(BSTR newVal)
+{
+       m_profilePath = newVal;
+       return S_OK;
+}
+
+
+STDMETHODIMP CScrDlgRoot::get_TickCount(DOUBLE* pVal)
+{
+       if (!pVal) {
+               return E_POINTER;
+       }
+       DWORD tc = ::GetTickCount();
+       *pVal = ((double) tc) / 1000.0L; // \95b\92P\88Ê\82É\95Ï\8a·
+       return S_OK;
+
+       // *NOTE* \82±\82Ì\83\81\83\\83b\83h\82Í\81A\82à\82Æ\82æ\82è\93®\8dì\82¹\82¸\83w\83\8b\83v\82É\82à\8bL\8dÚ\82ª\82È\82©\82Á\82½\81B
+       // GetTickCount API\82Í47\93ú\82ð\92´\82¦\82é\82Æ\83I\81[\83o\81[\83t\83\8d\81[\82µ0\82É\96ß\82é\82Ì\82Å\92\8d\88Ó\82ª\95K\97v\81B
+}
+
+STDMETHODIMP CScrDlgRoot::About(DOUBLE* pVersion)
+{
+       //DebugBreak();
+       // \82±\82Ì\83\82\83W\83\85\81[\83\8b\82Ì\83o\81[\83W\83\87\83\93\82ð\8eæ\93¾\82·\82é
+       // \8eæ\93¾\82Å\82«\82È\82¢\8fê\8d\87\82Í\81uunknown\81v\82Æ\95\\8e¦\82·\82é
+       TCHAR strVersion[64] = {0};
+       double dblVersion = 0;
+       _tcscpy_s(strVersion, 64, _T("unknown"));
+
+       TCHAR modulePath[MAX_PATH];
+       if (GetModuleFileName(_AtlBaseModule.GetModuleInstance(), modulePath, MAX_PATH) <= MAX_PATH) {
+               DWORD dwHandle = 0; // \8eg\97p\82³\82ê\82È\82¢
+               DWORD siz = GetFileVersionInfoSize(modulePath, &dwHandle);
+               if (siz > 0) {
+                       std::vector<BYTE> buf(siz);
+                       if (GetFileVersionInfo(modulePath, dwHandle, siz, &buf[0])) {
+                               VS_FIXEDFILEINFO *pFixedFileInfo = 0;
+                               UINT len = 0;
+                               if (VerQueryValue(&buf[0], _T("\\"), reinterpret_cast<LPVOID *>(&pFixedFileInfo), &len)) {
+                                       int v1 = (pFixedFileInfo->dwProductVersionMS >> 16) & 0xffff;
+                                       int v2 = pFixedFileInfo->dwProductVersionMS & 0xffff;
+                                       int v3 = (pFixedFileInfo->dwProductVersionLS >> 16) & 0xffff;
+                                       int v4 = pFixedFileInfo->dwProductVersionLS & 0xffff;
+                                       _stprintf_s(strVersion, 64, _T("%d.%d.%d.%d"), v1, v2, v3, v4);
+                                       dblVersion = _tstof(strVersion);
+                               }
+                       }
+               }
+       }
+
+       // \83\81\83b\83Z\81[\83W\82ð\83t\83H\81[\83}\83b\83g\82·\82é
+       CComBSTR fmt, appName;
+       appName.LoadString(IDS_PROJNAME);
+       fmt.LoadString(IDS_ABOUTMESSAGE);
+
+       TCHAR bitsiz[16];
+       _stprintf_s(bitsiz, 16, _T("%d"), sizeof(void*) * 8); // \83|\83C\83\93\83^\82Ì\91å\82«\82³\82Å32/64\83r\83b\83g\83R\83\93\83p\83C\83\8b\82ð\94»\92è
+
+       const DWORD messz = static_cast<DWORD>(fmt.Length() + _tcslen(strVersion) + _tcslen(bitsiz) + 1);
+       std::vector<TCHAR> mes(messz); // \83t\83H\81[\83}\83b\83g\8cã\82Ì\95\8e\9a\97ñ\82ð\8ai\94[\82·\82é\83o\83b\83t\83@
+
+       if (!FormatMessage(&mes[0], messz, fmt, strVersion, bitsiz)) {
+               return HRESULT_FROM_WIN32(GetLastError());
+       }
+
+       // \83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
+       ::MessageBox(::GetActiveWindow(), &mes[0], appName, MB_ICONINFORMATION | MB_OK);
+
+       if (pVersion) {
+               *pVersion = dblVersion;
+       }
+       return S_OK;
+}
+
+DWORD WINAPI CScrDlgRoot::FormatMessage(LPTSTR buf, DWORD len, LPCTSTR fmt, ...)
+{
+       va_list args;
+       va_start(args, fmt);
+
+       return ::FormatMessage(
+               FORMAT_MESSAGE_FROM_STRING,
+               fmt,
+               0, // ignore
+               0, // ignore
+               buf,
+               len,
+               &args);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// \83t\83@\83C\83\8b\82ð\8aJ\82­\81E\95Û\91\83_\83C\83A\83\8d\83O\8aÖ\98A
+
+STDMETHODIMP CScrDlgRoot::GetOpenFileName(VARIANT defaultName, VARIANT filter, VARIANT defaultDir, VARIANT *pSelectedFilePath)
+{
+       return CommonDialogUtil::CommOpenFileName(TRUE, defaultName, filter, defaultDir, pSelectedFilePath);
+}
+
+STDMETHODIMP CScrDlgRoot::GetSaveFileName(VARIANT defaultName, VARIANT filter, VARIANT defaultDir, VARIANT *pSelectedFilePath)
+{
+       return CommonDialogUtil::CommOpenFileName(FALSE, defaultName, filter, defaultDir, pSelectedFilePath);
+}
+
+STDMETHODIMP CScrDlgRoot::ShellExecute(VARIANT varVerb, VARIANT varPath, VARIANT varParam, VARIANT varDirectory, VARIANT varShow, VARIANT varWait, SHORT *pRetcode)
+{
+       if (!pRetcode) {
+               return E_POINTER;
+       }
+
+       // Verb
+       CComBSTR verb(L"OPEN");
+       if (!IsNullOrError(&varVerb)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varVerb, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               verb.Attach(tmp.bstrVal);
+       }
+
+       // Path
+       CComBSTR path;
+       if (!IsNullOrError(&varPath)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varPath, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               path.Attach(tmp.bstrVal);
+       }
+
+       // Param
+       CComBSTR param;
+       if (!IsNullOrError(&varParam)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varParam, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               param.Attach(tmp.bstrVal);
+       }
+       
+       // Directory
+       CComBSTR directory;
+       if (!IsNullOrError(&varDirectory)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varDirectory, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               directory.Attach(tmp.bstrVal);
+       }
+
+       // ShowWindow
+       int nShowCmd = SW_SHOWNORMAL;
+       if (!IsNullOrError(&varShow)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varShow, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+
+               // \83E\83B\83\93\83h\83E\95\\95û\96@\82ð\8ew\92è\82·\82é
+               switch(tmp.iVal) {
+                       case 0:
+                               nShowCmd = SW_HIDE;
+                               break;
+
+                       case 1:
+                               nShowCmd = SW_SHOWNORMAL;
+                               break;
+
+                       case 2:
+                               nShowCmd = SW_SHOWMAXIMIZED;
+                               break;
+
+                       case 3:
+                               nShowCmd = SW_SHOWMINIMIZED;
+                               break;
+
+                       case 4:
+                               nShowCmd = SW_SHOWMINNOACTIVE;
+                               break;
+
+                       default:
+                               nShowCmd = SW_SHOWNORMAL;
+                               break;
+               }
+       }
+
+       // \8eÀ\8ds\91Ò\82¿\8e\9e\8aÔ
+       DWORD waittime = 0; // \83~\83\8a\95b\92P\88Ê
+       if (!IsNullOrError(&varWait)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varWait, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+               if (tmp.iVal < 0) {
+                       // \96³\8aú\8cÀ
+                       waittime = INFINITE;
+               } else {
+                       // 100\83~\83\8a\95b\92P\88Ê\82Ì\8ew\92è\82©\82ç\83~\83\8a\95b\82Ö
+                       waittime = tmp.iVal * 100;
+               }
+       }
+
+       // SHELL EXECUTE\97p\83f\81[\83^
+       SHELLEXECUTEINFO execinfo = {0};
+       execinfo.cbSize = sizeof(SHELLEXECUTEINFO);
+       execinfo.fMask  = SEE_MASK_DOENVSUBST | SEE_MASK_NOCLOSEPROCESS;
+       execinfo.hwnd   = NULL;
+
+       execinfo.lpVerb = verb;
+       execinfo.lpFile = path;
+       execinfo.lpParameters = param;
+       execinfo.lpDirectory  = directory;
+       execinfo.nShow = nShowCmd;
+
+       // \8eÀ\8ds
+       SHORT retCode = -1; // EXEC FAILED
+       if (ShellExecuteEx(&execinfo)) {
+
+               if (waittime != 0) {
+                       if (execinfo.hProcess == NULL) {
+                               // \83v\83\8d\83Z\83X\82Í\90V\82½\82É\8bN\93®\82³\82ê\82Ä\82¢\82È\82¢
+                               retCode = 2;
+
+                       } else {
+                               // \83v\83\8d\83Z\83X\8fI\97¹\82ð\91Ò\8b@\82·\82é
+                               DWORD reason = WaitForSingleObject(execinfo.hProcess, waittime);
+                               if (reason == WAIT_TIMEOUT) {
+                                       // \83^\83C\83\80\83A\83E\83g
+                                       retCode = 1;
+
+                               } else {
+                                       // \83v\83\8d\83Z\83X\8fI\97¹
+                                       retCode = 0;
+                               }
+                       }
+
+               } else {
+                       // \83v\83\8d\83Z\83X\8fI\97¹\82Í\8aÖ\92m\82¹\82¸
+                       retCode = 1;
+               }
+
+               if (execinfo.hProcess != NULL) {
+                       CloseHandle(execinfo.hProcess);
+               }
+       }
+       
+       *pRetcode = retCode;
+
+       return (retCode >= 0) ? S_OK : S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::GetASyncKeyState(VIRTUALKEYCODE vk, SHORT *pKeyState)
+{
+       if (!pKeyState) {
+               return E_POINTER;
+       }
+
+       if (vk <= 0) {
+               switch(vk) {
+                       case -1:
+                               vk = static_cast<VIRTUALKEYCODE>(VK_PAUSE);
+                               break;
+
+                       case -2:
+                               vk = static_cast<VIRTUALKEYCODE>(VK_SCROLL);
+                               break;
+
+                       case 0: 
+                       default:
+                               vk = static_cast<VIRTUALKEYCODE>(VK_F10);
+                               break;
+               }
+       }
+       
+       *pKeyState = GetAsyncKeyState(vk);
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::BrowseForFolder(VARIANT initdir, VARIANT* pSelectedDir)
+{
+       return CommonDialogUtil::BrowseForFolder(initdir, pSelectedDir);
+}
+
+STDMETHODIMP CScrDlgRoot::CreateForm(IUserForm** ppForm)
+{
+       if (!ppForm) {
+               return E_POINTER;
+       }
+
+       CComObject<CUserForm> *pUserFormObj = NULL;
+       HRESULT hr = CComObject<CUserForm>::CreateInstance(&pUserFormObj);
+       if (FAILED(hr)){
+               return hr;
+       }
+       CComPtr<IUserForm> pUserForm;
+       hr = pUserFormObj->QueryInterface(IID_IUserForm, reinterpret_cast<void**>(&pUserForm));
+       if (FAILED(hr)){
+               return hr;
+       }
+       
+       CComPtr<IMessageLoopImpl> pMessageLoopImpl;
+       if (FAILED(hr = QueryInterface(IID_IMessageLoopImpl, reinterpret_cast<void**>(&pMessageLoopImpl)))) {
+               return hr;
+       }
+       pUserFormObj->SetMessageLoopImpl(pMessageLoopImpl);
+
+       *ppForm = pUserForm.Detach();
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::VersionCheck(BSTR path, SHORT v1, SHORT v2, SHORT v3, SHORT v4, SHORT *pRetcode)
+{
+       if (!pRetcode) {
+               return E_POINTER;
+       }
+
+       SHORT ret = -1;
+
+       DWORD attr = ::GetFileAttributes(path);
+       if(attr == -1){
+               // \83t\83@\83C\83\8b\82ª\91\8dÝ\82µ\82È\82¢\81B\83C\83\93\83X\83g\81[\83\8b\82ª\95K\97v\81B
+               ret = 0;
+
+       } else if(attr & FILE_ATTRIBUTE_DIRECTORY){
+               // \83f\83B\83\8c\83N\83g\83\8a\96¼\82Æ\82µ\82Ä\91\8dÝ\82·\82é\82½\82ß\8eg\97p\95s\89Â\94\
+               ret = -1;
+
+       } else {
+               DWORD dwHandle = 0; // \8eg\97p\82³\82ê\82È\82¢
+               DWORD siz = GetFileVersionInfoSize(path, &dwHandle);
+               if (siz > 0) {
+                       std::vector<BYTE> buf(siz);
+                       if (GetFileVersionInfo(path, dwHandle, siz, &buf[0])) {
+                               VS_FIXEDFILEINFO *pFixedFileInfo = 0;
+                               UINT len = 0;
+                               if (VerQueryValue(&buf[0], _T("\\"), reinterpret_cast<LPVOID *>(&pFixedFileInfo), &len)) {
+                                       DWORD versionMS = MAKELONG(v2, v1);
+                                       DWORD versionLS = MAKELONG(v4, v3);
+                                       if (pFixedFileInfo->dwFileVersionMS >= versionMS ||
+                                               ((pFixedFileInfo->dwFileVersionMS == versionMS) && 
+                                                (pFixedFileInfo->dwFileVersionLS >= versionLS))) {
+                                                       // \83o\81[\83W\83\87\83\93\82ª\93\99\82µ\82¢\82©\81A\82æ\82è\90V\82µ\82¢\83t\83@\83C\83\8b\82ª\91\8dÝ\82·\82é\8fê\8d\87
+                                                       ret = 1;
+                                       } else {
+                                               // \8cÃ\82¢\8fê\8d\87
+                                               ret = 0;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       *pRetcode = ret;
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::CreateDirectory(BSTR path, VARIANT_BOOL *pRetcode)
+{
+       if (!pRetcode) {
+               return E_POINTER;
+       }
+
+       DWORD attr = ::GetFileAttributes(path);
+       if (attr != -1 && (attr & FILE_ATTRIBUTE_DIRECTORY) != 0) {
+               // \82·\82Å\82É\83t\83H\83\8b\83_\82ª\91\8dÝ\82·\82é
+               *pRetcode = VARIANT_TRUE;
+               return S_FALSE;
+       }
+
+       int ret = SHCreateDirectory(NULL, path);
+       if (ret == ERROR_SUCCESS) {
+               // \83f\83B\83\8c\83N\83g\83\8a\8dì\90¬\82É\90¬\8c÷
+               *pRetcode = VARIANT_TRUE;
+               return S_OK;
+       }
+
+       *pRetcode = VARIANT_FALSE;
+       return S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::GetFileVersion(BSTR path, LONG *pFileVersion)
+{
+       if (!pFileVersion) {
+               return E_POINTER;
+       }
+
+       DWORD version = 0;
+
+       DWORD attr = ::GetFileAttributes(path);
+       if (attr != -1 && (attr & FILE_ATTRIBUTE_DIRECTORY) != 0) {
+               // \83p\83X\82ª\91\8dÝ\82µ\81A\8a\8e\82Â\81A\83f\83B\83\8c\83N\83g\83\8a\82Å\82È\82¢\8fê\8d\87
+               DWORD dwHandle = 0; // \8eg\97p\82³\82ê\82È\82¢
+               DWORD siz = GetFileVersionInfoSize(path, &dwHandle);
+               if (siz > 0) {
+                       std::vector<TCHAR> buf(siz);
+                       if (GetFileVersionInfo(path, dwHandle, siz, &buf[0])) {
+                               VS_FIXEDFILEINFO *pFixedFileInfo = 0;
+                               UINT len = 0;
+                               if (VerQueryValue(&buf[0], _T("\\"), reinterpret_cast<LPVOID *>(&pFixedFileInfo), &len)) {
+                                       version = MAKELONG(pFixedFileInfo->dwFileVersionLS, pFixedFileInfo->dwFileVersionMS);
+                               }
+                       }
+               }
+       }
+
+       *pFileVersion = version;
+
+       return (version != 0) ? S_OK : S_FALSE;
+}
+
+/**
+ * \83V\83\83\83b\83g\83_\83E\83\93\93Á\8c \82ð\97L\8cø\82É\82·\82é\81B
+ * \82±\82Ì\82 \82Æ\83V\83\83\83b\83g\83_\83E\83\93\82ª\8en\82Ü\82é\82Í\82¸\82È\82Ì\82Å\96³\8cø\82É\82·\82é\8b@\94\\82Í\82È\82µ\81B
+ */
+HRESULT CScrDlgRoot::PrivilegeShutdown()
+{
+       try {
+               CAccessToken accToken;
+               if (!accToken.GetProcessToken(TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY)) {
+                       AtlThrowLastWin32();
+               }
+
+               bool errNotAllAssigned = false;
+               if (!accToken.EnablePrivilege(SE_SHUTDOWN_NAME, NULL, &errNotAllAssigned) || errNotAllAssigned) {
+                       return Error(IDS_NO_SHUTDOWN_PRIVILEGE);
+               }
+
+       } catch (CAtlException &) {
+               // \93Á\8c \82ð\97L\8cø\82É\82Å\82«\82È\82©\82Á\82½\8fê\8d\87\82Í\83G\83\89\81[\82ð\92Ê\92m\82·\82é
+               return Error(IDS_NO_SHUTDOWN_PRIVILEGE);
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::ExitWindows(SHORT mode, VARIANT_BOOL *pRetcode)
+{
+       if (!pRetcode) {
+               return E_POINTER;
+       }
+
+       // \83V\83\83\83b\83g\83_\83E\83\93\97\9d\97R
+       DWORD dwReason =  SHTDN_REASON_MAJOR_APPLICATION
+                                       | SHTDN_REASON_MINOR_MAINTENANCE
+                                       | SHTDN_REASON_FLAG_PLANNED;
+
+       UINT flg = EWX_LOGOFF;
+       switch (mode & 0x0f) {
+               case 0:
+               default:
+                       flg = EWX_LOGOFF;
+                       dwReason = 0; // \83\8d\83O\83I\83t\82É\82Í\97\9d\97R\82Í\82¢\82ç\82È\82¢\81B
+                       break;
+
+               case 1:
+                       flg = EWX_POWEROFF;
+                       break;
+
+               case 2:
+                       {
+                               DWORD dwVersion = GetVersion();
+                               DWORD dwMajorVersion = static_cast<DWORD>(LOBYTE(LOWORD(dwVersion)));
+
+                               if (dwMajorVersion >= 6) {
+                                       // Vista\88È\8d~ (ver2\82Å\92Ç\89Á)
+#ifndef EWX_RESTARTAPPS
+#define EWX_RESTARTAPPS     0x00000040
+#endif /* _WIN32_WINNT >= 0x0600 */
+                                       flg = EWX_RESTARTAPPS;
+                               } else {
+                                       // Vista\88È\91O(2000/XP)
+                                       flg = EWX_REBOOT;
+                               }
+                       }
+                       break;
+
+               case 3:
+                       // \82©\82Â\82ÄPC\82ª\8e©\95ª\82Å\93d\8c¹OFF\82ð\90§\8cä\82Å\82«\82È\82©\82Á\82½\8d \82Ì\96¼\8ec\81B
+                       // XPSP1\88È\8d~\81A\83}\83V\83\93\82ª\8e©\95ª\82Å\93d\8c¹\92f\82Å\82«\82é\8fê\8d\87\82ÍEWX_POWEROFF\82Æ\93¯\82\81B
+                       flg = EWX_SHUTDOWN;
+                       break;
+       }
+
+       if (mode > 0x0f) {
+               flg |= EWX_FORCEIFHUNG; // Ver2\82ÅEWX_FORCE\82©\82ç\95Ï\8dX\81B
+       }
+
+       // WindowsXP\88È\8d~\81APOWEROFF/REBOOT/SHUTDOWN\82Ì\8fê\8d\87\81A\93Á\8c \82ð\97L\8cø\82É\82·\82é\95K\97v\82ª\82 \82é\81B
+       // Ver2\82Å\92Ç\89Á\81B
+       if (mode & EWX_POWEROFF || mode & EWX_REBOOT || mode & EWX_SHUTDOWN) {
+               HRESULT hr;
+               if (FAILED(hr = PrivilegeShutdown())) {
+                       // \83V\83\83\83b\83g\83_\83E\83\93\93Á\8c \82ð\8ds\8eg\82Å\82«\82¸\81B
+                       return hr;
+               }
+       }
+       
+       // ScriptScriptDialog\82Í\91Î\98b\83\82\81[\83h\82Å\8eg\82í\82ê\82é\82Ì\82Å InitiateSystemShutdownEx \82Å\82Í\82È\82¢\81B
+       if (!ExitWindowsEx(flg, dwReason)) {
+               return HRESULT_FROM_WIN32(GetLastError());
+       }
+
+       *pRetcode = VARIANT_TRUE; // ver1\82Å\82Í\90¬\8c÷\82Ì\89Â\94Û\82ð\95Ô\82µ\82Ä\82¢\82½\82ª\81AVer2\82Å\82Í\83G\83\89\81[\82Æ\82µ\82½\81B
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::GetSpecialFolderPath(SPECIALFOLDERTYPE folderId, VARIANT *pResult)
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       // \8f\89\8aú\89»
+       VariantInit(pResult);
+       pResult->vt = VT_NULL;
+
+       // \83V\83F\83\8b\82Ì\83A\83\8d\83P\81[\83^\82ð\8eæ\93¾\82·\82é
+       HRESULT hr;
+       CComPtr<IMalloc> pMalloc(NULL);
+       if (FAILED(hr = SHGetMalloc(&pMalloc))) {
+               return hr;
+       }
+
+       // \83t\83H\83\8b\83_\82Ì\83p\83X\82ð\8eæ\93¾\82·\82é
+       hr = S_FALSE;
+       LPITEMIDLIST pidlist;
+       if (SUCCEEDED(SHGetSpecialFolderLocation(NULL, folderId, &pidlist))) {
+               TCHAR path[MAX_PATH];
+               if (SHGetPathFromIDList(pidlist, path)) {
+                       // \83p\83X\82ª\8eæ\93¾\82Å\82«\82½\8fê\8d\87
+                       pResult->vt = VT_BSTR;
+                       pResult->bstrVal = SysAllocString(path);
+                       hr = S_OK;
+               }
+               pMalloc->Free(pidlist);
+       }
+
+       return hr;
+}
+
+STDMETHODIMP CScrDlgRoot::CreateOutputWindow(IOutputWindow **ppOutputWindow)
+{
+       if (!ppOutputWindow) {
+               return E_POINTER;
+       }
+
+       CComObject<COutputWindow> *pOutputWindow = NULL;
+       HRESULT hr = CComObject<COutputWindow>::CreateInstance(&pOutputWindow);
+       if (FAILED(hr)){
+               return hr;
+       }
+
+       *ppOutputWindow = NULL;
+       return pOutputWindow->QueryInterface(IID_IOutputWindow, reinterpret_cast<void**>(ppOutputWindow));
+}
+
+STDMETHODIMP CScrDlgRoot::DoEvents(VARIANT timeout, SHORT *pEventcode)
+{
+       if (!pEventcode) {
+               return E_POINTER;
+       }
+
+       // Ver2\82æ\82è\91Ò\8b@\8e\9e\8aÔ\82ð\90Ý\92è\89Â\94\\82Æ\82µ\82½\81B\83I\83v\83V\83\87\83\93\81B
+       DWORD dwTimeout = 0;
+       if (!IsNullOrError(&timeout)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &timeout, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+               if (tmp.iVal < 0) {
+                       dwTimeout = 0;
+               } else {
+                       dwTimeout = tmp.iVal * 10; // 10mSec\92P\88Ê\82ðmSec\82É\95â\90³\81ACUserForm::WaitEvent\82Æ\82 \82í\82¹\82é\81B
+               }
+       }
+
+       // \83\81\83b\83Z\81[\83W\82ª\82­\82é\82©\81A\83^\83C\83\80\83A\83E\83g\82·\82é\82Ü\82Å\91Ò\8b@\82·\82é
+       DWORD reason = MsgWaitForMultipleObjects(0, NULL, FALSE, dwTimeout, QS_ALLINPUT);
+       ATLASSERT(reason != 0xffffffff);
+
+       // \83^\83C\83\80\83A\83E\83g\82©\82Ç\82¤\82©\82É\8aÖ\82í\82ç\82¸\83\81\83b\83Z\81[\83W\83\8b\81[\83v\82ð\8f\88\97\9d\82µ\82Ä\82¨\82­
+       HRESULT hr = DoMessageLoop();
+
+       // \96ß\82è\92l\82Í\8fí\82É0
+       *pEventcode = 0;
+
+       return hr;
+}
+
+STDMETHODIMP CScrDlgRoot::Sleep(SHORT tim)
+{
+       ::Sleep(tim);
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::GetTempPath(BSTR *pTempPath)
+{
+       if (!pTempPath) {
+               return E_POINTER;
+       }
+
+       TCHAR tempPath[MAX_PATH];
+       if (!::GetTempPath(MAX_PATH, tempPath)) {
+               // \88ê\8e\9e\83f\83B\83\8c\83N\83g\83\8a\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87
+               DWORD errcode = GetLastError();
+               return HRESULT_FROM_WIN32(errcode);
+       }
+
+       *pTempPath = SysAllocString(tempPath);
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::GetTempFileName(VARIANT varTempDir, VARIANT varTempPrefix, VARIANT *pTempFileName)
+{
+       if (!pTempFileName) {
+               return E_POINTER;
+       }
+       VariantInit(pTempFileName);
+       pTempFileName->vt = VT_NULL;
+
+       // \83e\83\93\83|\83\89\83\8a\83f\83B\83\8c\83N\83g\83\8a\82Ì\8ew\92è\82ð\8eæ\93¾\82·\82é
+       CComBSTR tempDir;
+       if (!IsNullOrError(&varTempDir)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varTempDir, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               tempDir.Attach(tmp.bstrVal);
+       }
+       if (tempDir.Length() == 0) {
+               // \82È\82¯\82ê\82Î\83J\83\8c\83\93\83g
+               tempDir = L".";
+       }
+
+       // \88ê\8e\9e\83t\83@\83C\83\8b\82Ì\83v\83\8c\83t\83B\83b\83N\83X\8ew\92è\82ð\8eæ\93¾\82·\82é\81B
+       CComBSTR tempPrefix;
+       if (!IsNullOrError(&varTempPrefix)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varTempPrefix, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               tempPrefix.Attach(tmp.bstrVal);
+       }
+       if (tempPrefix.Length() == 0) {
+               // \82È\82¯\82ê\82Î\81utmp\81v\82ð\83v\83\8a\83t\83B\83b\83N\83X\82Æ\82·\82é
+               tempPrefix = L"tmp";
+       }
+
+       // \88ê\8e\9e\83t\83@\83C\83\8b\96¼\82Ì\8dì\90¬
+       TCHAR tempFileName[MAX_PATH];
+       if (!::GetTempFileName(tempDir, tempPrefix, 0, tempFileName)) {
+               // \88ê\8e\9e\83t\83@\83C\83\8b\96¼\82Ì\8dì\90¬\82É\8e¸\94s\82µ\82½\8fê\8d\87
+               DWORD errcode = GetLastError();
+               return HRESULT_FROM_WIN32(errcode);
+       }
+
+       pTempFileName->vt = VT_BSTR;
+       pTempFileName->bstrVal = SysAllocString(tempFileName);
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::GetFileAttributes(BSTR path, LONG *pAttributes)
+{
+       if (!pAttributes) {
+               return E_POINTER;
+       }
+
+       *pAttributes = ::GetFileAttributes(path);
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::GetFileLastWriteTime(BSTR path, VARIANT *pFileTime)
+{
+       if (!pFileTime) {
+               return E_POINTER;
+       }
+       VariantInit(pFileTime);
+       pFileTime->vt = VT_NULL;
+
+       HANDLE handle = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+       if (handle != INVALID_HANDLE_VALUE) {
+               COleDateTime fileTime;
+               FILETIME ftWrite, ftCreation, ftLastAccess;
+               if (GetFileTime(handle, &ftCreation, &ftLastAccess, &ftWrite)) {
+                       fileTime = ftLastAccess;
+                       pFileTime->vt = VT_DATE;
+                       pFileTime->date = fileTime.m_dt;
+               }
+               CloseHandle(handle);
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::GetFileCreationTime(BSTR path, VARIANT *pFileTime)
+{
+       if (!pFileTime) {
+               return E_POINTER;
+       }
+       VariantInit(pFileTime);
+       pFileTime->vt = VT_NULL;
+
+       HANDLE handle = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+       if (handle != INVALID_HANDLE_VALUE) {
+               COleDateTime fileTime;
+               FILETIME ftWrite, ftCreation, ftLastAccess;
+               if (GetFileTime(handle, &ftCreation, &ftLastAccess, &ftWrite)) {
+                       fileTime = ftCreation;
+                       pFileTime->vt = VT_DATE;
+                       pFileTime->date = fileTime.m_dt;
+               }
+               CloseHandle(handle);
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::MessageBox(BSTR mes, VARIANT varTitle, VARIANT varMode, SHORT *pRetcode)
+{
+       if (!pRetcode) {
+               return E_POINTER;
+       }
+
+       CComBSTR title;
+       if (!IsNullOrError(&varTitle)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varTitle, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               title.Attach(tmp.bstrVal);
+       }
+       if (title.Length() == 0) {
+               title.LoadString(IDS_MESSAGEBOXDEFAULTTITLE);
+       }
+
+       DWORD mode = MB_OK | MB_ICONERROR; // \83f\83t\83H\83\8b\83g
+       if (!IsNullOrError(&varMode)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varMode, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               int btn = tmp.iVal % 10;
+               int icn = tmp.iVal / 10;
+               switch (btn) {
+                       case MESSAGEBOXMODE_OK:
+                               mode = MB_OK;
+                               break;
+
+                       case MESSAGEBOXMODE_OKCANCEL:
+                               mode = MB_OKCANCEL;
+                               break;
+
+                       case MESSAGEBOXMODE_YESNO:
+                               mode = MB_YESNO;
+                               break;
+
+                       case MESSAGEBOXMODE_YESNOCANCEL:
+                               mode = MB_YESNOCANCEL;
+                               break;
+
+                       case MESSAGEBOXMODE_RETRYCANCEL:
+                               mode = MB_RETRYCANCEL;
+                               break;
+
+                       case MESSAGEBOXMODE_ABORTRETRYIGNORE:
+                               mode = MB_ABORTRETRYIGNORE;
+                               break;
+
+                       default:
+                               mode = MB_OK;
+                               break;
+               }
+               switch (icn * 10) {
+                       case MESSAGEBOXICON_ERROR:
+                               mode |= MB_ICONERROR;
+                               break;
+
+                       case MESSAGEBOXICON_INFORMATION:
+                               mode |= MB_ICONINFORMATION;
+                               break;
+
+                       case MESSAGEBOXICON_QUESTION:
+                               mode |= MB_ICONQUESTION;
+                               break;
+
+                       case MESSAGEBOXICON_NORMAL:
+                       default:
+                               break;
+               }
+       }
+       mode |= MB_TASKMODAL | MB_SETFOREGROUND;
+
+       int retcode = ::MessageBox(::GetActiveWindow(), mes, title, mode);
+       
+       int result = -1;
+
+       if (retcode == IDOK || retcode == IDYES || retcode ==IDRETRY) {
+               result = 1;
+       }
+       
+       if (retcode == IDNO || retcode == IDIGNORE) {
+               result = 0;
+       }
+       
+       *pRetcode = retcode;
+       return result == 1 ? S_OK : S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::FloatS(double value, VARIANT varLen, BSTR *pRet)
+{
+       if (!pRet) {
+               return E_POINTER;
+       }
+
+       int nLen = m_defaultFS;
+       if (!IsNullOrError(&varLen)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varLen, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+               nLen = tmp.iVal;
+       }
+
+       if (nLen < 0) {
+               // \8ew\92è\8c\85\90\94\95ª\82¾\82¯\8c\85\88Ê\92u\82ð\83V\83t\83g\82µ\82½\82Ì\82¿\81A\8f¬\90\94\93_\88È\89º\82Í\94ñ\95\\8e¦\82Æ\82·\82é\81B
+               nLen = -nLen;
+               double xb = pow((double) 10, (double) nLen);
+               const int bufsiz = nLen + 64;
+               std::vector<TCHAR> buf(bufsiz); // \90\94\8e\9a\82Í\8dÅ\91å\82Å\82à64\8c\85\96¢\96\9e\82É\82È\82é\82Æ\91z\92è
+               _stprintf_s(&buf[0], bufsiz, _T("%.0lf"), value * xb);
+               *pRet = SysAllocString(&buf[0]);
+
+       } else {
+               // \8f­\90\94\8c\85\95\9d\8ew\92è
+               const int fmtsiz = 64;
+               TCHAR fmt[fmtsiz];
+               _stprintf_s(fmt, fmtsiz, _T("%%.%dlf"), nLen);
+               const int bufsiz = nLen + 32;
+               std::vector<TCHAR> buf(bufsiz); // \90\94\8e\9a\82Í\8dÅ\91å\82Å\82à32\8c\85\96¢\96\9e\82É\82È\82é\82Æ\91z\92è
+               _stprintf_s(&buf[0], bufsiz, fmt, value);
+               *pRet = SysAllocString(&buf[0]);
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::IntS(long value, VARIANT varLen, BSTR *pRet)
+{
+       if (!pRet) {
+               return E_POINTER;
+       }
+
+       int nLen = m_defaultIS;
+       if (!IsNullOrError(&varLen)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varLen, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+               nLen = tmp.iVal;
+       }
+
+       // \83t\83B\81[\83\8b\83h\82Ì\95\9d\82ð\8eæ\93¾
+       int width;
+       if (nLen < 0) {
+               width = -nLen;
+       } else {
+               width = nLen;
+       }
+
+       // \83o\83b\83t\83@\82Ì\8am\95Û
+       std::vector<TCHAR> fmt(64);
+       std::vector<TCHAR> buf(width + 16); // \90\94\8e\9a\82Í\8dÅ\91å\82Å\82à16\8c\85\96¢\96\9e\82É\82È\82é\82Æ\91z\92è\81B
+
+       if (nLen < 0) {
+               // \8bó\94\92\8bl\82ß
+               _stprintf_s(&fmt[0], fmt.size(), _T("%%%dld"), width);
+       } else {
+               // \83[\83\8d\96\84\82ß
+               _stprintf_s(&fmt[0], fmt.size(), _T("%%0%dld"), width);
+       }
+
+       _stprintf_s(&buf[0], buf.size(), &fmt[0], value);
+
+       *pRet = SysAllocString(&buf[0]);
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::IsEqual(double val1, double val2, VARIANT varTolerance, VARIANT_BOOL *pResult)
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       double tolerance = m_defaultTolerance;
+       if (!IsNullOrError(&varTolerance)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varTolerance, VARIANT_NOUSEROVERRIDE, VT_R8);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_R8);
+               tolerance = tmp.dblVal;
+       }
+
+       *pResult = (abs(val1 - val2) <= tolerance) ? VARIANT_TRUE : VARIANT_FALSE;
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::IsPointEqual(double x1, double y1, double x2, double y2, VARIANT varTolerance, VARIANT_BOOL *pResult)
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       double tolerance = m_defaultTolerance;
+       if (!IsNullOrError(&varTolerance)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &varTolerance, VARIANT_NOUSEROVERRIDE, VT_R8);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_R8);
+               tolerance = tmp.dblVal;
+       }
+
+       double len = sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));
+       *pResult = (len <= tolerance) ? VARIANT_TRUE : VARIANT_FALSE;
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::CreateList(IVarArray **ppCreatedList)
+{
+       if (!ppCreatedList) {
+               return E_POINTER;
+       }
+
+       CComObject<CVarArray> *pList = NULL;
+       HRESULT hr = CComObject<CVarArray>::CreateInstance(&pList);
+       if (FAILED(hr)){
+               return hr;
+       }
+
+       *ppCreatedList = NULL;
+       return pList->QueryInterface(IID_IVarArray, reinterpret_cast<void**>(ppCreatedList));
+}
+
+STDMETHODIMP CScrDlgRoot::ChangeExtensionName(BSTR path, BSTR newExtentionName, BSTR *pNewPath)
+{
+       if (!pNewPath) {
+               return E_POINTER;
+       }
+
+       int len1 = SysStringLen(path);
+       int len2 = SysStringLen(newExtentionName);
+
+       std::vector<OLECHAR> buf(len1 + len2 + 2); // \8ag\92£\8eq\92Ç\89Á\8e\9e\82Ì\83h\83b\83g\82ª\91\9d\82¦\82é\83P\81[\83X\82Æ\8fI\92[\8aÜ\82Þ
+       LPOLESTR pBuf = &buf[0];
+       memcpy(pBuf, path, sizeof(OLECHAR) * len1);
+
+       LPOLESTR p = pBuf; // \83o\83b\83t\83@\82Ì\90æ\93ª
+
+       while (*p) p++; // \8fI\92[\82ð\82Ý\82Â\82¯\82é
+       LPOLESTR pEnd = p;
+
+       // \83p\83X\8bæ\90Ø\82è\82Ì\96\96\92[\82É\82 \82é\8dÅ\8cã\82Ì\83h\83b\83g\82ð\8eæ\93¾\82·\82é\81B
+       LPOLESTR pDot = NULL;
+       while (p > pBuf) {
+               if (*p == '.') {
+                       // \83h\83b\83g\82ð\94­\8c©
+                       pDot = p;
+                       break;
+               }
+               if (*p == '/' || *p == '\\') {
+                       // \96\96\92[\82Å\82È\82­\82È\82Á\82½\82Ì\82Å\92\86\8e~
+                       break;
+               }
+               p--;
+       }
+
+       if (pDot != NULL) {
+               // \8aù\91\82Ì\8ag\92£\8eq\82 \82è
+               if (len2 == 0) {
+                       // \90V\82ç\82µ\82¢\8ag\92£\8eq\82È\82µ
+                       *pDot = 0;
+               } else {
+                       // \90V\82ç\82µ\82¢\8ag\92£\8eq\82É\92u\82«\8a·\82¦
+                       memcpy(pDot + 1, newExtentionName, sizeof(OLECHAR) * (len2 + 1));
+               }
+       } else {
+               // \8aù\91\82Ì\8ag\92£\8eq\82È\82µ
+               if (len2 == 0) {
+                       // \90V\82µ\82¢\8ag\92£\8eq\82È\82µ -> \89½\82à\82¹\82¸
+               } else {
+                       // \8ag\92£\8eq\82ð\82Â\82¯\82é\82½\82ß\81A\83h\83b\83g\82ð\82Â\82¯\82Ä\8ag\92£\8eq\82ð\98A\8c\8b\82·\82é\81B
+                       memcpy(pEnd, L".", sizeof(OLECHAR) * 1);
+                       memcpy(pEnd + 1, newExtentionName, sizeof(OLECHAR) * (len2 + 1));
+               }
+       }
+
+       *pNewPath = SysAllocString(pBuf);
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::get_ProfileValue(BSTR name, VARIANT section, BSTR *pValue)
+{
+       if (m_profilePath.Length() == 0) {
+               // \90Ý\92è\83t\83@\83C\83\8b\82Ö\82Ì\83p\83X\82ª\96¢\8ew\92è\82Å\82 \82é
+               return HRESULT_FROM_WIN32(ERROR_INVALID_STATE);
+       }
+
+       if (SysStringLen(name) == 0) {
+               // \90Ý\92è\96¼\82Í\95K\90{
+               return E_INVALIDARG;
+       }
+
+       // \96ß\82è\92l\82Ì\8f\89\8aú\89»
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       // \83Z\83N\83V\83\87\83\93\96¼\82ª\8ew\92è\82³\82ê\82Ä\82¢\82ê\82Î\8eæ\82è\8fo\82·\81B\82È\82¯\82ê\82Î\83f\83t\83H\83\8b\83g\96¼\82ð\97p\82¢\82é\81B
+       CComBSTR sect;
+       if (!IsNullOrError(&section)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &section, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               sect.Attach(tmp.bstrVal);
+       }
+       if (sect.Length() == 0) {
+               sect.LoadString(IDS_PROFILESECTIONNAME);
+       }
+
+       const size_t bufsiz = 4096;
+       TCHAR buf[bufsiz] = {0};
+       
+       DWORD ret = GetPrivateProfileString(sect, name, _T(""), buf, bufsiz, m_profilePath);
+       *pValue = SysAllocString(buf);
+
+       // \93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ä\82à\83G\83\89\81[\82Æ\82Í\82µ\82È\82¢\81B
+       return ret ? S_OK : S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::put_ProfileValue(BSTR name, VARIANT section, BSTR newValue)
+{
+       if (m_profilePath.Length() == 0) {
+               // \90Ý\92è\83t\83@\83C\83\8b\82Ö\82Ì\83p\83X\82ª\96¢\8ew\92è\82Å\82 \82é
+               return HRESULT_FROM_WIN32(ERROR_INVALID_STATE);
+       }
+
+       if (SysStringLen(name) == 0) {
+               // \90Ý\92è\96¼\82Í\95K\90{
+               return E_INVALIDARG;
+       }
+
+       // \83Z\83N\83V\83\87\83\93\96¼\82ª\8ew\92è\82³\82ê\82Ä\82¢\82ê\82Î\8eæ\82è\8fo\82·\81B\82È\82¯\82ê\82Î\83f\83t\83H\83\8b\83g\96¼\82ð\97p\82¢\82é\81B
+       CComBSTR sect;
+       if (!IsNullOrError(&section)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &section, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_BSTR);
+               sect.Attach(tmp.bstrVal);
+       }
+       if (sect.Length() == 0) {
+               sect.LoadString(IDS_PROFILESECTIONNAME);
+       }
+
+       // NULL\82Í\8bó\95\8e\9a\82Æ\8c©\82È\82·\81B
+       LPCWSTR lpszNewValue;
+       if (newValue == NULL) {
+               lpszNewValue = L"";
+       } else {
+               lpszNewValue = newValue;
+       }
+
+       if (::WritePrivateProfileString(sect, name, lpszNewValue, m_profilePath)) {
+               return S_OK;
+       }
+
+       // \8f\91\82«\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ä\82à\83G\83\89\81[\82Æ\82Í\82µ\82È\82¢\81B
+       return S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::CopyFile(BSTR src, BSTR dist, VARIANT overwrite, VARIANT_BOOL *pResult)
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+       if (src == NULL || dist == NULL) {
+               return E_INVALIDARG;
+       }
+
+       BOOL bOverwrite = FALSE;
+       if (!IsNullOrError(&overwrite)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               HRESULT hr = VariantChangeType(&tmp, &overwrite, VARIANT_NOUSEROVERRIDE, VT_I2);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+               ATLASSERT(tmp.vt == VT_I2);
+               bOverwrite = tmp.iVal ? TRUE : FALSE;
+               VariantClear(&tmp);
+       }
+       
+       VARIANT_BOOL ret = ::CopyFile(src, dist, bOverwrite) ? VARIANT_TRUE : VARIANT_FALSE;
+
+       *pResult = ret;
+       return ret ? S_OK : S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::MoveFile(BSTR src, BSTR dist, VARIANT overwrite, VARIANT_BOOL *pResult)
+{
+       HRESULT hr = CopyFile(src, dist, overwrite, pResult);
+       if (SUCCEEDED(hr) && *pResult) {
+               // \96ß\82è\92l\83|\83C\83\93\83^\82ª\97L\8cø\8a\8e\82Â\83R\83s\81[\90¬\8c÷\82Ì\8fê\8d\87\82Ì\82Ý
+               ::DeleteFile(src);
+       }
+       return hr;
+}
+
+STDMETHODIMP CScrDlgRoot::WaitCursor(SHORT enableWaitCursor)
+{
+       HCURSOR hWait;
+       if (enableWaitCursor) {
+               hWait = LoadCursor(NULL, IDC_WAIT);
+       } else {
+               hWait = LoadCursor(NULL, IDC_ARROW);
+       }
+
+       ::SetCursor(hWait);
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::GetLocalPathName(BSTR orgPath, VARIANT *pNewPath)
+{
+       if (!pNewPath) {
+               return E_POINTER;
+       }
+       VariantInit(pNewPath);
+       pNewPath->vt = VT_NULL;
+
+       if (SysStringLen(orgPath) == 0) {
+               // \8c³\82ª\8bó\82È\82Ì\82Å\95Ï\8a·\82¹\82¸
+               return S_FALSE;
+       }
+
+       // file\83X\83L\81[\83}\8c`\8e®\82©?
+       if (UrlIsFileUrl(orgPath)) {
+               TCHAR pathBuf[MAX_PATH];
+               DWORD siz = MAX_PATH;
+               if (SUCCEEDED(PathCreateFromUrl(orgPath, pathBuf, &siz, NULL))) {
+                       // \83p\83X\82ð\8eæ\93¾\82·\82é
+                       pNewPath->vt = VT_BSTR;
+                       pNewPath->bstrVal = SysAllocString(pathBuf);
+                       return S_OK;
+               }
+               // \8eæ\93¾\82É\8e¸\94s
+               return S_FALSE;
+       }
+
+       // UNC\8c`\8e®\82©?
+       if (PathIsUNC(orgPath)) {
+               pNewPath->vt = VT_BSTR;
+               pNewPath->bstrVal = SysAllocString(orgPath);
+               return S_OK;
+       }
+
+       // \90â\91Î\83p\83X\8c`\8e®\82©?
+       if (SysStringLen(orgPath) > 2) {
+               if (orgPath[1] == ':') {
+                       // 2\95\8e\9a\96Ú\82ª\83h\83\89\83C\83u\83\8c\83^\81[\82È\82ç\90â\91Î\83p\83X\82Æ\8c©\82È\82µOK\82Æ\82·\82é\81B
+                       pNewPath->vt = VT_BSTR;
+                       pNewPath->bstrVal = SysAllocString(orgPath);
+                       return S_OK;
+               }
+       }
+
+       // \82»\82ê\88È\8aO\82Í\82¾\82ß\81B
+       return S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::FindWindow(BSTR clsname, BSTR caption, VARIANT *pWndHandle)
+{
+       // *NOTE* \82±\82Ì\83\81\83\\83b\83h\82Í\82à\82Æ\82à\82Æ\83w\83\8b\83v\82É\8bL\8dÚ\82ª\82È\82¢\81B
+
+       if (!pWndHandle) {
+               return E_POINTER;
+       }
+
+       VariantInit(pWndHandle);
+       pWndHandle->vt = VT_NULL;
+
+       if (caption && !caption[0]) {
+               caption = NULL;
+       }
+
+       HWND hWnd = ::FindWindow(clsname, caption);
+       if (hWnd) {
+               pWndHandle->vt = VT_I4;
+               pWndHandle->lVal = reinterpret_cast<LONG>(hWnd);
+               return S_OK;
+       }
+
+       return S_FALSE;
+}
+
+STDMETHODIMP CScrDlgRoot::GetFileURL(BSTR orgPath, VARIANT *pFileURL)
+{
+       // \82±\82Ì\83\81\83\\83b\83h\82Í\83e\83X\83g\82ð\8c\93\82Ë\82ÄVer2\82Å\92Ç\89Á\82µ\82Ü\82µ\82½\81B
+       // GetLocalPathName\82Æ\91Î\82É\82È\82è\82Ü\82·\81B
+
+       if (!pFileURL) {
+               return E_POINTER;
+       }
+
+       VariantInit(pFileURL);
+       pFileURL->vt = VT_NULL;
+
+       TCHAR fileUrlBuf[4096];
+       DWORD fileUrlBufSiz = 4096;
+       if (SUCCEEDED(UrlCreateFromPath(orgPath, fileUrlBuf, &fileUrlBufSiz, NULL))) {
+               pFileURL->vt = VT_BSTR;
+               pFileURL->bstrVal = SysAllocString(fileUrlBuf);
+               return S_OK;
+       }
+       
+       return S_FALSE;
+}
+
+
+// IMessageLoopImpl
+
+STDMETHODIMP CScrDlgRoot::DoMessageLoop()
+{
+       MSG msg = {0};
+
+loopHead:
+       while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
+
+               // \83_\83C\83A\83\8d\83O\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82·\82é
+               POSITION pos = m_lstChkDialog.GetHeadPosition();
+               while (pos) {
+                       HRESULT hr = m_lstChkDialog.GetNext(pos)->DoDialogMessage(&msg);
+                       if (hr == S_OK) {
+                               // \83_\83C\83A\83\8d\83O\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82µ\82½\8fê\8d\87
+                               goto loopHead;
+                       }
+               }
+
+               // \83_\83C\83A\83\8d\83O\83\81\83b\83Z\81[\83W\82Å\82È\82©\82Á\82½\8fê\8d\87
+               TranslateMessage(&msg);
+               DispatchMessage(&msg);
+       }
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::RegisterDialog(ICheckDialogMessage *pDlg)
+{
+       if (!pDlg) {
+               return E_INVALIDARG;
+       }
+
+       m_lstChkDialog.AddHead(pDlg);
+
+       return S_OK;
+}
+
+STDMETHODIMP CScrDlgRoot::UnregisterDialog(ICheckDialogMessage *pDlg)
+{
+       if (!pDlg) {
+               return E_INVALIDARG;
+       }
+
+       bool removed = false;
+       POSITION pos = m_lstChkDialog.GetHeadPosition();
+       while (pos) {
+               POSITION oldpos = pos;
+               if (m_lstChkDialog.GetNext(pos) == pDlg) {
+                       m_lstChkDialog.RemoveAt(oldpos);
+                       removed = true; // \88ê\89\9e\81A\91S\95\94\82Ì\8d\80\96Ú\82ð\8c©\82Ä\82Ü\82í\82é\81B
+               }
+       }
+
+       return removed ? S_OK : S_FALSE;
+}
+
+/**
+ * \95\8e\9a\97ñ\82ð\8bæ\90Ø\82è\95\8e\9a\82Å\95ª\8a\84\82µ\82½\8c\8b\89Ê\82ÌVBScript\97p\82ÌSafeArray\94z\97ñ\82ð\95Ô\82µ\82Ü\82·\81B
+ * \95\8e\9a\97ñ\82ª\8bó\82Ì\8fê\8d\87\82Í1\82Â\82Ì\8bó\82Ì\95\8e\9a\97ñ\82ª\8ai\94[\82³\82ê\82½\94z\97ñ\82ª\95Ô\82³\82ê\82Ü\82·\81B
+ * \95\8e\9a\97ñ\82ªNULL/EMPTY/ERROR\82Ì\8fê\8d\87\82Í\81A\81u\8bó\82Ì\94z\97ñ\81v\82ª\95Ô\82³\82ê\82Ü\82·\81B
+ * @param varText \8bæ\90Ø\82è\95\8e\9a\82Å\8bæ\90Ø\82ç\82ê\82½\95\8e\9a\97ñ\81A\82à\82µ\82­\82ÍNULL/ERROR/EMPTY
+ * @param varDelimiter \8bæ\90Ø\82è\95\8e\9a\81A\8fÈ\97ª\8e\9e\82Í\81u;\81v\81B\8bó\95\8e\9a\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\8bæ\90Ø\82è\95\8e\9a\82È\82µ
+ * @param pArray SAFEARRAY\82ð\8ai\94[\82·\82éVARIANT\82Ö\82Ì\83|\83C\83\93\83^
+ * @return HRESULT
+ */
+STDMETHODIMP CScrDlgRoot::ConvertStringToArray(VARIANT varText, VARIANT varDelimiter, VARIANT *pArray)
+{
+       if (!pArray) {
+               return E_POINTER;
+       }
+
+       HRESULT hr;
+
+       // \91Î\8fÛ\95\8e\9a\97ñ\82Ì\8eæ\93¾
+
+       if (IsNullOrError(&varText)) {
+               // Null\82Ü\82½\82ÍError\92l\82Ì\8fê\8d\87\81A\8bó\82Ì\94z\97ñ\82ð\95Ô\82·\81B
+               VariantInit(pArray);
+               pArray->vt = VT_ARRAY | VT_VARIANT;
+               pArray->parray = SafeArrayCreateVector(VT_VARIANT, 0, 0);
+               return S_OK;
+       }
+
+       CComVariant text;
+       hr = VariantChangeType(&text, &varText, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+       if (FAILED(hr)) {
+               return hr;
+       }
+       ATLASSERT(text.vt == VT_BSTR);
+
+       // \8bæ\90Ø\82è\95\8e\9a\82Ì\8eæ\93¾
+       WCHAR delimiter = ';'; 
+       hr = GetDelimiterChar(varDelimiter, &delimiter);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       return ArrayUtil::DelimitedStringToSafeArray(text.bstrVal, delimiter, pArray);
+}
+
+STDMETHODIMP CScrDlgRoot::ConvertArrayToString(VARIANT arr, VARIANT varDelimiter, VARIANT *pRet)
+{
+       if (!pRet) {
+               return E_POINTER;
+       }
+       VariantInit(pRet);
+       pRet->vt = VT_NULL;
+
+       HRESULT hr;
+
+       SAFEARRAY *pSafeArray = NULL;
+       hr = ArrayUtil::GetSafeArrayFromVariant(&arr, &pSafeArray);
+       if (hr == S_FALSE || FAILED(hr)) {
+               // NULL/ERROR/EMPTY\82Å\82 \82é\82©\81A\82à\82µ\82­\82Í
+               // SAFEARRAY\88È\8aO\82ª\8ai\94[\82³\82ê\82Ä\82¢\82½\8fê\8d\87
+               return hr;
+       }
+
+       // SAFEARRAY\82Ì\8ai\94[\8c^\82ð\8eæ\93¾
+       VARTYPE vt = VT_NULL;
+       hr = SafeArrayGetVartype(pSafeArray, &vt);
+       if (FAILED(hr)) {
+               return hr;
+       }
+       if (vt != VT_VARIANT && vt != VT_BSTR) {
+               // VARIANT\94z\97ñ\82à\82µ\82­\82ÍSTRING\94z\97ñ\82Ì\82Ý\83T\83|\81[\83g
+               return E_INVALIDARG;
+       }
+
+       // \94z\97ñ\82Ì\8e\9f\8c³\90\94\82ð\8eæ\93¾
+       UINT numOfDim = SafeArrayGetDim(pSafeArray);
+       if (numOfDim != 1) {
+               // \88ê\8e\9f\8c³\94z\97ñ\82Ì\82Ý\83T\83|\81[\83g
+               return E_INVALIDARG;
+       }
+
+       // \97v\91f\90\94\82Ì\8eæ\93¾
+       LONG lBound = 0, uBound = 0, numOfElements = 0;
+       hr = SafeArrayGetLBound(pSafeArray, 1, &lBound);
+       if (FAILED(hr)) {
+               return hr;
+       }
+       hr = SafeArrayGetUBound(pSafeArray, 1, &uBound);
+       if (FAILED(hr)) {
+               return hr;
+       }
+       numOfElements = uBound - lBound + 1;
+       
+       // \97v\91f\90\94\82ª\8bó\82Ì\8fê\8d\87
+       if (numOfElements == 0) {
+               // NULL\82ð\95Ô\82·\81B
+               return S_OK;
+       }
+
+       // \8bæ\90Ø\82è\95\8e\9a\82Ì\8eæ\93¾
+       WCHAR delimiter = ';'; 
+       hr = GetDelimiterChar(varDelimiter, &delimiter);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \94z\97ñ\82ð\93Ç\82Ý\8eæ\82è\95\8e\9a\97ñ\82É\95Ï\8a·\82·\82é
+
+       CComBSTR result;
+
+       for (LONG idx = lBound; idx <= uBound; idx++) {
+               ATLASSERT(vt == VT_VARIANT || vt == VT_BSTR);
+
+               CComBSTR itemVal;
+               long indices[] = {idx};
+
+               if (vt == VT_VARIANT) {
+                       CComVariant tmp;
+                       hr = SafeArrayGetElement(pSafeArray, &indices[0], reinterpret_cast<void*>(&tmp));
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+                       hr = tmp.ChangeType(VT_BSTR);
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+                       ATLASSERT(tmp.vt == VT_BSTR);
+
+                       tmp.vt = VT_EMPTY; // detach
+                       itemVal.Attach(tmp.bstrVal);
+
+               } else if (vt == VT_BSTR) {
+                       hr = SafeArrayGetElement(pSafeArray, &indices[0], reinterpret_cast<void*>(&itemVal));
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+               }
+
+               if (idx != lBound && delimiter != 0) {
+                       result.Append(delimiter);
+               }
+
+               if (itemVal.Length() > 0) {
+                       result.Append(itemVal);
+               }
+       }
+
+       BSTR ret = result.Detach();
+       if (ret) {
+               pRet->vt = VT_BSTR;
+               pRet->bstrVal = ret;
+       } else {
+               pRet->vt = VT_BSTR;
+               pRet->bstrVal = SysAllocString(L"");
+       }
+       
+       return S_OK;
+}
+
+HRESULT CScrDlgRoot::GetDelimiterChar(const VARIANT &varDelimiter, WCHAR *pDelimiter) throw()
+{
+       if (!pDelimiter) {
+               return E_POINTER;
+       }
+
+       // \8bæ\90Ø\82è\95\8e\9a\82Ì\8eæ\93¾
+       if (IsNullOrError(&varDelimiter)) {
+               return S_FALSE;
+       }
+
+       CComVariant tmp;
+       HRESULT hr = VariantChangeType(&tmp, &varDelimiter, VARIANT_NOUSEROVERRIDE, VT_BSTR);
+       if (FAILED(hr)) {
+               return hr;
+       }
+       ATLASSERT(tmp.vt == VT_BSTR);
+
+       WCHAR delimiter;
+       if (SysStringLen(tmp.bstrVal) > 0) {
+               if (IS_HIGH_SURROGATE(tmp.bstrVal[0])) {
+                       // \83T\83\8d\83Q\81[\83g\83y\83A\82Í\83T\83|\81[\83g\82³\82ê\82È\82¢
+                       return Error(IDS_UNSUPPORTED_SEPARATE_CHAR);
+               }
+               delimiter = tmp.bstrVal[0];
+
+       } else {
+               // \8bó\95\8e\9a\82Ì\8fê\8d\87\81A\8bæ\90Ø\82è\95\8e\9a\82Í\82È\82¢\82Æ\93\99\82µ\82¢\81B
+               delimiter = 0;
+       }
+
+       *pDelimiter = delimiter;
+
+       return S_OK;
+}
diff --git a/SeraphyScriptDialog/ScrDlgRoot.h b/SeraphyScriptDialog/ScrDlgRoot.h
new file mode 100644 (file)
index 0000000..b133d02
--- /dev/null
@@ -0,0 +1,156 @@
+// ScrDlgRoot.h : CScrDlgRoot \82Ì\90é\8c¾
+
+#pragma once
+#include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
+
+#include "SeraphyScriptDialog_i.h"
+
+#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
+#error "DCOM \82Ì\8a®\91S\83T\83|\81[\83g\82ð\8aÜ\82ñ\82Å\82¢\82È\82¢ Windows Mobile \83v\83\89\83b\83g\83t\83H\81[\83\80\82Ì\82æ\82¤\82È Windows CE \83v\83\89\83b\83g\83t\83H\81[\83\80\82Å\82Í\81A\92P\88ê\83X\83\8c\83b\83h COM \83I\83u\83W\83F\83N\83g\82Í\90³\82µ\82­\83T\83|\81[\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81BATL \82ª\92P\88ê\83X\83\8c\83b\83h COM \83I\83u\83W\83F\83N\83g\82Ì\8dì\90¬\82ð\83T\83|\81[\83g\82·\82é\82±\82Æ\81A\82¨\82æ\82Ñ\82»\82Ì\92P\88ê\83X\83\8c\83b\83h COM \83I\83u\83W\83F\83N\83g\82Ì\8eÀ\91\95\82Ì\8eg\97p\82ð\8b\96\89Â\82·\82é\82±\82Æ\82ð\8b­\90§\82·\82é\82É\82Í\81A_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA \82ð\92è\8b`\82µ\82Ä\82­\82¾\82³\82¢\81B\82²\8eg\97p\82Ì rgs \83t\83@\83C\83\8b\82Ì\83X\83\8c\83b\83\83\82\83f\83\8b\82Í 'Free' \82É\90Ý\92è\82³\82ê\82Ä\82¨\82è\81ADCOM Windows CE \88È\8aO\82Ì\83v\83\89\83b\83g\83t\83H\81[\83\80\82Å\83T\83|\81[\83g\82³\82ê\82é\97B\88ê\82Ì\83X\83\8c\83b\83\83\82\83f\83\8b\82Æ\90Ý\92è\82³\82ê\82Ä\82¢\82Ü\82µ\82½\81B"
+#endif
+
+
+
+// CScrDlgRoot
+
+class ATL_NO_VTABLE CScrDlgRoot :
+       public CComObjectRootEx<CComSingleThreadModel>,
+       public CComCoClass<CScrDlgRoot, &CLSID_SeraphyScriptDialogRoot>,
+       public ISupportErrorInfo,
+       public IDispatchImpl<IScrDlgRoot, &IID_IScrDlgRoot, &LIBID_SeraphyScriptDialog, /*wMajor =*/ 2, /*wMinor =*/ 0>,
+       public IMessageLoopImpl
+{
+public:
+       CScrDlgRoot()
+       {
+       }
+
+       static void WINAPI ObjectMain(bool bStarting)
+       {
+       }
+
+       // \83_\83C\83A\83\8d\83O\83\81\83b\83Z\81[\83W\82Ì\94»\92è\91Î\8fÛ\82Ì\83\8a\83X\83g
+       // \8fz\8aÂ\8eQ\8fÆ\82ð\94ð\82¯\82é\82½\82ßCInterfaceList\82Å\82Ì\8eQ\8fÆ\83J\83E\83\93\83^\90§\8cä\82Í\82µ\82Ü\82¹\82ñ\81B
+       // \93o\98^\81E\93o\98^\89ð\8f\9c\82Ì\91Î\82Æ\82È\82é\83Z\83}\83\93\83e\83B\83N\83X\82ª\8eç\82ç\82ê\82Ä\82¢\82é\82±\82Æ\82ð\91O\92ñ\82Æ\82µ\82Ü\82·\81B
+       // \81¦ \91\8a\8cÝ\8eQ\8fÆ\82µ\82½\8fó\91Ô\82Ì\82Ü\82Ü\83X\83N\83\8a\83v\83g\8fI\97¹\82·\82é\82Æ\89ð\95ú\82³\82ê\82¸\82É\8fI\97¹\82·\82é\82½\82ß\81B
+
+       CAtlList<ICheckDialogMessage*> m_lstChkDialog;
+
+
+DECLARE_REGISTRY_RESOURCEID(IDR_SCRDLGROOT)
+
+BEGIN_COM_MAP(CScrDlgRoot)
+       COM_INTERFACE_ENTRY(IScrDlgRoot)
+       COM_INTERFACE_ENTRY(IDispatch)
+       COM_INTERFACE_ENTRY(ISupportErrorInfo)
+       COM_INTERFACE_ENTRY(IMessageLoopImpl)
+END_COM_MAP()
+
+// ISupportsErrorInfo
+       STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
+
+
+       DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+       HRESULT FinalConstruct();
+
+       void FinalRelease()
+       {
+       }
+
+private:
+
+       // \90®\90\94\82©\82ç\95\8e\9a\97ñ\95Ï\8a·\82Ì\95W\8f\80\82Ì\8c\85\90\94\82ð\90®\90\94\82Å\8ew\92è\82µ\82Ü\82·\81B
+       // \82P\88È\8fã\82Ì\90\94\92l\82Å\82 \82ê\82Î\81A\8ew\92è\82µ\82½\8c\85\90\94\82¾\82¯\90æ\93ª\82É\83[\83\8d\82ª\8bl\82ß\82ç\82ê\82Ü\82·
+       // \83}\83C\83i\83X1\88È\89º\82Ì\90\94\92l\82Å\82 \82ê\82Î\81A\8ew\92è\82µ\82½\8c\85\90\94\82¾\82¯\8bó\94\92\82ª\8bl\82ß\82ç\82ê\82Ü\82·
+       SHORT m_defaultIS;
+
+       // \8eÀ\90\94\82©\82ç\95\8e\9a\97ñ\95Ï\8a·\82Ì\95W\8f\80\82Ì\97L\8cø\90¸\93x\82ð\8ew\92è\82µ\82Ü\82·\81B
+       // 0\88È\8fã\82È\82ç\81A\8ew\92è\82µ\82½\90\94\92l\95ª\82Ì\8f¬\90\94\93_\88È\89º\8c\85\90\94\82ð\95\\8e¦\82µ\82Ü\82·\81B
+       // \83}\83C\83i\83X\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\81A\8ew\92è\82µ\82½\90\94\92l\95ª\82Ì\8f¬\90\94\93_\88È\89º\88Ê\92u\82ð\90®\90\94\95\94\82Ü\82Å\8cJ\82è\8fã\82°\82Ü\82·
+       SHORT m_defaultFS;
+
+       // \8eÀ\90\94\94ä\8ar\82Ì\95W\8f\80\82Ì\90¸\93x\82ð\8eÀ\90\94\82Å\97^\82¦\82Ü\82·\81B
+       // IsEqual\83\81\83\\83b\83h\81AIsPointEqual\83\81\83\\83b\83h\82Å\8eg\82í\82ê\82Ü\82·\81B
+       double m_defaultTolerance;
+
+       // \83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b\82Ì\83t\83\8b\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B
+       // ProfileValue\82Å\8eg\97p\82³\82ê\82é\8f\89\8aú\89»\83t\83@\83C\83\8b\82Å\82·\81B
+       // \82±\82Ì\83v\83\8d\83p\83e\83B\82ª\83Z\83b\83g\82³\82ê\82Ä\82¢\82È\82¢\82Æ\81AProfileValue\83v\83\8d\83p\83e\83B\82Í\8eg\82¦\82Ü\82¹\82ñ\81B
+       CComBSTR m_profilePath;
+
+       // \95\8e\9a\97ñ\82ð\83t\83H\81[\83}\83b\83g\82µ\82Ü\82·\81B
+       static DWORD WINAPI FormatMessage(LPTSTR buf, DWORD len, LPCTSTR fmt, ...);
+
+       // \83V\83\83\83b\83g\83_\83E\83\93\93Á\8c \82ð\97L\8cø\82É\82·\82é
+       HRESULT PrivilegeShutdown();
+
+       /**
+        * \8bæ\90Ø\82è\95\8e\9a\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+        * \8fÈ\97ª\82³\82ê\82Ä\82¢\82é\8fê\8d\87(NULL/EMPTY/ERROR)\82Ì\8fê\8d\87\82ÍS_FALSE\82ð\95Ô\82µ\81A\8bæ\90Ø\82è\95\8e\9a\82Í\95Ï\8dX\82³\82ê\82Ü\82¹\82ñ\81B
+        * \95\8e\9a\97ñ\82ª\8eæ\93¾\82Å\82«\82½\8fê\8d\87\82Í\8dÅ\8f\89\82Ì\88ê\95\8e\9a\82ð\8bæ\90Ø\82è\95\8e\9a\82É\90Ý\92è\82µ\82ÄS_OK\82ð\95Ô\82µ\82Ü\82·\81B
+        * \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82ª\8bó\82Ì\8fê\8d\87\82Í\8bæ\90Ø\82è\95\8e\9a\82Í\8fI\92[(0)\95\8e\9a\82Æ\82È\82è\82Ü\82·\81B
+        * \95\8e\9a\97ñ\82É\95Ï\8a·\82Å\82«\82È\82¢\82©\81A\8dÅ\8f\89\82Ì\95\8e\9a\82ª\83T\83\8d\83Q\81[\83g\83y\83A\82Å\82 \82é\8fê\8d\87\82Í\83G\83\89\81[\82ð\95Ô\82µ\82Ü\82·\81B
+        * @param varDelimiter \8bæ\90Ø\82è\95\8e\9a\82Ì\8ai\94[\82³\82ê\82½VARIANT
+        * @param pDelimiter \8bæ\90Ø\82è\95\8e\9a\82Ì\8ai\94[\90æ\81AS_OK\82Ì\8fê\8d\87\82É\8fã\8f\91\82«\82³\82ê\82é\81B\82»\82ê\88È\8aO\82Í\8eè\82ð\82Â\82¯\82È\82¢\81B
+        * @return HRESULT
+        */
+       HRESULT GetDelimiterChar(const VARIANT &varDelimiter, WCHAR *pDelimiter) throw();
+
+public:
+
+       STDMETHOD(get_DefaultFS)(SHORT* pVal);
+       STDMETHOD(put_DefaultFS)(SHORT newVal);
+       STDMETHOD(get_DefaultIS)(SHORT* pVal);
+       STDMETHOD(put_DefaultIS)(SHORT newVal);
+
+       STDMETHOD(get_DefaultTolerance)(DOUBLE* pVal);
+       STDMETHOD(put_DefaultTolerance)(DOUBLE newVal);
+       STDMETHOD(get_ProfilePath)(BSTR* pVal);
+       STDMETHOD(put_ProfilePath)(BSTR newVal);
+       STDMETHOD(get_TickCount)(DOUBLE* pVal);
+       STDMETHOD(About)(DOUBLE* pVersion);
+       STDMETHOD(GetOpenFileName)(VARIANT defaultName, VARIANT filter, VARIANT defaultDir, VARIANT *pSelectedDir);
+       STDMETHOD(GetSaveFileName)(VARIANT defaultName, VARIANT filter, VARIANT defaultDir, VARIANT *pSelectedDir);
+       STDMETHOD(ShellExecute)(VARIANT verVerb, VARIANT varPath, VARIANT varParam, VARIANT varDirectory, VARIANT varShow, VARIANT varWait, SHORT *pRetcode);
+       STDMETHOD(GetASyncKeyState)(VIRTUALKEYCODE vk, SHORT *pKeyState);
+       STDMETHOD(BrowseForFolder)(VARIANT initdir, VARIANT* pSelectedDir);
+       STDMETHOD(CreateForm)(IUserForm** ppForm);
+       STDMETHOD(VersionCheck)(BSTR path, SHORT v1, SHORT v2, SHORT v3, SHORT v4, SHORT *pRetcode);
+       STDMETHOD(CreateDirectory)(BSTR path, VARIANT_BOOL *pRetcode);
+       STDMETHOD(GetFileVersion)(BSTR path, LONG *pFileVersion);
+       STDMETHOD(ExitWindows)(SHORT mode, VARIANT_BOOL *pRetcode);
+       STDMETHOD(GetSpecialFolderPath)(SPECIALFOLDERTYPE folderId, VARIANT *pResult);
+       STDMETHOD(CreateOutputWindow)(IOutputWindow **ppOutputWindow);
+       STDMETHOD(DoEvents)(VARIANT timeout, SHORT *pEventcode);
+       STDMETHOD(Sleep)(SHORT tim);
+       STDMETHOD(GetTempPath)(BSTR *pTempPath);
+       STDMETHOD(GetTempFileName)(VARIANT varTempDir, VARIANT varTempPrefix, VARIANT *pTempFileName);
+       STDMETHOD(GetFileAttributes)(BSTR path, LONG *pAttributes);
+       STDMETHOD(GetFileLastWriteTime)(BSTR path, VARIANT *pFileTime);
+       STDMETHOD(GetFileCreationTime)(BSTR path, VARIANT *pFileTime);
+       STDMETHOD(MessageBox)(BSTR mes, VARIANT varTitle, VARIANT varMode, SHORT *pRetcode);
+       STDMETHOD(FloatS)(double value, VARIANT varLen, BSTR *pRet);
+       STDMETHOD(IntS)(long value, VARIANT varLen, BSTR *pRet);
+       STDMETHOD(IsEqual)(double val1, double val2, VARIANT varTolerance, VARIANT_BOOL *pResult);
+       STDMETHOD(IsPointEqual)(double x1, double y1, double x2, double y2, VARIANT varTolerance, VARIANT_BOOL *pResult);
+       STDMETHOD(CreateList)(IVarArray **ppCreatedList);
+       STDMETHOD(ChangeExtensionName)(BSTR path, BSTR newExtentionName, BSTR *pNewPath);
+       STDMETHOD(get_ProfileValue)(BSTR name, VARIANT section, BSTR *pValue);
+       STDMETHOD(put_ProfileValue)(BSTR name, VARIANT section, BSTR newValue);
+       STDMETHOD(CopyFile)(BSTR src, BSTR dist, VARIANT overwrite, VARIANT_BOOL *pResult);
+       STDMETHOD(MoveFile)(BSTR src, BSTR dist, VARIANT overwrite, VARIANT_BOOL *pResult);
+       STDMETHOD(WaitCursor)(SHORT enableWaitCursor);
+       STDMETHOD(GetLocalPathName)(BSTR orgPath, VARIANT *pNewPath);
+       STDMETHOD(FindWindow)(BSTR clsname, BSTR caption, VARIANT *pWndHandle);
+       STDMETHOD(GetFileURL)(BSTR orgPath, VARIANT *pFileURL);
+       STDMETHOD(ConvertArrayToString)(VARIANT arr, VARIANT varDelimiter, VARIANT *pRet);
+
+       // IMessageLoopImpl
+       STDMETHOD(DoMessageLoop)();
+       STDMETHOD(RegisterDialog)(ICheckDialogMessage *pDlg);
+       STDMETHOD(UnregisterDialog)(ICheckDialogMessage *pDlg);
+       STDMETHOD(ConvertStringToArray)(VARIANT varText, VARIANT varDelimiter, VARIANT *pArray);
+};
+
+OBJECT_ENTRY_AUTO(__uuidof(SeraphyScriptDialogRoot), CScrDlgRoot)
diff --git a/SeraphyScriptDialog/ScrDlgRoot.rgs b/SeraphyScriptDialog/ScrDlgRoot.rgs
new file mode 100644 (file)
index 0000000..29f6d8b
--- /dev/null
@@ -0,0 +1,27 @@
+HKCR
+{
+       SeraphyScriptDialog.2 = s 'SeraphyScriptDialog Class'
+       {
+               CLSID = s '{4019FCE4-1A3B-4BFF-BF84-C036195842EF}'
+       }
+       SeraphyScriptDialog = s 'SeraphyScriptDialog Class'
+       {
+               CLSID = s '{4019FCE4-1A3B-4BFF-BF84-C036195842EF}'
+               CurVer = s 'SeraphyScriptDialog.2'
+       }
+       NoRemove CLSID
+       {
+               ForceRemove {4019FCE4-1A3B-4BFF-BF84-C036195842EF} = s 'SeraphyScriptDialog Class'
+               {
+                       ProgID = s 'SeraphyScriptDialog.2'
+                       VersionIndependentProgID = s 'SeraphyScriptDialog'
+                       ForceRemove 'Programmable'
+                       InprocServer32 = s '%MODULE%'
+                       {
+                               val ThreadingModel = s 'Apartment'
+                       }
+                       Version = s '2.0'
+                       'TypeLib' = s '{8C5ED098-A33E-4B09-8E44-638CCF6307A8}'
+               }
+       }
+}
diff --git a/SeraphyScriptDialog/SeraphyScriptDialog.cpp b/SeraphyScriptDialog/SeraphyScriptDialog.cpp
new file mode 100644 (file)
index 0000000..26d0da5
--- /dev/null
@@ -0,0 +1,93 @@
+// SeraphyScriptDialog.cpp : DLL \83G\83N\83X\83|\81[\83g\82Ì\8eÀ\91\95\82Å\82·\81B
+
+
+#include "stdafx.h"
+#include "resource.h"
+#include "SeraphyScriptDialog_i.h"
+#include "dllmain.h"
+#include "dlldatax.h"
+
+// DLL \82ð OLE \82É\82æ\82Á\82Ä\83A\83\93\83\8d\81[\83h\82Å\82«\82é\82æ\82¤\82É\82·\82é\82©\82Ç\82¤\82©\82ð\8ew\92è\82µ\82Ü\82·\81B
+STDAPI DllCanUnloadNow(void)
+{
+#ifdef _MERGE_PROXYSTUB
+    HRESULT hr = PrxDllCanUnloadNow();
+    if (hr != S_OK)
+        return hr;
+#endif
+    return _AtlModule.DllCanUnloadNow();
+}
+
+
+// \97v\8b\81\82³\82ê\82½\8c^\82Ì\83I\83u\83W\83F\83N\83g\82ð\8dì\90¬\82·\82é\83N\83\89\83\83t\83@\83N\83g\83\8a\82ð\95Ô\82µ\82Ü\82·\81B
+STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
+{
+#ifdef _MERGE_PROXYSTUB
+    if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
+        return S_OK;
+#endif
+    return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
+}
+
+
+// DllRegisterServer - \83G\83\93\83g\83\8a\82ð\83V\83X\83e\83\80 \83\8c\83W\83X\83g\83\8a\82É\92Ç\89Á\82µ\82Ü\82·\81B
+STDAPI DllRegisterServer(void)
+{
+    // \83I\83u\83W\83F\83N\83g\81A\83^\83C\83\83\89\83C\83u\83\89\83\8a\82¨\82æ\82Ñ\83^\83C\83\83\89\83C\83u\83\89\83\8a\93à\82Ì\82·\82×\82Ä\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\82ð\93o\98^\82µ\82Ü\82·
+    HRESULT hr = _AtlModule.DllRegisterServer();
+#ifdef _MERGE_PROXYSTUB
+    if (FAILED(hr))
+        return hr;
+    hr = PrxDllRegisterServer();
+#endif
+       return hr;
+}
+
+
+// DllUnregisterServer - \83G\83\93\83g\83\8a\82ð\83\8c\83W\83X\83g\83\8a\82©\82ç\8dí\8f\9c\82µ\82Ü\82·\81B
+STDAPI DllUnregisterServer(void)
+{
+       HRESULT hr = _AtlModule.DllUnregisterServer();
+#ifdef _MERGE_PROXYSTUB
+    if (FAILED(hr))
+        return hr;
+    hr = PrxDllRegisterServer();
+    if (FAILED(hr))
+        return hr;
+    hr = PrxDllUnregisterServer();
+#endif
+       return hr;
+}
+
+// DllInstall - \83\86\81[\83U\81[\82¨\82æ\82Ñ\83R\83\93\83s\83\85\81[\83^\82²\82Æ\82Ì\83V\83X\83e\83\80 \83\8c\83W\83X\83g\83\8a \83G\83\93\83g\83\8a\82ð
+//              \92Ç\89Á\82Ü\82½\82Í\8dí\8f\9c\82µ\82Ü\82·\81
+STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
+{
+    HRESULT hr = E_FAIL;
+    static const wchar_t szUserSwitch[] = _T("user");
+
+    if (pszCmdLine != NULL)
+    {
+       if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
+       {
+               AtlSetPerUserRegistration(true);
+       }
+    }
+
+    if (bInstall)
+    {  
+       hr = DllRegisterServer();
+       if (FAILED(hr))
+       {       
+               DllUnregisterServer();
+       }
+    }
+    else
+    {
+       hr = DllUnregisterServer();
+    }
+
+    return hr;
+}
+
+
diff --git a/SeraphyScriptDialog/SeraphyScriptDialog.def b/SeraphyScriptDialog/SeraphyScriptDialog.def
new file mode 100644 (file)
index 0000000..6c70f8b
--- /dev/null
@@ -0,0 +1,10 @@
+; SeraphyScriptDialog.def : \83\82\83W\83\85\81[\83\8b \83p\83\89\83\81\81[\83^\82ð\90é\8c¾\82µ\82Ü\82·\81B
+
+;LIBRARY      "SeraphyScriptDialog.DLL"
+
+EXPORTS
+       DllCanUnloadNow         PRIVATE
+       DllGetClassObject       PRIVATE
+       DllRegisterServer       PRIVATE
+       DllUnregisterServer     PRIVATE
+       DllInstall                      PRIVATE
diff --git a/SeraphyScriptDialog/SeraphyScriptDialog.idl b/SeraphyScriptDialog/SeraphyScriptDialog.idl
new file mode 100644 (file)
index 0000000..d50a06c
--- /dev/null
@@ -0,0 +1,585 @@
+// SeraphyScriptDialog.idl : SeraphyScriptDialog \82Ì IDL \83\\81[\83X
+//
+
+// \82±\82Ì\83t\83@\83C\83\8b\82Í\81A\83^\83C\83\83\89\83C\83u\83\89\83\8a (SeraphyScriptDialog.tlb) \82¨\82æ\82Ñ\83}\81[\83V\83\83\83\8a\83\93\83\83R\81[\83h\82ð
+// \8dì\90¬\82·\82é\82½\82ß\82É MIDL \83c\81[\83\8b\82É\82æ\82Á\82Ä\8f\88\97\9d\82³\82ê\82Ü\82·\81B
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+[
+       helpstring("ShellExecute\8e\9e\82Ì\83E\83B\83\93\83h\83E\82Ì\8aJ\82«\95û\82Ì\8ew\92è\95û\96@")
+]
+typedef enum SHOWWINDOW_MODE {
+       [helpstring("SW_HIDE")] SHOWWINDOW_MODE_HIDE = 0,
+       [helpstring("SW_SHOWNORMAL")] SHOWWINDOW_MODE_NORMAL = 1,
+       [helpstring("SW_SHOWMAXIMIZED")] SHOWWINDOW_MODE_MAXIMIZED = 3,
+       [helpstring("SW_SHOWMINIMIZED")] SHOWWINDOW_MODE_MINIMIZED = 2,
+       [helpstring("SW_SHOWMINNOACTIVE")] SHOWWINDOW_MODE_MINNOACTIVE = 7,
+} SHOWWINDOW_MODE;
+
+[
+       helpstring("\89¼\91z\83L\81[\83R\81[\83h")
+]
+typedef enum VIRTUALKEYCODE {
+       [helpstring("VK_LBUTTON")] KEYCODE_LBUTTON = 0x01,
+       [helpstring("VK_RBUTTON")] KEYCODE_RBUTTON = 0x02,
+       [helpstring("VK_CANCEL")] KEYCODE_CANCEL = 0x03,
+       [helpstring("VK_MBUTTON")] KEYCODE_MBUTTON = 0x04,
+       [helpstring("VK_XBUTTON1")] KEYCODE_XBUTTON1 = 0x05,
+       [helpstring("VK_XBUTTON2")] KEYCODE_XBUTTON2 = 0x06,
+       [helpstring("VK_BACK")] KEYCODE_BACK = 0x08,
+       [helpstring("VK_TAB")] KEYCODE_TAB = 0x09,
+       [helpstring("VK_CLEAR")] KEYCODE_CLEAR = 0x0C,
+       [helpstring("VK_RETURN")] KEYCODE_RETURN = 0x0D,
+       [helpstring("VK_SHIFT")] KEYCODE_SHIFT = 0x10,
+       [helpstring("VK_CONTROL")] KEYCODE_CONTROL = 0x11,
+       [helpstring("VK_MENU")] KEYCODE_MENU = 0x12,
+       [helpstring("VK_PAUSE")] KEYCODE_PAUSE = 0x13,
+       [helpstring("VK_CAPITAL")] KEYCODE_CAPITAL = 0x14,
+       [helpstring("VK_KANA")] KEYCODE_KANA = 0x15,
+       [helpstring("VK_HANGEUL")] KEYCODE_HANGEUL = 0x15,
+       [helpstring("VK_HANGUL")] KEYCODE_HANGUL = 0x15,
+       [helpstring("VK_JUNJA")] KEYCODE_JUNJA = 0x17,
+       [helpstring("VK_FINAL")] KEYCODE_FINAL = 0x18,
+       [helpstring("VK_HANJA")] KEYCODE_HANJA = 0x19,
+       [helpstring("VK_KANJI")] KEYCODE_KANJI = 0x19,
+       [helpstring("VK_ESCAPE")] KEYCODE_ESCAPE = 0x1B,
+       [helpstring("VK_CONVERT")] KEYCODE_CONVERT = 0x1C,
+       [helpstring("VK_NONCONVERT")] KEYCODE_NONCONVERT = 0x1D,
+       [helpstring("VK_ACCEPT")] KEYCODE_ACCEPT = 0x1E,
+       [helpstring("VK_MODECHANGE")] KEYCODE_MODECHANGE = 0x1F,
+       [helpstring("VK_SPACE")] KEYCODE_SPACE = 0x20,
+       [helpstring("VK_PRIOR")] KEYCODE_PRIOR = 0x21,
+       [helpstring("VK_NEXT")] KEYCODE_NEXT = 0x22,
+       [helpstring("VK_END")] KEYCODE_END = 0x23,
+       [helpstring("VK_HOME")] KEYCODE_HOME = 0x24,
+       [helpstring("VK_LEFT")] KEYCODE_LEFT = 0x25,
+       [helpstring("VK_UP")] KEYCODE_UP = 0x26,
+       [helpstring("VK_RIGHT")] KEYCODE_RIGHT = 0x27,
+       [helpstring("VK_DOWN")] KEYCODE_DOWN = 0x28,
+       [helpstring("VK_SELECT")] KEYCODE_SELECT = 0x29,
+       [helpstring("VK_PRINT")] KEYCODE_PRINT = 0x2A,
+       [helpstring("VK_EXECUTE")] KEYCODE_EXECUTE = 0x2B,
+       [helpstring("VK_SNAPSHOT")] KEYCODE_SNAPSHOT = 0x2C,
+       [helpstring("VK_INSERT")] KEYCODE_INSERT = 0x2D,
+       [helpstring("VK_DELETE")] KEYCODE_DELETE = 0x2E,
+       [helpstring("VK_HELP")] KEYCODE_HELP = 0x2F,
+       [helpstring("VK_LWIN")] KEYCODE_LWIN = 0x5B,
+       [helpstring("VK_RWIN")] KEYCODE_RWIN = 0x5C,
+       [helpstring("VK_APPS")] KEYCODE_APPS = 0x5D,
+       [helpstring("VK_SLEEP")] KEYCODE_SLEEP = 0x5F,
+       [helpstring("VK_NUMPAD0")] KEYCODE_NUMPAD0 = 0x60,
+       [helpstring("VK_NUMPAD1")] KEYCODE_NUMPAD1 = 0x61,
+       [helpstring("VK_NUMPAD2")] KEYCODE_NUMPAD2 = 0x62,
+       [helpstring("VK_NUMPAD3")] KEYCODE_NUMPAD3 = 0x63,
+       [helpstring("VK_NUMPAD4")] KEYCODE_NUMPAD4 = 0x64,
+       [helpstring("VK_NUMPAD5")] KEYCODE_NUMPAD5 = 0x65,
+       [helpstring("VK_NUMPAD6")] KEYCODE_NUMPAD6 = 0x66,
+       [helpstring("VK_NUMPAD7")] KEYCODE_NUMPAD7 = 0x67,
+       [helpstring("VK_NUMPAD8")] KEYCODE_NUMPAD8 = 0x68,
+       [helpstring("VK_NUMPAD9")] KEYCODE_NUMPAD9 = 0x69,
+       [helpstring("VK_MULTIPLY")] KEYCODE_MULTIPLY = 0x6A,
+       [helpstring("VK_ADD")] KEYCODE_ADD = 0x6B,
+       [helpstring("VK_SEPARATOR")] KEYCODE_SEPARATOR = 0x6C,
+       [helpstring("VK_SUBTRACT")] KEYCODE_SUBTRACT = 0x6D,
+       [helpstring("VK_DECIMAL")] KEYCODE_DECIMAL = 0x6E,
+       [helpstring("VK_DIVIDE")] KEYCODE_DIVIDE = 0x6F,
+       [helpstring("VK_F1")] KEYCODE_F1 = 0x70,
+       [helpstring("VK_F2")] KEYCODE_F2 = 0x71,
+       [helpstring("VK_F3")] KEYCODE_F3 = 0x72,
+       [helpstring("VK_F4")] KEYCODE_F4 = 0x73,
+       [helpstring("VK_F5")] KEYCODE_F5 = 0x74,
+       [helpstring("VK_F6")] KEYCODE_F6 = 0x75,
+       [helpstring("VK_F7")] KEYCODE_F7 = 0x76,
+       [helpstring("VK_F8")] KEYCODE_F8 = 0x77,
+       [helpstring("VK_F9")] KEYCODE_F9 = 0x78,
+       [helpstring("VK_F10")] KEYCODE_F10 = 0x79,
+       [helpstring("VK_F11")] KEYCODE_F11 = 0x7A,
+       [helpstring("VK_F12")] KEYCODE_F12 = 0x7B,
+       [helpstring("VK_F13")] KEYCODE_F13 = 0x7C,
+       [helpstring("VK_F14")] KEYCODE_F14 = 0x7D,
+       [helpstring("VK_F15")] KEYCODE_F15 = 0x7E,
+       [helpstring("VK_F16")] KEYCODE_F16 = 0x7F,
+       [helpstring("VK_F17")] KEYCODE_F17 = 0x80,
+       [helpstring("VK_F18")] KEYCODE_F18 = 0x81,
+       [helpstring("VK_F19")] KEYCODE_F19 = 0x82,
+       [helpstring("VK_F20")] KEYCODE_F20 = 0x83,
+       [helpstring("VK_F21")] KEYCODE_F21 = 0x84,
+       [helpstring("VK_F22")] KEYCODE_F22 = 0x85,
+       [helpstring("VK_F23")] KEYCODE_F23 = 0x86,
+       [helpstring("VK_F24")] KEYCODE_F24 = 0x87,
+       [helpstring("VK_NUMLOCK")] KEYCODE_NUMLOCK = 0x90,
+       [helpstring("VK_SCROLL")] KEYCODE_SCROLL = 0x91,
+       [helpstring("VK_OEM_NEC_EQUAL")] KEYCODE_OEM_NEC_EQUAL = 0x92,
+       [helpstring("VK_OEM_FJ_JISHO")] KEYCODE_OEM_FJ_JISHO = 0x92,
+       [helpstring("VK_OEM_FJ_MASSHOU")] KEYCODE_OEM_FJ_MASSHOU = 0x93,
+       [helpstring("VK_OEM_FJ_TOUROKU")] KEYCODE_OEM_FJ_TOUROKU = 0x94,
+       [helpstring("VK_OEM_FJ_LOYA")] KEYCODE_OEM_FJ_LOYA = 0x95,
+       [helpstring("VK_OEM_FJ_ROYA")] KEYCODE_OEM_FJ_ROYA = 0x96,
+       [helpstring("VK_LSHIFT")] KEYCODE_LSHIFT = 0xA0,
+       [helpstring("VK_RSHIFT")] KEYCODE_RSHIFT = 0xA1,
+       [helpstring("VK_LCONTROL")] KEYCODE_LCONTROL = 0xA2,
+       [helpstring("VK_RCONTROL")] KEYCODE_RCONTROL = 0xA3,
+       [helpstring("VK_LMENU")] KEYCODE_LMENU = 0xA4,
+       [helpstring("VK_RMENU")] KEYCODE_RMENU = 0xA5,
+       [helpstring("VK_BROWSER_BACK")] KEYCODE_BROWSER_BACK = 0xA6,
+       [helpstring("VK_BROWSER_FORWARD")] KEYCODE_BROWSER_FORWARD = 0xA7,
+       [helpstring("VK_BROWSER_REFRESH")] KEYCODE_BROWSER_REFRESH = 0xA8,
+       [helpstring("VK_BROWSER_STOP")] KEYCODE_BROWSER_STOP = 0xA9,
+       [helpstring("VK_BROWSER_SEARCH")] KEYCODE_BROWSER_SEARCH = 0xAA,
+       [helpstring("VK_BROWSER_FAVORITES")] KEYCODE_BROWSER_FAVORITES = 0xAB,
+       [helpstring("VK_BROWSER_HOME")] KEYCODE_BROWSER_HOME = 0xAC,
+       [helpstring("VK_VOLUME_MUTE")] KEYCODE_VOLUME_MUTE = 0xAD,
+       [helpstring("VK_VOLUME_DOWN")] KEYCODE_VOLUME_DOWN = 0xAE,
+       [helpstring("VK_VOLUME_UP")] KEYCODE_VOLUME_UP = 0xAF,
+       [helpstring("VK_MEDIA_NEXT_TRACK")] KEYCODE_MEDIA_NEXT_TRACK = 0xB0,
+       [helpstring("VK_MEDIA_PREV_TRACK")] KEYCODE_MEDIA_PREV_TRACK = 0xB1,
+       [helpstring("VK_MEDIA_STOP")] KEYCODE_MEDIA_STOP = 0xB2,
+       [helpstring("VK_MEDIA_PLAY_PAUSE")] KEYCODE_MEDIA_PLAY_PAUSE = 0xB3,
+       [helpstring("VK_LAUNCH_MAIL")] KEYCODE_LAUNCH_MAIL = 0xB4,
+       [helpstring("VK_LAUNCH_MEDIA_SELECT")] KEYCODE_LAUNCH_MEDIA_SELECT = 0xB5,
+       [helpstring("VK_LAUNCH_APP1")] KEYCODE_LAUNCH_APP1 = 0xB6,
+       [helpstring("VK_LAUNCH_APP2")] KEYCODE_LAUNCH_APP2 = 0xB7,
+       [helpstring("VK_OEM_1")] KEYCODE_OEM_1 = 0xBA,
+       [helpstring("VK_OEM_PLUS")] KEYCODE_OEM_PLUS = 0xBB,
+       [helpstring("VK_OEM_COMMA")] KEYCODE_OEM_COMMA = 0xBC,
+       [helpstring("VK_OEM_MINUS")] KEYCODE_OEM_MINUS = 0xBD,
+       [helpstring("VK_OEM_PERIOD")] KEYCODE_OEM_PERIOD = 0xBE,
+       [helpstring("VK_OEM_2")] KEYCODE_OEM_2 = 0xBF,
+       [helpstring("VK_OEM_3")] KEYCODE_OEM_3 = 0xC0,
+       [helpstring("VK_OEM_4")] KEYCODE_OEM_4 = 0xDB,
+       [helpstring("VK_OEM_5")] KEYCODE_OEM_5 = 0xDC,
+       [helpstring("VK_OEM_6")] KEYCODE_OEM_6 = 0xDD,
+       [helpstring("VK_OEM_7")] KEYCODE_OEM_7 = 0xDE,
+       [helpstring("VK_OEM_8")] KEYCODE_OEM_8 = 0xDF,
+       [helpstring("VK_OEM_AX")] KEYCODE_OEM_AX = 0xE1,
+       [helpstring("VK_OEM_102")] KEYCODE_OEM_102 = 0xE2,
+       [helpstring("VK_ICO_HELP")] KEYCODE_ICO_HELP = 0xE3,
+       [helpstring("VK_ICO_00")] KEYCODE_ICO_00 = 0xE4,
+       [helpstring("VK_PROCESSKEY")] KEYCODE_PROCESSKEY = 0xE5,
+       [helpstring("VK_ICO_CLEAR")] KEYCODE_ICO_CLEAR = 0xE6,
+       [helpstring("VK_PACKET")] KEYCODE_PACKET = 0xE7,
+       [helpstring("VK_OEM_RESET")] KEYCODE_OEM_RESET = 0xE9,
+       [helpstring("VK_OEM_JUMP")] KEYCODE_OEM_JUMP = 0xEA,
+       [helpstring("VK_OEM_PA1")] KEYCODE_OEM_PA1 = 0xEB,
+       [helpstring("VK_OEM_PA2")] KEYCODE_OEM_PA2 = 0xEC,
+       [helpstring("VK_OEM_PA3")] KEYCODE_OEM_PA3 = 0xED,
+       [helpstring("VK_OEM_WSCTRL")] KEYCODE_OEM_WSCTRL = 0xEE,
+       [helpstring("VK_OEM_CUSEL")] KEYCODE_OEM_CUSEL = 0xEF,
+       [helpstring("VK_OEM_ATTN")] KEYCODE_OEM_ATTN = 0xF0,
+       [helpstring("VK_OEM_FINISH")] KEYCODE_OEM_FINISH = 0xF1,
+       [helpstring("VK_OEM_COPY")] KEYCODE_OEM_COPY = 0xF2,
+       [helpstring("VK_OEM_AUTO")] KEYCODE_OEM_AUTO = 0xF3,
+       [helpstring("VK_OEM_ENLW")] KEYCODE_OEM_ENLW = 0xF4,
+       [helpstring("VK_OEM_BACKTAB")] KEYCODE_OEM_BACKTAB = 0xF5,
+       [helpstring("VK_ATTN")] KEYCODE_ATTN = 0xF6,
+       [helpstring("VK_CRSEL")] KEYCODE_CRSEL = 0xF7,
+       [helpstring("VK_EXSEL")] KEYCODE_EXSEL = 0xF8,
+       [helpstring("VK_EREOF")] KEYCODE_EREOF = 0xF9,
+       [helpstring("VK_PLAY")] KEYCODE_PLAY = 0xFA,
+       [helpstring("VK_ZOOM")] KEYCODE_ZOOM = 0xFB,
+       [helpstring("VK_NONAME")] KEYCODE_NONAME = 0xFC,
+       [helpstring("VK_PA1")] KEYCODE_PA1 = 0xFD,
+       [helpstring("VK_OEM_CLEAR")] KEYCODE_OEM_CLEAR = 0xFE,
+} VIRTUALKEYCODE;
+
+[
+       helpstring("\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82Ì\83{\83^\83\93\82Ì\8eí\97Þ")
+]
+typedef enum MESSAGEBOXMODE {
+       [helpstring("OK")] MESSAGEBOXMODE_OK = 0,
+       [helpstring("OK or CANCEL")] MESSAGEBOXMODE_OKCANCEL = 1,
+       [helpstring("YES or NO")] MESSAGEBOXMODE_YESNO = 2,
+       [helpstring("YES or NO or CANCEL")] MESSAGEBOXMODE_YESNOCANCEL = 3,
+       [helpstring("RETRY or CANCEL")] MESSAGEBOXMODE_RETRYCANCEL = 4,
+       [helpstring("ABORT or RETRY or IGNORE")] MESSAGEBOXMODE_ABORTRETRYIGNORE = 5,
+} MESSAGEBOXMODE;
+
+[
+       helpstring("\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82Ì\83A\83C\83R\83\93\82Ì\8eí\97Þ")
+]
+typedef enum MESSAGEBOXICON {
+       [helpstring("NORMAL ICON")] MESSAGEBOXICON_NORMAL = 0,
+       [helpstring("ERROR ICON")] MESSAGEBOXICON_ERROR = 10,
+       [helpstring("INFORMATION ICON")] MESSAGEBOXICON_INFORMATION = 20,
+       [helpstring("QUESTION ICON")] MESSAGEBOXICON_QUESTION = 30,
+} MESSAGEBOXICON;
+
+[
+       helpstring("\8c\9f\8dõ\8e\9e\82Ì\8c\9f\8dõ\83p\83^\81[\83\93")
+]
+typedef enum SEARCHMODE {
+       [helpstring("\95\94\95ª\88ê\92v")] SEARCHMODE_PART = 0,
+       [helpstring("\91O\95û\88ê\92v")] SEARCHMODE_PREFIX = 1,
+       [helpstring("\8a®\91S\88ê\92v")] SEARCHMODE_FULL = 2
+} SEARCHMODE;
+
+[
+       helpstring("ExitWindows\8e\9e\82Ì\8fI\97¹\95û\96@")
+]
+typedef enum SHUTDOWNMODE {
+       [helpstring("\83\8d\83O\83I\83t")] SHUTDOWNMODE_LOGOFF = 0,
+       [helpstring("\83p\83\8f\81[\83I\83t")] SHUTDOWNMODE_POWEROFF = 1,
+       [helpstring("\83\8a\83u\81[\83g")] SHUTDOWNMODE_REBOOT = 2,
+       [helpstring("\83V\83\83\83b\83g\83_\83E\83\93")] SHUTDOWNMODE_SHUTDOWN = 3,
+} SHUTDOWNMODE;
+
+[
+       helpstring("\83\86\81[\83U\83t\83H\81[\83\80\82Ì\92è\8b`\8dÏ\82Ý\83C\83x\83\93\83g\83R\81[\83h")
+]
+typedef enum PREDEFINEDEVENTCODE {
+       [helpstring("\83L\83\83\83\93\83Z\83\8b")] EVENTID_CANCEL = -1,
+       [helpstring("\83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v")] EVENTID_DROPFILE = 9000,
+} PREDEFINEDEVENTCODE;
+
+[
+       v1_enum,
+       helpstring("\93Á\8eê\83t\83H\83\8b\83_ID\82Ì\8eí\97Þ")
+]
+typedef enum SPECIALFOLDERTYPE {
+       [helpstring("DESKTOP")] FOLDERID_DESKTOP = 0x0000,
+       [helpstring("INTERNET")] FOLDERID_INTERNET = 0x0001,
+       [helpstring("PROGRAMS")] FOLDERID_PROGRAMS = 0x0002,
+       [helpstring("CONTROLS")] FOLDERID_CONTROLS = 0x0003,
+       [helpstring("PRINTERS")] FOLDERID_PRINTERS = 0x0004,
+       [helpstring("PERSONAL")] FOLDERID_PERSONAL = 0x0005,
+       [helpstring("FAVORITES")] FOLDERID_FAVORITES = 0x0006,
+       [helpstring("STARTUP")] FOLDERID_STARTUP = 0x0007,
+       [helpstring("RECENT")] FOLDERID_RECENT = 0x0008,
+       [helpstring("SENDTO")] FOLDERID_SENDTO = 0x0009,
+       [helpstring("BITBUCKET")] FOLDERID_BITBUCKET = 0x000a,
+       [helpstring("STARTMENU")] FOLDERID_STARTMENU = 0x000b,
+       [helpstring("MYDOCUMENTS")] FOLDERID_MYDOCUMENTS = 0x0005,
+       [helpstring("MYMUSIC")] FOLDERID_MYMUSIC = 0x000d,
+       [helpstring("MYVIDEO")] FOLDERID_MYVIDEO = 0x000e,
+       [helpstring("DESKTOPDIRECTORY")] FOLDERID_DESKTOPDIRECTORY = 0x0010,
+       [helpstring("DRIVES")] FOLDERID_DRIVES = 0x0011,
+       [helpstring("NETWORK")] FOLDERID_NETWORK = 0x0012,
+       [helpstring("NETHOOD")] FOLDERID_NETHOOD = 0x0013,
+       [helpstring("FONTS")] FOLDERID_FONTS = 0x0014,
+       [helpstring("TEMPLATES")] FOLDERID_TEMPLATES = 0x0015,
+       [helpstring("COMMON_STARTMENU")] FOLDERID_COMMON_STARTMENU = 0x0016,
+       [helpstring("COMMON_PROGRAMS")] FOLDERID_COMMON_PROGRAMS = 0X0017,
+       [helpstring("COMMON_STARTUP")] FOLDERID_COMMON_STARTUP = 0x0018,
+       [helpstring("COMMON_DESKTOPDIRECTORY")] FOLDERID_COMMON_DESKTOPDIRECTORY = 0x0019,
+       [helpstring("APPDATA")] FOLDERID_APPDATA = 0x001a,
+       [helpstring("PRINTHOOD")] FOLDERID_PRINTHOOD = 0x001b,
+       [helpstring("LOCAL_APPDATA")] FOLDERID_LOCAL_APPDATA = 0x001c,
+       [helpstring("ALTSTARTUP")] FOLDERID_ALTSTARTUP = 0x001d,
+       [helpstring("COMMON_ALTSTARTUP")] FOLDERID_COMMON_ALTSTARTUP = 0x001e,
+       [helpstring("COMMON_FAVORITES")] FOLDERID_COMMON_FAVORITES = 0x001f,
+       [helpstring("INTERNET_CACHE")] FOLDERID_INTERNET_CACHE = 0x0020,
+       [helpstring("COOKIES")] FOLDERID_COOKIES = 0x0021,
+       [helpstring("HISTORY")] FOLDERID_HISTORY = 0x0022,
+       [helpstring("COMMON_APPDATA")] FOLDERID_COMMON_APPDATA = 0x0023,
+       [helpstring("WINDOWS")] FOLDERID_WINDOWS = 0x0024,
+       [helpstring("SYSTEM")] FOLDERID_SYSTEM = 0x0025,
+       [helpstring("PROGRAM_FILES")] FOLDERID_PROGRAM_FILES = 0x0026,
+       [helpstring("MYPICTURES")] FOLDERID_MYPICTURES = 0x0027,
+       [helpstring("PROFILE")] FOLDERID_PROFILE = 0x0028,
+       [helpstring("SYSTEMX86")] FOLDERID_SYSTEMX86 = 0x0029,
+       [helpstring("PROGRAM_FILESX86")] FOLDERID_PROGRAM_FILESX86 = 0x002a,
+       [helpstring("PROGRAM_FILES_COMMON")] FOLDERID_PROGRAM_FILES_COMMON = 0x002b,
+       [helpstring("PROGRAM_FILES_COMMONX86")] FOLDERID_PROGRAM_FILES_COMMONX86 = 0x002c,
+       [helpstring("COMMON_TEMPLATES")] FOLDERID_COMMON_TEMPLATES = 0x002d,
+       [helpstring("COMMON_DOCUMENTS")] FOLDERID_COMMON_DOCUMENTS = 0x002e,
+       [helpstring("COMMON_ADMINTOOLS")] FOLDERID_COMMON_ADMINTOOLS = 0x002f,
+       [helpstring("ADMINTOOLS")] FOLDERID_ADMINTOOLS = 0x0030,
+       [helpstring("CONNECTIONS")] FOLDERID_CONNECTIONS = 0x0031,
+       [helpstring("COMMON_MUSIC")] FOLDERID_COMMON_MUSIC = 0x0035,
+       [helpstring("COMMON_PICTURES")] FOLDERID_COMMON_PICTURES = 0x0036,
+       [helpstring("COMMON_VIDEO")] FOLDERID_COMMON_VIDEO = 0x0037,
+       [helpstring("RESOURCES")] FOLDERID_RESOURCES = 0x0038,
+       [helpstring("RESOURCES_LOCALIZED")] FOLDERID_RESOURCES_LOCALIZED = 0x0039,
+       [helpstring("COMMON_OEM_LINKS")] FOLDERID_COMMON_OEM_LINKS = 0x003a,
+       [helpstring("CDBURN_AREA")] FOLDERID_CDBURN_AREA = 0x003b,
+       [helpstring("COMPUTERSNEARME")] FOLDERID_COMPUTERSNEARME = 0x003d,
+} SPECIALFOLDERTYPE;
+
+// \8fo\97Í\83E\83B\83\93\83h\83E\97p\83C\83\93\83^\81[\83t\83F\83C\83X
+[
+       object,
+       uuid(B70FE36E-720C-4be4-831A-9109110ECC39),
+       dual,
+       nonextensible,
+       helpstring("OutputWindow\83I\83u\83W\83F\83N\83g"),
+       pointer_default(unique)
+]
+interface IOutputWindow : IDispatch {
+       [propget, id(DISPID_VALUE), helpstring("\83e\83L\83X\83g")] HRESULT _Text([out, retval] BSTR *pText);
+       [propput, id(DISPID_VALUE), helpstring("\83e\83L\83X\83g")] HRESULT _Text([in] BSTR pText);
+       [propget, id(1), helpstring("\95\\8e¦")] HRESULT Visible([out, retval] VARIANT_BOOL *pbVisible);
+       [propput, id(1), helpstring("\95\\8e¦")] HRESULT Visible([in] VARIANT_BOOL bVisible);
+       [propget, id(2), helpstring("\97L\8cø")] HRESULT Enable([out, retval] VARIANT_BOOL *pbEnabled);
+       [propput, id(2), helpstring("\97L\8cø")] HRESULT Enable([in] VARIANT_BOOL bEnabled);
+       [propget, id(3), helpstring("\83e\83L\83X\83g")] HRESULT Text([out, retval] BSTR *pText);
+       [propput, id(3), helpstring("\83e\83L\83X\83g")] HRESULT Text([in] BSTR pText);
+       [propget, id(4), helpstring("\83E\83B\83\93\83h\83E\82Ì\8d\8fãX\8dÀ\95W(px)")] HRESULT PosX([out, retval] SHORT *pLeft);
+       [propput, id(4), helpstring("\83E\83B\83\93\83h\83E\82Ì\8d\8fãX\8dÀ\95W(px)")] HRESULT PosX([in] SHORT left);
+       [propget, id(5), helpstring("\83E\83B\83\93\83h\83E\82Ì\8d\8fãY\8dÀ\95W(px)")] HRESULT PosY([out, retval] SHORT *pTop);
+       [propput, id(5), helpstring("\83E\83B\83\93\83h\83E\82Ì\8d\8fãY\8dÀ\95W(px)")] HRESULT PosY([in] SHORT top);
+       [propget, id(6), helpstring("\83E\83B\83\93\83h\83E\82Ì\95\9d(px)")] HRESULT Width([out, retval] SHORT *pWidth);
+       [propput, id(6), helpstring("\83E\83B\83\93\83h\83E\82Ì\95\9d(px)")] HRESULT Width([in] SHORT width);
+       [propget, id(7), helpstring("\83E\83B\83\93\83h\83E\82Ì\8d\82\82³(px)")] HRESULT Height([out, retval] SHORT *pHeight);
+       [propput, id(7), helpstring("\83E\83B\83\93\83h\83E\82Ì\8d\82\82³(px)")] HRESULT Height([in] SHORT height);
+       [propget, id(8), helpstring("\83^\83C\83g\83\8b")] HRESULT Title([out, retval] BSTR *pTitle);
+       [propput, id(8), helpstring("\83^\83C\83g\83\8b")] HRESULT Title([in] BSTR title);
+};
+
+
+// \83\86\81[\83U\81[\83t\83H\81[\83\80\97p\83C\83\93\83^\81[\83t\83F\83C\83X
+[
+       object,
+       uuid(732E3BE7-C774-41e4-BBA6-D68111BC00D8),
+       dual,
+       nonextensible,
+       helpstring("OutputWindow\83I\83u\83W\83F\83N\83g"),
+       pointer_default(unique)
+]
+interface IUserForm : IDispatch {
+       [propget, id(DISPID_VALUE), helpstring("\83R\83\93\83g\83\8d\81[\83\8b\82Ì\92l")] HRESULT _Value([in] SHORT ctlId, [out, retval] BSTR *pText);
+       [propput, id(DISPID_VALUE), helpstring("\83R\83\93\83g\83\8d\81[\83\8b\82Ì\92l")] HRESULT _Value([in] SHORT ctlId, [in] BSTR text);
+       [propget, id(1), helpstring("\83^\83C\83g\83\8b")] HRESULT FormTitle([out, retval] BSTR *pTitle);
+       [propput, id(1), helpstring("\83^\83C\83g\83\8b")] HRESULT FormTitle([in] BSTR title);
+       [propget, id(2), helpstring("\83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\8b\96\89Â")] HRESULT AcceptDropFile([out, retval] VARIANT_BOOL *pEnabled);
+       [propput, id(2), helpstring("\83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\8b\96\89Â")] HRESULT AcceptDropFile([in] VARIANT_BOOL enabled);
+       [propget, id(3), helpstring("\83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b")] HRESULT DropFiles([out, retval] BSTR *pFiles);
+       [propget, id(4), helpstring("\83t\83H\81[\83\80\82Ì\97L\8cø\81E\96³\8cø")] HRESULT EnableForm([out, retval] VARIANT_BOOL *pEnabled);
+       [propput, id(4), helpstring("\83t\83H\81[\83\80\82Ì\97L\8cø\81E\96³\8cø")] HRESULT EnableForm([in] VARIANT_BOOL enabled);
+       [id(5), helpstring("\83t\83H\81[\83\80\8fã\82Ì\94z\92u\82ð\83N\83\8a\83A\82·\82é")] HRESULT ClearAllControls();
+       [id(6), helpstring("\83t\83H\81[\83\80\82ð\83\82\81[\83_\83\8b\82Å\8d\\92z\82·\82é")] HRESULT ExecuteForm([optional, in] VARIANT reserve, [out, retval] SHORT *pEventCode);
+       [id(7), helpstring("\83\89\83x\83\8b\82Ì\92è\8b`")] HRESULT DefineLabel([in] BSTR text, [out, retval] SHORT *pCtlId);
+       [id(8), helpstring("\83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\92è\8b`")] HRESULT DefineEdit([optional, in] VARIANT title, [optional, in] VARIANT initValue, [optional, in] VARIANT multiline, [out,retval] SHORT *pCtlId);
+       [id(9), helpstring("\83{\83^\83\93\82Ì\92è\8b`")] HRESULT DefineButton([in] BSTR title, [optional, in] VARIANT eventCode, [out, retval] SHORT *pCtlId);
+       [id(10), helpstring("\83{\83^\83\93\95t\82«\83G\83f\83B\83b\83g\82Ì\92è\8b`")] HRESULT DefineEditButton([optional, in] VARIANT title, [optional, in] VARIANT initValue, [optional, in] VARIANT btnTitle, [optional, in] VARIANT eventCode, [out, retval] SHORT *pCtlId);
+       [id(11), helpstring("\83t\83@\83C\83\8b\96¼\83G\83f\83B\83b\83g\82Ì\92è\8b`")] HRESULT DefineFileEdit([optional, in] VARIANT title, [optional, in] VARIANT initValue, [optional, in] VARIANT btnTitle, [optional, in] VARIANT openSaveMode, [optional, in] VARIANT filter, [out, retval] SHORT *pCtlId);
+       [id(12), helpstring("\83`\83F\83b\83N\83{\83b\83N\83X\82Ì\92è\8b`")] HRESULT DefineCheckButton([in] BSTR titles, [optional, in] VARIANT initValues, [optional, in] VARIANT mode, [out, retval] SHORT *pCtlId);
+       [id(13), helpstring("\83\89\83W\83I\83{\83^\83\93\82Ì\92è\8b`")] HRESULT DefineRadioButton([in] BSTR titles, [optional, in] VARIANT initValues, [optional, in] VARIANT mode, [out, retval] SHORT *pCtlId);
+       [id(14), helpstring("\83R\83\93\83{\83{\83b\83N\83X\82Ì\92è\8b`")] HRESULT DefineComboBox([optional, in] VARIANT title, [optional, in] VARIANT initValues, [optional, in] VARIANT listValues, [out, retval] SHORT *pCtlId);
+       [id(15), helpstring("\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\82Ì\92è\8b`")] HRESULT DefineDropdownList([optional, in] VARIANT title, [optional, in] VARIANT initValue, [optional, in] VARIANT listValues, [out, retval] SHORT *pCtlId);
+       [id(16), helpstring("\83\8a\83X\83g\83{\83b\83N\83X\82Ì\92è\8b`")] HRESULT DefineListBox([optional, in] VARIANT listValues, [optional, in] VARIANT initValue, [optional, in] VARIANT numberOfLines, [optional, in] VARIANT multiSelMode, [out, retval] SHORT *pCtlId);
+       [id(17), helpstring("\83t\83H\81[\83\80\82ð\83\82\81[\83h\83\8c\83X\82Å\8d\\92z\82·\82é\81B")] HRESULT ComposeForm([out, retval] SHORT *pEventCode);
+       [id(18), helpstring("\83\82\81[\83h\83\8c\83X\82Å\8d\\92z\82µ\82½\83t\83H\81[\83\80\82ð\8fI\97¹\82·\82é")] HRESULT DestroyForm();
+       [id(19), helpstring("\83\82\81[\83h\83\8c\83X\82Å\8d\\92z\82µ\82½\83t\83H\81[\83\80\82Ì\83C\83x\83\93\83g\82ð\8f\88\97\9d\82·\82é")] HRESULT WaitEvent([optional, in] VARIANT timeout, [out, retval] VARIANT *pEventCode);
+       [propget, id(20), helpstring("\83R\83\93\83g\83\8d\81[\83\8b\82Ì\92l")] HRESULT Value([in] SHORT ctlId, [out, retval] BSTR *pText);
+       [propput, id(20), helpstring("\83R\83\93\83g\83\8d\81[\83\8b\82Ì\92l")] HRESULT Value([in] SHORT ctlId, [in] BSTR text);
+       [propget, id(21), helpstring("\83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø\8fó\91Ô")] HRESULT Enable([in] SHORT ctlId, [out, retval] VARIANT_BOOL *pEnabled);
+       [propput, id(21), helpstring("\83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø\8fó\91Ô")] HRESULT Enable([in] SHORT ctlId, [in] VARIANT_BOOL enabled);
+       [propget, id(22), helpstring("\83R\83\93\83g\83\8d\81[\83\8b\82Ì\92l\82ª\95Ï\8dX\82³\82ê\82Ä\82¢\82é\82©")] HRESULT IsModify([in] SHORT ctlId, [out, retval] VARIANT_BOOL *pModified);
+       [propget, id(23), helpstring("\83t\83H\81[\83\80\82Ì\95\9d\81A0\82È\82ç\8bK\92è\92l")] HRESULT FormWidth([out,retval] SHORT *pWidth);
+       [propput, id(23), helpstring("\83t\83H\81[\83\80\82Ì\95\9d\81A0\82È\82ç\8bK\92è\92l")] HRESULT FormWidth([in] SHORT width);
+       [propget, id(24), helpstring("\83t\83H\81[\83\80\82Ì\94z\92u\8fî\95ñ\81A\8bó\82È\82ç\92\86\89\9b")] HRESULT FormPos([out, retval] BSTR *pPlaceInfo);
+       [propput, id(24), helpstring("\83t\83H\81[\83\80\82Ì\94z\92u\8fî\95ñ\81A\8bó\82È\82ç\92\86\89\9b")] HRESULT FormPos([in] BSTR placeInfo);
+       [id(25), helpstring("\83t\83H\83\8b\83_\96¼\83G\83f\83B\83b\83g\82Ì\92è\8b`")] HRESULT DefineFolderEdit([optional, in] VARIANT title, [optional, in] VARIANT initValue, [optional, in] VARIANT btnTitle, [out, retval] SHORT *pCtlId);
+};
+
+
+// IVarArray\83C\83\93\83^\81[\83t\83F\83C\83X\82Í\81AVarArray\83N\83\89\83X\82Å\8eÀ\91\95\82³\82ê\81AListExObj\82ÌProgID\82Å\8cö\8aJ\82³\82ê\82Ü\82·\81B
+[
+       object,
+       uuid(BBF81764-B49D-4DEA-A3F7-5B85915DA1AF),
+       dual,
+       nonextensible,
+       helpstring("ListExObj\89Â\95Ï\92·\94z\97ñ\83I\83u\83W\83F\83N\83g"),
+       pointer_default(unique)
+]
+interface IVarArray : IDispatch {
+       [propget, id(DISPID_NEWENUM), helpstring("\97ñ\8b\93\8eq")] HRESULT _NewEnum([out, retval] IUnknown** ppUnk);
+       [propget, id(DISPID_VALUE), helpstring("\83A\83C\83e\83\80\82ð\8eæ\93¾\82·\82é")] HRESULT _Value([in] long idx, [out, retval] VARIANT *pValue);
+       [propput, id(DISPID_VALUE), helpstring("\83A\83C\83e\83\80\82ð\90Ý\92è\82·\82é")] HRESULT _Value([in] long idx, [in] VARIANT newValue);
+       [propget, id(1), helpstring("*\96¢\8eg\97p*")] HRESULT ColReturnNull([out, retval] VARIANT_BOOL *pValue);
+       [propput, id(1), helpstring("*\96¢\8eg\97p*")] HRESULT ColReturnNull([in] VARIANT_BOOL newValue);
+       [propget, id(2), helpstring("\83J\83\89\83\80\8bæ\90Ø\82è\95\8e\9a")] HRESULT ColSeparateChar([out, retval] BSTR *pValue);
+       [propput, id(2), helpstring("\83J\83\89\83\80\8bæ\90Ø\82è\95\8e\9a")] HRESULT ColSeparateChar([in] BSTR newValue);
+       [propget, id(3), helpstring("\98A\91±\82·\82é\8bó\94\92\82ð1\82Â\82Æ\8c©\82È\82·")] HRESULT ColSeparateShortSpace([out, retval] VARIANT_BOOL *pValue);
+       [propput, id(3), helpstring("\98A\91±\82·\82é\8bó\94\92\82ð1\82Â\82Æ\8c©\82È\82·")] HRESULT ColSeparateShortSpace([in] VARIANT_BOOL newValue);
+       [propget, id(4), helpstring("\8ds\90\94\82Ì\8eæ\93¾")] HRESULT Count([out, retval] LONG *pCount);
+       [propget, id(5), helpstring("\96\96\94ö\82Ì\8eæ\93¾")] HRESULT LastValue([out, retval] VARIANT *pValue);
+       [propput, id(5), helpstring("\96\96\94ö\82Ì\90Ý\92è")] HRESULT LastValue([in] VARIANT newValue);
+       [id(6), helpstring("\90æ\93ª\82É\91}\93ü")] HRESULT AddHead([in] BSTR mes, [out, retval] LONG *pIndex);
+       [id(7), helpstring("\96\96\94ö\82É\92Ç\89Á")] HRESULT AddTail([in] BSTR mes, [out, retval] LONG *pIndex);
+       [id(8), helpstring("\94C\88Ó\82Ì\88Ê\92u\82É\91}\93ü")] HRESULT Insert([in] LONG pos, [in] BSTR mes, [out, retval] LONG *pIndex);
+       [id(9), helpstring("\90æ\93ª\82ð\8dí\8f\9c")] HRESULT RemoveHead([out, retval] LONG *pIndex);
+       [id(10), helpstring("\96\96\94ö\82ð\8dí\8f\9c")] HRESULT RemoveTail([out, retval] LONG *pIndex);
+       [id(11), helpstring("\94C\88Ó\82Ì\88Ê\92u\82ð\8dí\8f\9c")] HRESULT Remove([in] LONG idx, [out, retval] LONG *pIndex);
+       [id(12), helpstring("\82·\82×\82Ä\8dí\8f\9c")] HRESULT RemoveAll();
+       [id(13), helpstring("\97ñ\8bæ\90Ø\82è\95\8e\9a\82ð\92u\8a·\82µ\82Ü\82·")] HRESULT ChangeTerminateChar([in] LONG nStartIdx, [in] LONG nEndIdx,
+               [in] BSTR newSeparateChar, [optional, in] VARIANT bChangeSeparateChar, [out, retval] VARIANT_BOOL *pResult);
+       [id(14), helpstring("\95\8e\9a\97ñ\82Ì\8c\9f\8dõ")] HRESULT Find([in] LONG nStartIdx, [in] LONG nEndIdx, [in] BSTR strMatch,
+               [optional, in] VARIANT nType, [out, retval] LONG *pIndex);
+       [id(15), helpstring("\8ew\92è\97ñ\82Ì\95\8e\9a\97ñ\82Ì\8c\9f\8dõ")] HRESULT FindCol([in] LONG nStartIdx, [in] LONG nEndIdx, [in] SHORT nCol, [in] BSTR strMatch,
+               [optional, in] VARIANT nType, [out, retval] LONG *pIndex);
+       [propget, id(16), helpstring("\83A\83C\83e\83\80\82Ì\8eæ\93¾")] HRESULT Value([in] LONG idx, [out, retval] VARIANT *pValue);
+       [propput, id(16), helpstring("\83A\83C\83e\83\80\82Ì\90Ý\92è")] HRESULT Value([in] LONG idx, [in] VARIANT newValue);
+       [propget, id(17), helpstring("\83J\83\89\83\80\90\94\82Ì\8eæ\93¾")] HRESULT ColCount([in] LONG idx, [out, retval] SHORT *pCount);
+       [propget, id(18), helpstring("\83J\83\89\83\80\82Ì\8eæ\93¾")] HRESULT ColValue([in] LONG idx, [in] SHORT colidx, [out, retval] BSTR *pColValue);
+       [propput, id(18), helpstring("\83J\83\89\83\80\82Ì\90Ý\92è")] HRESULT ColValue([in] LONG idx, [in] SHORT colidx, [in] BSTR newValue);
+};
+
+
+// IScrDlgRoot\83C\83\93\83^\81[\83t\83F\83C\83X\82Í\81AScrDlgRoot\83N\83\89\83X\82Å\8eÀ\91\95\82³\82ê\81ASeraphyScriptDialog\82ÌProgID\82Å\8cö\8aJ\82³\82ê\82Ü\82·\81B
+[
+       object,
+       uuid(E49C29AA-5E93-4C32-A6D5-423A8D0DE825),
+       dual,
+       nonextensible,
+       helpstring("SeraphyScriptDialog"),
+       pointer_default(unique)
+]
+interface IScrDlgRoot : IDispatch {
+       [propget, id(1), helpstring("\8eÀ\90\94(double)\82Ì\95\8e\9a\97ñ\95Ï\8a·\82Ì\8aù\92è\82Ì\97L\8cø\90¸\93x")] HRESULT DefaultFS([out, retval] SHORT* pVal);
+       [propput, id(1), helpstring("\8eÀ\90\94(double)\82Ì\95\8e\9a\97ñ\95Ï\8a·\82Ì\8aù\92è\82Ì\97L\8cø\90¸\93x")] HRESULT DefaultFS([in] SHORT newVal);
+       [propget, id(2), helpstring("\90®\90\94(int)\82Ì\95\8e\9a\97ñ\95Ï\8a·\82Ì\8aù\92è\82Ì\8c\85\90\94")] HRESULT DefaultIS([out, retval] SHORT* pVal);
+       [propput, id(2), helpstring("\90®\90\94(int)\82Ì\95\8e\9a\97ñ\95Ï\8a·\82Ì\8aù\92è\82Ì\8c\85\90\94")] HRESULT DefaultIS([in] SHORT newVal);
+       [propget, id(3), helpstring("\8eÀ\90\94\94ä\8ar\82Ì\8aù\92è\82Ì\90¸\93x")] HRESULT DefaultTolerance([out, retval] DOUBLE* pVal);
+       [propput, id(3), helpstring("\8eÀ\90\94\94ä\8ar\82Ì\8aù\92è\82Ì\90¸\93x")] HRESULT DefaultTolerance([in] DOUBLE newVal);
+       [propget, id(4), helpstring("\83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b\82Ì\83p\83X")] HRESULT ProfilePath([out, retval] BSTR* pVal);
+       [propput, id(4), helpstring("\83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b\82Ì\83p\83X")] HRESULT ProfilePath([in] BSTR newVal);
+       [propget, id(5), helpstring("\83V\83X\83e\83\80\8bN\93®\82©\82ç\82Ì\95b\90\94")] HRESULT TickCount([out, retval] DOUBLE* pVal);
+       [id(6), helpstring("\83o\81[\83W\83\87\83\93\8fî\95ñ\83_\83C\83A\83\8d\83O\82Ì\95\\8e¦")] HRESULT About([out,retval] DOUBLE* version);
+       [id(7), helpstring("\81u\83t\83@\83C\83\8b\82ð\8aJ\82­\81v\83_\83C\83A\83\8d\83O")] HRESULT GetOpenFileName([optional, in] VARIANT defaultName,
+               [optional, in] VARIANT filter, [optional, in] VARIANT defaultDir, [out,retval] VARIANT *pSelectedFilePath);
+       [id(8), helpstring("\81u\96¼\91O\82ð\82Â\82¯\82Ä\95Û\91\81v\83_\83C\83A\83\8d\83O")] HRESULT GetSaveFileName([optional, in] VARIANT defaultName,
+               [optional, in] VARIANT filter, [optional, in] VARIANT defaultDir, [out,retval] VARIANT *pSelectedFilePath);
+       [id(9), helpstring("\83v\83\8d\83O\83\89\83\80\82Ü\82½\82Í\83h\83L\83\85\83\81\83\93\83g\82ð\8aJ\82­")] HRESULT ShellExecute([optional, in] VARIANT varVerb,
+               [optional, in] VARIANT varPath, [optional, in] VARIANT varParam, [optional, in] VARIANT varDirectory,
+               [optional, in] VARIANT varShow, [optional, in] VARIANT varWait, [out,retval] SHORT *retcode);
+       [id(10), helpstring("\94ñ\93¯\8aú\82É\83L\81[\82Ì\8fó\91Ô\82ð\8eæ\93¾\82·\82é")] HRESULT GetASyncKeyState([in] VIRTUALKEYCODE vk, [out,retval] SHORT *retcode);
+       [id(11), helpstring("\81u\83t\83H\83\8b\83_\82Ì\91I\91ð\81v\83_\83C\83A\83\8d\83O")] HRESULT BrowseForFolder([optional, in] VARIANT initdir, [out,retval] VARIANT *selectedDir);
+       [id(12), helpstring("\83t\83H\81[\83\80\82ð\8dì\90¬\82·\82é")] HRESULT CreateForm([out,retval] IUserForm **ppForm);
+       [id(13), helpstring("\8eÀ\8ds\83t\83@\83C\83\8b\82Ì\83o\81[\83W\83\87\83\93\82ð\83`\83F\83b\83N\82·\82é")] HRESULT VersionCheck([in] BSTR path,
+               [in] SHORT v1, [in] SHORT v2, [in] SHORT v3, [in] SHORT v4, [out, retval] SHORT *pRetcode);
+       [id(14), helpstring("\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬\82·\82é")] HRESULT CreateDirectory([in] BSTR path, [out, retval] VARIANT_BOOL *pRetcode);
+       [id(15), helpstring("\8eÀ\8ds\83t\83@\83C\83\8b\82Ì\83o\81[\83W\83\87\83\93\82ð\8eæ\93¾\82·\82é")] HRESULT GetFileVersion([in] BSTR path, [out, retval] LONG *pFileVersion);
+       [id(16), helpstring("Windows\82ð\8fI\97¹\82·\82é")] HRESULT ExitWindows([in] SHORT mode, [out, retval] VARIANT_BOOL *pRetcode);
+       [id(17), helpstring("\93Á\8eê\83t\83H\83\8b\83_\82ð\8eæ\93¾\82·\82é")] HRESULT GetSpecialFolderPath([in] SPECIALFOLDERTYPE folderId, [out, retval] VARIANT *pResult);
+       [id(18), helpstring("\8fo\97Í\83E\83B\83\93\83h\83E\82ð\8dì\90¬\82·\82é")] HRESULT CreateOutputWindow([out, retval] IOutputWindow **ppOutputWindow);
+       [id(19), helpstring("\83C\83x\83\93\83g\82ð\8f\88\97\9d\82·\82é")] HRESULT DoEvents([optional, in] VARIANT timeout, [out, retval] SHORT *pEventcode);
+       [id(20), helpstring("\83X\83\8a\81[\83v\82·\82é")] HRESULT Sleep([in] SHORT tim);
+       [id(21), helpstring("\83e\83\93\83|\83\89\83\8a\83f\83B\83\8c\83N\83g\83\8a\82ð\8eæ\93¾\82·\82é")] HRESULT GetTempPath([out, retval] BSTR *pTempPath);
+       [id(22), helpstring("\88ê\8e\9e\83t\83@\83C\83\8b\96¼\82ð\8eæ\93¾\82·\82é")] HRESULT GetTempFileName([optional, in] VARIANT varTempDir,
+               [optional, in] VARIANT varTempPrefix, [out, retval] VARIANT *pTempFileName);
+       [id(23), helpstring("\83t\83@\83C\83\8b\82Ì\91®\90«\82ð\8eæ\93¾\82·\82é")] HRESULT GetFileAttributes([in] BSTR path, [out, retval] LONG *pAttributes);
+       [id(24), helpstring("\83t\83@\83C\83\8b\82Ì\8dÅ\8fI\8dX\90V\93ú\82ð\8eæ\93¾\82·\82é")] HRESULT GetFileLastWriteTime([in] BSTR path, [out, retval] VARIANT *pFileTime);
+       [id(25), helpstring("\83t\83@\83C\83\8b\82Ì\8dì\90¬\93ú\82ð\8eæ\93¾\82·\82é")] HRESULT GetFileCreationTime([in] BSTR path, [out, retval] VARIANT *pFileTime);
+       [id(26), helpstring("\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82ð\95\\8e¦\82·\82é")] HRESULT MessageBox([in] BSTR mes,
+               [optional, in] VARIANT varTitle, [optional, in] VARIANT varMode, [out, retval] SHORT *pRetcode);
+       [id(27), helpstring("\8eÀ\90\94\82ð\95\8e\9a\97ñ\95Ï\8a·\82·\82é")] HRESULT FloatS([in] double value, [optional, in] VARIANT varLen, [out, retval] BSTR *pRet);
+       [id(28), helpstring("\90®\90\94\82ð\95\8e\9a\97ñ\95Ï\8a·\82·\82é")] HRESULT IntS([in] long value, [optional, in] VARIANT varLen, [out, retval] BSTR *pRet);
+       [id(29), helpstring("\8eÀ\90\94\82ª\8ew\92è\90¸\93x\93à\82Å\93\99\82µ\82¢\82©\94»\92è\82·\82é")] HRESULT IsEqual([in] double val1, [in] double val2,
+               [optional, in] VARIANT varTolerance, [out, retval] VARIANT_BOOL *pResult);
+       [id(30), helpstring("\8eÀ\90\94\82Ì2\8e\9f\8c³\8dÀ\95W\82ª\8ew\92è\90¸\93x\93à\82Å\93\99\82µ\82¢\82©\94»\92è\82·\82é")] HRESULT IsPointEqual([in] double x1, [in] double y1,
+               [in] double x2, [in] double y2, [optional, in] VARIANT varTolerance, [out, retval] VARIANT_BOOL *pResult);
+       [id(31), helpstring("\83\8a\83X\83g\83I\83u\83W\83F\83N\83g\82ð\8dì\90¬\82·\82é")] HRESULT CreateList([out, retval] IVarArray **ppCreatedList);
+       [id(32), helpstring("\83t\83@\83C\83\8b\83p\83X\82Ì\8ag\92£\8eq\82ð\95Ï\8dX\82·\82é")] HRESULT ChangeExtensionName([in] BSTR path
+               , [in] BSTR newExtentionName, [out, retval] BSTR *pNewPath);
+       [propget, id(38), helpstring("\83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b\82Ì\92l\82ð\8eæ\93¾\82·\82é")] HRESULT ProfileValue([in] BSTR name,
+               [optional, in] VARIANT section, [out, retval] BSTR *pValue);
+       [propput, id(38), helpstring("\83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b\82Ì\92l\82ð\90Ý\92è\82·\82é")] HRESULT ProfileValue([in] BSTR name,
+               [optional, in] VARIANT section, [in] BSTR newValue);
+       [id(33), helpstring("\83t\83@\83C\83\8b\82ð\83R\83s\81[\82·\82é")] HRESULT CopyFile([in] BSTR src, [in] BSTR dist,
+               [optional, in] VARIANT overwrite, [out, retval] VARIANT_BOOL *pResult);
+       [id(34), helpstring("\83t\83@\83C\83\8b\82ð\88Ú\93®\82·\82é")] HRESULT MoveFile([in] BSTR src, [in] BSTR dist
+               , [optional, in] VARIANT overwrite, [out, retval] VARIANT_BOOL *pResult);
+       [id(35), helpstring("\83E\83F\83C\83g\83J\81[\83\\83\8b\82Ì\90§\8cä")] HRESULT WaitCursor([in] SHORT enableWaitCursor);
+       [id(36), helpstring("file\8c`\8e®\82ÌURL\82©\82ç\83p\83X\82É\95Ï\8a·\82·\82é")] HRESULT GetLocalPathName([in] BSTR orgPath,
+               [out, retval] VARIANT *pNewPath);
+       [id(37), helpstring("\83E\83B\83\93\83h\83E\82ð\8c\9f\8dõ\82·\82é")] HRESULT FindWindow([in] BSTR clsname, [in] BSTR caption,
+               [out, retval] VARIANT *pWndHandle);
+       [id(39), helpstring("\83p\83X\82©\82çfile\8c`\8e®\82ÌURL\82É\95Ï\8a·\82·\82é")] HRESULT GetFileURL([in] BSTR orgPath,
+               [out, retval] VARIANT *pFileURL);
+       [id(40), helpstring("\8bæ\90Ø\82è\95\8e\9a\82Å\8bæ\90Ø\82ç\82ê\82½\95\8e\9a\97ñ\82ðVBS\94z\97ñ\82É\95Ï\8a·\82·\82é")] HRESULT ConvertStringToArray([in] VARIANT text,
+               [optional, in] VARIANT varDelimiter, [out, retval] VARIANT *pArray);
+       [id(41), helpstring("VBS\94z\97ñ\82ð\8bæ\90Ø\82è\95\8e\9a\82Å\98A\8c\8b\82µ\82½\95\8e\9a\97ñ\82É\95Ï\8a·\82·\82é")] HRESULT ConvertArrayToString([in] VARIANT arr,
+               [optional, in] VARIANT varDelimiter, [out, retval] VARIANT *pRet);
+};
+
+
+[
+       object,
+       uuid(4CC0913F-2161-47b4-9FD2-A54AC49F9848),
+       helpstring("\83_\83C\83A\83\8d\83O\83\81\83b\83Z\81[\83W\82Ì\8f\88\97\9d\97p\83C\83\93\83^\81[\83t\83F\83C\83X"),
+       pointer_default(unique)
+]
+interface ICheckDialogMessage : IUnknown
+{
+       [helpstring("\83_\83C\83A\83\8d\83O\83\81\83b\83Z\81[\83W\82Å\82 \82ê\82Î\8f\88\97\9d\82µS_OK\82ð\95Ô\82·\81B\96³\8f\88\97\9d\82È\82çS_FALSE")] HRESULT DoDialogMessage([in] MSG *pMsg);
+};
+
+[
+       object,
+       uuid(0EE9C7FB-A5ED-404e-9C0F-D60EAEC93ACF),
+       helpstring("\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82·\82é\82½\82ß\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X"),
+       pointer_default(unique)
+]
+interface IMessageLoopImpl : IUnknown
+{
+       [helpstring("\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82µ\82Ü\82·")] HRESULT DoMessageLoop();
+       [helpstring("\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82·\82é\83_\83C\83A\83\8d\83O\82ð\93o\98^\82µ\82Ü\82·\81B")] HRESULT RegisterDialog([in] ICheckDialogMessage *pDlg);
+       [helpstring("\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82·\82é\83_\83C\83A\83\8d\83O\82ð\93o\98^\89ð\8f\9c\82µ\82Ü\82·\81B")] HRESULT UnregisterDialog([in] ICheckDialogMessage *pDlg);
+};
+
+[
+       uuid(8C5ED098-A33E-4B09-8E44-638CCF6307A8),
+       version(2.0),
+       helpstring("SeraphyScriptDialog 2.0 \83^\83C\83\83\89\83C\83u\83\89\83\8a")
+]
+library SeraphyScriptDialog
+{
+       importlib("stdole2.tlb");
+       [
+               uuid(4019FCE4-1A3B-4BFF-BF84-C036195842EF),
+               helpstring("SeraphyScriptDialogRoot Class")
+       ]
+       coclass SeraphyScriptDialogRoot
+       {
+               [default] interface IScrDlgRoot;
+       };
+       [
+               uuid(4FB83780-8E4B-4EE2-AE89-3FBC569658BA),
+               helpstring("ListExObj Class")
+       ]
+       coclass ListExObj
+       {
+               [default] interface IVarArray;
+       };
+
+       [
+               uuid(407572FC-2324-4e7b-A42C-901754904A45),
+               helpstring("OutputWindow Class")
+       ]
+       coclass OutputWindow
+       {
+               [default] interface IOutputWindow;
+       };
+
+       [
+               uuid(B6F67A2E-5FC0-4d68-9607-29321C138303),
+               helpstring("UserForm Class")
+       ]
+       coclass UserForm
+       {
+               [default] interface IUserForm;
+       };
+
+       //\82±\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\82Í\83^\83C\83v\83\89\83C\83u\83\89\83\8a\82É\8cö\8aJ\82µ\82È\82¢
+       //interface ICheckDialogMessage;
+
+       //\82±\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\82Í\83^\83C\83v\83\89\83C\83u\83\89\83\8a\82É\8cö\8aJ\82µ\82È\82¢
+       //interface IMessageLoopImpl;
+
+       enum SHOWWINDOW_MODE;
+
+       enum VIRTUALKEYCODE;
+
+       enum MESSAGEBOXMODE;
+
+       enum MESSAGEBOXICON;
+
+       enum SEARCHMODE;
+
+       enum SHUTDOWNMODE;
+
+       enum SPECIALFOLDERTYPE;
+};
diff --git a/SeraphyScriptDialog/SeraphyScriptDialog.rc b/SeraphyScriptDialog/SeraphyScriptDialog.rc
new file mode 100644 (file)
index 0000000..0980d41
--- /dev/null
@@ -0,0 +1,188 @@
+// Microsoft Visual C++ generated resource script.\r
+//\r
+#include "resource.h"\r
+\r
+#define APSTUDIO_READONLY_SYMBOLS\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 2 resource.\r
+//\r
+#ifndef APSTUDIO_INVOKED\r
+#include "targetver.h"\r
+#endif\r
+#include "winres.h"\r\r
+/////////////////////////////////////////////////////////////////////////////\r
+#undef APSTUDIO_READONLY_SYMBOLS\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// \93ú\96{\8cê resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT\r
+#pragma code_page(932)\r
+#endif //_WIN32\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// TEXTINCLUDE\r
+//\r
+\r
+1 TEXTINCLUDE \r
+BEGIN\r
+    "resource.h\0"\r
+END\r
+\r
+2 TEXTINCLUDE \r
+BEGIN\r
+    "#ifndef APSTUDIO_INVOKED\r\n"\r
+    "#include ""targetver.h""\r\n"\r
+    "#endif\r\n"\r
+    "#include ""winres.h""\r\0"\r
+END\r
+\r
+3 TEXTINCLUDE \r
+BEGIN\r
+    "1 TYPELIB ""SeraphyScriptDialog.tlb""\r\0"\r
+END\r
+\r
+#endif    // APSTUDIO_INVOKED\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Version\r
+//\r
+\r
+VS_VERSION_INFO VERSIONINFO\r
+ FILEVERSION 2,0,0,1\r
+ PRODUCTVERSION 2,0,0,1\r
+ FILEFLAGSMASK 0x3fL\r
+#ifdef _DEBUG\r
+ FILEFLAGS 0x1L\r
+#else\r
+ FILEFLAGS 0x0L\r
+#endif\r
+ FILEOS 0x4L\r
+ FILETYPE 0x2L\r
+ FILESUBTYPE 0x0L\r
+BEGIN\r
+    BLOCK "StringFileInfo"\r
+    BEGIN\r
+        BLOCK "041103a4"\r
+        BEGIN\r
+            VALUE "Comments", "SeraphyScriptDialog2(ATL) 2009/10"\r
+            VALUE "CompanyName", "seraphyware"\r
+            VALUE "FileDescription", "SeraphyScriptDialog2"\r
+            VALUE "FileVersion", "2.0.0.1"\r
+            VALUE "InternalName", "SeraphyScriptDialog.dll"\r
+            VALUE "LegalCopyright", "Copyright seraphyware.  All rights reserved."\r
+            VALUE "OriginalFilename", "SeraphyScriptDialog.dll"\r
+            VALUE "ProductName", "SeraphyScriptDialog"\r
+            VALUE "ProductVersion", "2.0.0.1"\r
+        END\r
+    END\r
+    BLOCK "VarFileInfo"\r
+    BEGIN\r
+        VALUE "Translation", 0x411, 932\r
+    END\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// REGISTRY\r
+//\r
+\r
+IDR_SERAPHYSCRIPTDIALOG REGISTRY                "SeraphyScriptDialog.rgs"\r
+IDR_SCRDLGROOT          REGISTRY                "ScrDlgRoot.rgs"\r
+IDR_VARARRAY            REGISTRY                "VarArray.rgs"\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Dialog\r
+//\r
+\r
+IDD_OUTPUTWINDOW DIALOGEX 0, 0, 150, 70\r
+STYLE DS_SETFONT | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_CAPTION | WS_THICKFRAME\r
+CAPTION "\83A\83E\83g\83v\83b\83g\83E\83B\83\93\83h\83E"\r
+FONT 9, "MS UI Gothic", 400, 0, 0x80\r
+BEGIN\r
+    EDITTEXT        IDC_EDIT1,0,0,150,70,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL\r
+END\r
+\r
+IDD_USERFORM DIALOGEX 0, 0, 207, 36\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "\83\86\81[\83U\81[\83_\83C\83A\83\8d\83O"\r
+FONT 11, "MS UI Gothic", 400, 0, 0x80\r
+BEGIN\r
+    LTEXT           "Static",IDC_DUMMY,0,0,207,12,SS_SUNKEN | NOT WS_VISIBLE\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// DESIGNINFO\r
+//\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+GUIDELINES DESIGNINFO \r
+BEGIN\r
+    IDD_USERFORM, DIALOG\r
+    BEGIN\r
+        RIGHTMARGIN, 205\r
+        BOTTOMMARGIN, 33\r
+    END\r
+END\r
+#endif    // APSTUDIO_INVOKED\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// String Table\r
+//\r
+\r
+STRINGTABLE \r
+BEGIN\r
+    IDS_PROJNAME            "SeraphyScriptDialog"\r
+    IDS_ABOUTMESSAGE        "SeraphyScriptDialog COM Object (ATL)\nVersion %1 (%2bit build)\nCopyright 2000/2 - 2009/12 seraphyware\n\8eg\97p\8b\96\91ø\8fð\8c\8f\82ð\95K\82¸\82²\8am\94F\82­\82¾\82³\82¢\81B"\r
+END\r
+\r
+STRINGTABLE \r
+BEGIN\r
+    IDS_PROFILESECTIONNAME  "SeraphyScriptDialogData"\r
+    IDS_DEFAULT_PREFERENCENAME "preference.ini"\r
+    IDS_USERFORM_TITLE      "\83\86\81[\83U\81[\83_\83C\83A\83\8d\83O"\r
+END\r
+\r
+STRINGTABLE \r
+BEGIN\r
+    IDS_FILTER_ALLFILES     "\91S\82Ä\82Ì\83t\83@\83C\83\8b(*.*)|*.*"\r
+    IDS_FILEEDITBTN_DEFAULTCAPTION "&Open"\r
+    IDS_FOLDEREDITBTN_DEFAULTCAPTION "\8eQ\8fÆ(&B)..."\r
+END\r
+\r
+STRINGTABLE \r
+BEGIN\r
+    IDS_MESSAGEBOXDEFAULTTITLE "\83G\83\89\81["\r
+    IDS_NO_SHUTDOWN_PRIVILEGE "\83V\83\83\83b\83g\83_\83E\83\93\82É\95K\97v\82È\93Á\8c \82ð\8ds\8eg\82Å\82«\82Ü\82¹\82ñ\81B"\r
+    IDS_UNSUPPORTED_SEPARATE_CHAR "\8bæ\90Ø\82è\95\8e\9a\82Æ\82µ\82Ä\83T\83|\81[\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81B"\r
+    IDS_FORM_ALWAYS_COMPOSED "\83t\83H\81[\83\80\82Í\8aù\82É\8d\\92z\8dÏ\82Ý\82Å\82·\81B"\r
+    IDS_FORM_NOT_COMPOSED   "\83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81B"\r
+END\r
+\r
+#endif    // \93ú\96{\8cê resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+\r
+#ifndef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 3 resource.\r
+//\r
+1 TYPELIB "SeraphyScriptDialog.tlb"\r\r
+/////////////////////////////////////////////////////////////////////////////\r
+#endif    // not APSTUDIO_INVOKED\r
+\r
diff --git a/SeraphyScriptDialog/SeraphyScriptDialog.rgs b/SeraphyScriptDialog/SeraphyScriptDialog.rgs
new file mode 100644 (file)
index 0000000..46e48ef
--- /dev/null
@@ -0,0 +1,11 @@
+HKCR
+{
+       NoRemove AppID
+       {
+               '%APPID%' = s 'SeraphyScriptDialog'
+               'SeraphyScriptDialog.DLL'
+               {
+                       val AppID = s '%APPID%'
+               }
+       }
+}
diff --git a/SeraphyScriptDialog/SeraphyScriptDialog.vcproj b/SeraphyScriptDialog/SeraphyScriptDialog.vcproj
new file mode 100644 (file)
index 0000000..70e915e
--- /dev/null
@@ -0,0 +1,693 @@
+<?xml version="1.0" encoding="shift_jis"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="9.00"
+       Name="SeraphyScriptDialog"
+       ProjectGUID="{45020F5C-CD2D-429B-BF1D-4AAAB0674D56}"
+       RootNamespace="SeraphyScriptDialog"
+       Keyword="AtlProj"
+       TargetFrameworkVersion="196613"
+       >
+       <Platforms>
+               <Platform
+                       Name="Win32"
+               />
+               <Platform
+                       Name="x64"
+               />
+       </Platforms>
+       <ToolFiles>
+       </ToolFiles>
+       <Configurations>
+               <Configuration
+                       Name="Debug|Win32"
+                       OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+                       ConfigurationType="2"
+                       UseOfATL="1"
+                       ATLMinimizesCRunTimeLibraryUsage="false"
+                       CharacterSet="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                               PreprocessorDefinitions="_DEBUG"
+                               MkTypLibCompatible="false"
+                               TargetEnvironment="1"
+                               GenerateStublessProxies="true"
+                               TypeLibraryName="$(IntDir)/SeraphyScriptDialog.tlb"
+                               HeaderFileName="SeraphyScriptDialog_i.h"
+                               DLLDataFileName=""
+                               InterfaceIdentifierFileName="SeraphyScriptDialog_i.c"
+                               ProxyFileName="SeraphyScriptDialog_p.c"
+                               ValidateParameters="true"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;_USRDLL;_MERGE_PROXYSTUB"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="1"
+                               UsePrecompiledHeader="2"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                               PreprocessorDefinitions="_DEBUG"
+                               Culture="1041"
+                               AdditionalIncludeDirectories="$(IntDir)"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               RegisterOutput="true"
+                               IgnoreImportLibrary="true"
+                               AdditionalDependencies="Version.lib ComCtl32.lib shlwapi.lib"
+                               LinkIncremental="2"
+                               ModuleDefinitionFile=".\SeraphyScriptDialog.def"
+                               GenerateDebugInformation="true"
+                               GenerateMapFile="true"
+                               MapFileName="$(TargetName).map"
+                               MapExports="true"
+                               SubSystem="2"
+                               TargetMachine="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Debug|x64"
+                       OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+                       ConfigurationType="2"
+                       UseOfATL="1"
+                       ATLMinimizesCRunTimeLibraryUsage="false"
+                       CharacterSet="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                               PreprocessorDefinitions="_DEBUG"
+                               MkTypLibCompatible="false"
+                               TargetEnvironment="3"
+                               GenerateStublessProxies="true"
+                               TypeLibraryName="$(IntDir)/SeraphyScriptDialog.tlb"
+                               HeaderFileName="SeraphyScriptDialog_i.h"
+                               DLLDataFileName=""
+                               InterfaceIdentifierFileName="SeraphyScriptDialog_i.c"
+                               ProxyFileName="SeraphyScriptDialog_p.c"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;_USRDLL;_MERGE_PROXYSTUB"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="1"
+                               UsePrecompiledHeader="2"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                               PreprocessorDefinitions="_DEBUG"
+                               Culture="1041"
+                               AdditionalIncludeDirectories="$(IntDir)"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               RegisterOutput="true"
+                               IgnoreImportLibrary="true"
+                               AdditionalDependencies="Version.lib ComCtl32.lib "
+                               OutputFile="$(OutDir)\$(ProjectName)X64.dll"
+                               LinkIncremental="2"
+                               ModuleDefinitionFile=".\SeraphyScriptDialog.def"
+                               GenerateDebugInformation="true"
+                               GenerateMapFile="true"
+                               MapFileName="SeraphyScriptDialog.map"
+                               MapExports="true"
+                               SubSystem="2"
+                               TargetMachine="17"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release|Win32"
+                       OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+                       ConfigurationType="2"
+                       UseOfATL="1"
+                       ATLMinimizesCRunTimeLibraryUsage="false"
+                       CharacterSet="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                               PreprocessorDefinitions="NDEBUG"
+                               MkTypLibCompatible="false"
+                               TargetEnvironment="1"
+                               GenerateStublessProxies="true"
+                               TypeLibraryName="$(IntDir)/SeraphyScriptDialog.tlb"
+                               HeaderFileName="SeraphyScriptDialog_i.h"
+                               DLLDataFileName=""
+                               InterfaceIdentifierFileName="SeraphyScriptDialog_i.c"
+                               ProxyFileName="SeraphyScriptDialog_p.c"
+                               ValidateParameters="true"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               EnableIntrinsicFunctions="true"
+                               PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;_USRDLL;_MERGE_PROXYSTUB"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="0"
+                               UsePrecompiledHeader="2"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                               PreprocessorDefinitions="NDEBUG"
+                               Culture="1041"
+                               AdditionalIncludeDirectories="$(IntDir)"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               RegisterOutput="true"
+                               IgnoreImportLibrary="true"
+                               AdditionalDependencies="Version.lib ComCtl32.lib shlwapi.lib"
+                               LinkIncremental="1"
+                               ModuleDefinitionFile=".\SeraphyScriptDialog.def"
+                               GenerateDebugInformation="true"
+                               GenerateMapFile="true"
+                               MapFileName="$(TargetName).map"
+                               MapExports="true"
+                               SubSystem="2"
+                               OptimizeReferences="2"
+                               EnableCOMDATFolding="2"
+                               TargetMachine="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release|x64"
+                       OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+                       ConfigurationType="2"
+                       UseOfATL="1"
+                       ATLMinimizesCRunTimeLibraryUsage="false"
+                       CharacterSet="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                               PreprocessorDefinitions="NDEBUG"
+                               MkTypLibCompatible="false"
+                               TargetEnvironment="3"
+                               GenerateStublessProxies="true"
+                               TypeLibraryName="$(IntDir)/SeraphyScriptDialog.tlb"
+                               HeaderFileName="SeraphyScriptDialog_i.h"
+                               DLLDataFileName=""
+                               InterfaceIdentifierFileName="SeraphyScriptDialog_i.c"
+                               ProxyFileName="SeraphyScriptDialog_p.c"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               EnableIntrinsicFunctions="true"
+                               PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;_USRDLL;_MERGE_PROXYSTUB"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="0"
+                               UsePrecompiledHeader="2"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                               PreprocessorDefinitions="NDEBUG"
+                               Culture="1041"
+                               AdditionalIncludeDirectories="$(IntDir)"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               RegisterOutput="true"
+                               IgnoreImportLibrary="true"
+                               AdditionalDependencies="Version.lib ComCtl32.lib "
+                               OutputFile="$(OutDir)\$(ProjectName)x64.dll"
+                               LinkIncremental="1"
+                               ModuleDefinitionFile=".\SeraphyScriptDialog.def"
+                               GenerateDebugInformation="true"
+                               SubSystem="2"
+                               OptimizeReferences="2"
+                               EnableCOMDATFolding="2"
+                               TargetMachine="17"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+       </Configurations>
+       <References>
+       </References>
+       <Files>
+               <Filter
+                       Name="\83\\81[\83\83t\83@\83C\83\8b"
+                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+                       >
+                       <File
+                               RelativePath=".\ArrayUtil.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\CommOpenFileName.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\ControlComponent.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\dlldatax.c"
+                               >
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath=".\dllmain.cpp"
+                               >
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath=".\OutputWindow.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\ScrDlgRoot.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\SeraphyScriptDialog.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\SeraphyScriptDialog.def"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\SeraphyScriptDialog.idl"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\stdafx.cpp"
+                               >
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="1"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="1"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="1"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="1"
+                                       />
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath=".\UserForm.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\VarArray.cpp"
+                               >
+                       </File>
+               </Filter>
+               <Filter
+                       Name="\83w\83b\83_\81\83t\83@\83C\83\8b"
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+                       >
+                       <File
+                               RelativePath=".\ArrayUtil.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\CommOpenFileName.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\ControlComponent.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\dlldatax.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\dllmain.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\OutputWindow.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\Resource.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\ScrDlgRoot.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\stdafx.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\targetver.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\UserForm.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\VarArray.h"
+                               >
+                       </File>
+               </Filter>
+               <Filter
+                       Name="\83\8a\83\\81[\83\83t\83@\83C\83\8b"
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+                       >
+                       <File
+                               RelativePath=".\ScrDlgRoot.rgs"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\SeraphyScriptDialog.rc"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\SeraphyScriptDialog.rgs"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\VarArray.rgs"
+                               >
+                       </File>
+               </Filter>
+               <Filter
+                       Name="\90\90¬\82³\82ê\82½\83t\83@\83C\83\8b"
+                       SourceControlFiles="false"
+                       >
+                       <File
+                               RelativePath=".\SeraphyScriptDialog_i.c"
+                               >
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               UsePrecompiledHeader="0"
+                                               CompileAsManaged="0"
+                                       />
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath=".\SeraphyScriptDialog_i.h"
+                               >
+                       </File>
+               </Filter>
+               <File
+                       RelativePath=".\ReadMe.txt"
+                       >
+               </File>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
diff --git a/SeraphyScriptDialog/UserForm.cpp b/SeraphyScriptDialog/UserForm.cpp
new file mode 100644 (file)
index 0000000..b5571dc
--- /dev/null
@@ -0,0 +1,1193 @@
+// UserForm.cpp : CUserForm \82Ì\8eÀ\91\95
+
+#include "stdafx.h"
+#include "UserForm.h"
+
+#include <vector>
+
+#include "ArrayUtil.h"
+
+// CUserForm
+
+HRESULT CUserForm::FinalConstruct()
+{
+       ATLASSERT(m_hWnd == NULL);
+
+       m_hRaiseEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+       ATLASSERT(m_hRaiseEvent);
+       if (m_hRaiseEvent == NULL) {
+               return HRESULT_FROM_WIN32(GetLastError());
+       }
+
+       // \93o\98^\8dÏ\82Ý\83|\83C\83\93\83^\82Í\8f\89\8aú\92l\82ÍNULL
+       m_pRegisteredThis = NULL;
+
+       // \83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\82Í\8aù\92è\82Å\82Í\96³\8cø
+       m_bAcceptFiles = VARIANT_FALSE;
+
+       // \83_\83~\81[\83R\83\93\83|\81[\83l\83\93\83g\82ð\8d\\92z\82·\82é
+       HRESULT hr;
+       hr = DummyControlComponent::Create(&m_nullComponent.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \83f\83t\83H\83\8b\83g\82Ì\83t\83H\81[\83\80\83^\83C\83g\83\8b\82ð\90Ý\92è\82·\82é\81B
+       m_strTitle.LoadString(IDS_USERFORM_TITLE);
+
+       // \83t\83H\81[\83\80\95\9d\82Ì\96¾\8e¦\93I\8ew\92è\82È\82µ
+       m_formWidth = 0;
+
+       // \83t\83H\81[\83\80\88Ê\92u\82Ì\96¾\8e¦\93I\8ew\92è\82È\82µ
+       m_formPosX = m_formPosY = 0;
+       m_formPosDefined = false;
+
+       return S_OK;
+}
+
+void CUserForm::FinalRelease()
+{
+       // \83E\83B\83\93\83h\83E\82ª\94j\8aü\82³\82ê\82Ä\82¢\82È\82¯\82ê\82Î\94j\8aü\82·\82é\81B
+       DestroyForm();
+
+       // \92è\8b`\82ð\83N\83\8a\83A\82·\82é
+       ClearAllControls();
+
+       // \83C\83x\83\93\83g\92Ê\92m\97p\83C\83x\83\93\83g\83n\83\93\83h\83\8b\82ð\89ð\95ú
+       CloseHandle(m_hRaiseEvent);
+       m_hRaiseEvent = NULL;
+
+       // \82à\82µ\81A\82Ü\82¾\93o\98^\82³\82ê\82Ä\82¢\82ê\82Î\89ð\8f\9c\82·\82é\81B
+       // \83E\83B\83\93\83h\83E\94j\8aü\91O\82É\83I\83u\83W\83F\83N\83g\82ª\94j\8aü\82³\82ê\82é\82æ\82¤\82È\95s\90³\82È\83P\81[\83X\82ð\91z\92è\81B
+       RegisterOrUnregisterMessageLoop(false);
+
+       // IMessageLoopImpl\82Ì\8eQ\8fÆ\82ð\89ð\95ú
+       m_pMessageLoopImpl.Release();
+}
+
+/**
+ * \83\81\83b\83Z\81[\83W\83\8b\81[\83v\82Ì\8eÀ\91\95\82ð\83Z\83b\83g\82·\82é\81B
+ * \8d\\92z\8e\9e\82É\88ø\82«\93n\82·\95K\97v\82ª\82 \82é\81B
+ */
+void CUserForm::SetMessageLoopImpl(IMessageLoopImpl *pMessageLoopImpl)
+{
+       ATLASSERT(pMessageLoopImpl != NULL);
+       m_pMessageLoopImpl = pMessageLoopImpl;
+}
+
+/**
+ * \8dÅ\8cã\82Ì\83\81\83b\83Z\81[\83W (\92Ê\8fí\81AWM_NCDESTROY) \82Ì\8eó\90M\8cã\82É\8cÄ\82Ñ\8fo\82³\82ê\82Ü\82·\81B
+ * HWND hWnd \94j\8aü\91Î\8fÛ\83E\83B\83\93\83h\83E\82ð\8e¯\95Ê\82·\82é\83n\83\93\83h\83\8b
+ */
+void CUserForm::OnFinalMessage(HWND hWnd)
+{
+       CAxDialogImpl<CUserForm>::OnFinalMessage(hWnd);
+
+       // \93o\98^\89ð\8f\9c
+       RegisterOrUnregisterMessageLoop(false);
+}
+
+// \83\81\83b\83Z\81[\83W\83\8b\81[\83v\82Ì\93o\98^/\89ð\8f\9c\82·\82é\81B
+HRESULT CUserForm::RegisterOrUnregisterMessageLoop(bool regist)
+{
+       ATLASSERT(m_pMessageLoopImpl);
+
+       if (regist) {
+               // \93o\98^\83\82\81[\83h
+
+               ATLASSERT(m_pRegisteredThis == NULL);
+
+               CComPtr<ICheckDialogMessage> pDlg;
+               HRESULT hr = QueryInterface(IID_ICheckDialogMessage, reinterpret_cast<void**>(&pDlg));
+               ATLASSERT(SUCCEEDED(hr));
+
+               m_pRegisteredThis = pDlg; // \93o\98^\82É\8eg\82Á\82½\83|\83C\83\93\83^\82ð\8bL\89¯\82µ\82Ä\82¨\82­\81B
+
+               return m_pMessageLoopImpl->RegisterDialog(m_pRegisteredThis);
+       }
+
+       // \93o\98^\89ð\8f\9c\83\82\81[\83h
+
+       if (m_pRegisteredThis) {
+               // \93o\98^\8dÏ\82Ý\83|\83C\83\93\83^\82ª\82 \82ê\82Î\81A\82»\82ê\82ð\89ð\8f\9c\82·\82é\81B
+               m_pMessageLoopImpl->UnregisterDialog(m_pRegisteredThis);
+               m_pRegisteredThis = NULL;
+       }
+       return S_OK;
+}
+
+ControlComponent& CUserForm::GetComponenet(SHORT idx)
+{
+       size_t mx = m_components.GetCount();
+       if (idx >= 0 && static_cast<size_t>(idx) < mx) {
+               return *m_components.GetAt(idx);
+       }
+       return *m_nullComponent;
+}
+
+STDMETHODIMP CUserForm::InterfaceSupportsErrorInfo(REFIID riid)
+{
+       static const IID* arr[] = 
+       {
+               &IID_IUserForm
+       };
+
+       for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
+       {
+               if (InlineIsEqualGUID(*arr[i],riid))
+                       return S_OK;
+       }
+       return S_FALSE;
+}
+
+STDMETHODIMP CUserForm::get__Value(SHORT ctlId, BSTR *pText)
+{
+       return get_Value(ctlId, pText);
+}
+
+STDMETHODIMP CUserForm::put__Value(SHORT ctlId, BSTR text)
+{
+       return put_Value(ctlId, text);
+}
+
+STDMETHODIMP CUserForm::get_FormTitle(BSTR *pTitle)
+{
+       return m_strTitle.CopyTo(pTitle);
+}
+
+STDMETHODIMP CUserForm::put_FormTitle(BSTR title)
+{
+       m_strTitle = title;
+
+       // \82·\82Å\82É\95\\8e¦\82³\82ê\82Ä\82¢\82ê\82Î\8dX\90V\82·\82é\81B
+       if (::IsWindow(m_hWnd)) {
+               if (title) {
+                       SetWindowText(title);
+               } else {
+                       SetWindowText(_T(""));
+               }
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::get_AcceptDropFile(VARIANT_BOOL *pEnabled)
+{
+       if (!pEnabled) {
+               return E_POINTER;
+       }
+
+       *pEnabled = m_bAcceptFiles;
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::put_AcceptDropFile(VARIANT_BOOL enabled)
+{
+       m_bAcceptFiles = enabled;
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::get_DropFiles(BSTR *pFiles)
+{
+       return m_dropedFiles.CopyTo(pFiles);
+}
+
+STDMETHODIMP CUserForm::get_EnableForm(VARIANT_BOOL *pEnabled)
+{
+       if (!pEnabled) {
+               return E_POINTER;
+       }
+
+       if (IsWindow()) {
+               // \95\\8e¦\82³\82ê\82Ä\82¢\82é\8fê\8d\87
+               *pEnabled = IsWindowEnabled() ? VARIANT_TRUE : VARIANT_FALSE;
+
+       } else {
+               // \95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87
+               *pEnabled = VARIANT_FALSE;
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::put_EnableForm(VARIANT_BOOL enabled)
+{
+       if (IsWindow()) {
+               // \95\\8e¦\82³\82ê\82Ä\82¢\82é\8fê\8d\87\82Ì\82Ý\90§\8cä\82·\82é\81B
+               EnableWindow(enabled ? TRUE : FALSE);
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::ClearAllControls()
+{
+       m_components.RemoveAll();
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::ExecuteForm(VARIANT reserve, SHORT *pEventCode)
+{
+       if (!pEventCode) {
+               return E_POINTER;
+       }
+       
+       // Ver1\82Í\83\82\81[\83_\83\8b\82Æ\83\82\81[\83h\83\8c\83X\82ÅMFC\83t\83\8c\81[\83\80\83\8f\81[\83N\82Ì
+       // DoModal\82ÆCreate\82ð\8eg\82¢\95ª\82¯\82Ä\82¢\82½\82ª\81AVer2\82Å\81A\82·\82×\82Ä\83\82\81[\83h\83\8c\83X\82É\93\9d\88ê\82µ\82½\81B
+       // \82Æ\82Í\82¢\82¦\81AMFC\82Ì\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O\82Í\81A\93à\95\94\93I\82É\82Í\83\82\81[\83h\83\8c\83X\82ð\83\82\81[\83_\83\8b\82Å\82 \82é\82©\82Ì\82æ\82¤\82É
+       // \90U\82é\95\91\82Á\82Ä\82¢\82½\82í\82¯\82Å\81A\82±\82Ì\82Ù\82¤\82ª\8bß\82¢\82©\82à\82µ\82ê\82È\82¢\81B
+
+       // \90e\83E\83B\83\93\83h\83E\82Ì\83f\83B\83Z\81[\83u\83\8b\81E\83A\83\93\83f\83B\83Z\81[\83u\83\8b\82ð\90§\8cä\82·\82é\81B
+       class ParentDisabler {
+       private:
+
+               bool m_disabledParent;
+
+               HWND m_hParent;
+
+       public:
+
+               ParentDisabler(HWND hParent)
+                       : m_hParent(hParent)
+                       , m_disabledParent(false)
+               {
+                       if (m_hParent != NULL && m_hParent != ::GetDesktopWindow()) {
+                               if (::IsWindowEnabled(m_hParent)) {
+                                       // \90e\82ª\83f\83B\83Z\81[\83u\83\8b\82Å\82Í\82È\82¢\8fê\8d\87\82Ì\82Ý\83f\83B\83Z\81[\83u\83\8b\82É\82·\82é
+                                       ::EnableWindow(m_hParent, FALSE);
+                                       m_disabledParent = true;
+                               }
+                       }
+               }
+
+               ~ParentDisabler()
+               {
+                       Release();
+               }
+
+               void Release()
+               {
+                       if (m_disabledParent) {
+                               // \90e\82ð\83f\83B\83Z\81[\83u\83\8b\82É\82µ\82½\8fê\8d\87\82Ì\82Ý\83C\83l\81[\83u\83\8b\82É\82·\82é
+                               ::EnableWindow(m_hParent, TRUE);
+                               ::SetActiveWindow(m_hParent);
+                               m_disabledParent = false;
+                       }
+               }
+       };
+
+
+       HRESULT hr;
+
+       // \83t\83H\81[\83\80\82Ì\8d\\92z
+       SHORT dmy = 0; // \96¢\8eg\97p
+       if ((FAILED(hr = ComposeForm(&dmy)))) {
+               return hr;
+       }
+
+       // \90e\83E\83B\83\93\83h\83E\82ª\82 \82ê\82Î\83f\83B\83Z\81[\83u\83\8b\82É\82·\82é\81B
+       ParentDisabler parentDisabler(::GetParent(m_hWnd));
+
+       // \83\81\83b\83Z\81[\83W\83\8b\81[\83v
+       SHORT eventCode = -1;
+       for (;;) {
+               CComVariant timeout(100); // 100 * 10mSec = 1Sec\91Ò\82¿
+               CComVariant varEventCode;
+
+               hr = WaitEvent(timeout, &varEventCode);
+               if (FAILED(hr)) {
+                       break;
+               }
+
+               if (!IsNullOrError(&varEventCode)) {
+                       varEventCode.ChangeType(VT_I2);
+                       ATLASSERT(varEventCode.vt == VT_I2);
+                       eventCode = varEventCode.iVal;
+                       break;
+               }
+       }
+
+       // \90e\83E\83B\83\93\83h\83E\82Ì\83f\83B\83Z\81[\83u\89ð\8f\9c
+       parentDisabler.Release();
+
+       // \83t\83H\81[\83\80\82Ì\94j\8aü
+       DestroyForm();
+
+       // \83\81\83b\83Z\81[\83W\83\8b\81[\83v\92\86\82Ì\93à\95\94\83G\83\89\81[
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \83C\83x\83\93\83g\83R\81[\83h\82Ì\83Z\83b\83g
+       *pEventCode = eventCode;
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineLabel(BSTR text, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       CAutoPtr<ControlComponent> pLabel;
+       HRESULT hr;
+       hr = LabelControlComponent::Create(text, &pLabel.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+       
+       size_t ctlId = m_components.Add(pLabel);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineEdit(VARIANT title, VARIANT initValue, VARIANT multiline, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       CAutoPtr<ControlComponent> pEdit;
+       HRESULT hr;
+       hr = MultiEditControlComponent::Create(title, initValue, multiline, &pEdit.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pEdit);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineButton(BSTR title, VARIANT eventCode, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       // \83C\83x\83\93\83g\83R\81[\83h\8fÈ\97ª\8e\9e\82Í\83R\83\93\83g\83\8d\81[\83\8bID\82Æ\93¯\82\82É\82·\82é\81B
+       SHORT nEventCode = static_cast<SHORT>(m_components.GetCount());
+       if (!IsNullOrError(&eventCode)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               if (SUCCEEDED(VariantChangeType(&tmp, &eventCode, VARIANT_NOUSEROVERRIDE, VT_I2))) {
+                       ATLASSERT(tmp.vt == VT_I2);
+                       nEventCode = tmp.iVal;
+               }
+       }
+
+       CAutoPtr<ControlComponent> pButton;
+       HRESULT hr;
+       hr = CommandButtonControlComponent::Create(title, nEventCode, &pButton.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pButton);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineEditButton(VARIANT title, VARIANT initValue, VARIANT btnTitle, VARIANT eventCode, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       // \83C\83x\83\93\83g\83R\81[\83h\8fÈ\97ª\8e\9e\82Í\83R\83\93\83g\83\8d\81[\83\8bID\82Æ\93¯\82\82É\82·\82é\81B
+       SHORT nEventCode = static_cast<SHORT>(m_components.GetCount());
+       if (!IsNullOrError(&eventCode)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               if (SUCCEEDED(VariantChangeType(&tmp, &eventCode, VARIANT_NOUSEROVERRIDE, VT_I2))) {
+                       ATLASSERT(tmp.vt == VT_I2);
+                       nEventCode = tmp.iVal;
+               }
+       }
+
+       CAutoPtr<ControlComponent> pEditButton;
+       HRESULT hr;
+       hr = EditButtonControlComponent::Create(title, initValue, btnTitle, nEventCode, &pEditButton.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pEditButton);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineFileEdit(VARIANT title, VARIANT initValue, VARIANT btnTitle, VARIANT openSaveMode, VARIANT filter, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+
+       // \83{\83^\83\93\82Ì\83L\83\83\83v\83V\83\87\83\93
+       CComVariant suppliedBtnTitle;
+       if (IsNullOrError(&btnTitle)) {
+               // \8fÈ\97ª\8e\9e\82Í\83f\83t\83H\83\8b\83g\82Ì\83L\83\83\83v\83V\83\87\83\93\82ð\90Ý\92è\82·\82é\81B
+               CComBSTR defaultBtnTitle;
+               defaultBtnTitle.LoadString(IDS_FILEEDITBTN_DEFAULTCAPTION);
+               suppliedBtnTitle = defaultBtnTitle;
+       } else {
+               suppliedBtnTitle = btnTitle;
+       }
+
+       CAutoPtr<ControlComponent> pFileEditButton;
+       HRESULT hr;
+       hr = FileEditButtonControlComponent::Create(title, initValue, suppliedBtnTitle, openSaveMode, filter, &pFileEditButton.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pFileEditButton);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineCheckButton(BSTR titles, VARIANT initValues, VARIANT mode, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       CAutoPtr<ControlComponent> pButton;
+       HRESULT hr;
+       hr = CheckButtonControlComponent::Create(titles, initValues, mode, &pButton.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pButton);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineRadioButton(BSTR titles, VARIANT initValues, VARIANT mode, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       CAutoPtr<ControlComponent> pButton;
+       HRESULT hr;
+       hr = RadioButtonControlComponent::Create(titles, initValues, mode, &pButton.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pButton);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineComboBox(VARIANT titles, VARIANT initValues, VARIANT listValues, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       CAutoPtr<ControlComponent> pCombobox;
+       HRESULT hr;
+       hr = ComboboxControlComponent::Create(titles, initValues, listValues, &pCombobox.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pCombobox);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineDropdownList(VARIANT titles, VARIANT initValue, VARIANT listValues, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       CAutoPtr<ControlComponent> pDropdown;
+       HRESULT hr;
+       hr = DropdownListControlComponent::Create(titles, initValue, listValues, &pDropdown.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pDropdown);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineListBox(VARIANT listValues, VARIANT initValues, VARIANT numberOfLines, VARIANT multiSelMode, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       CAutoPtr<ControlComponent> pButton;
+       HRESULT hr;
+       hr =ListboxControlComponent::Create(listValues, initValues, numberOfLines, multiSelMode, &pButton.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pButton);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::ComposeForm(SHORT *pEventCode)
+{
+       if (!pEventCode) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \82·\82Å\82É\83_\83C\83A\83\8d\83O\82ª\90\90¬\8dÏ\82Ý
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       // \83C\83x\83\93\83g\82Ì\83N\83\8a\83A
+       ATLASSERT(m_hRaiseEvent);
+       ResetEvent(m_hRaiseEvent);
+
+       m_lstEvent.clear();
+
+       // \83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O\82Ì\8d\\92z
+       ATLASSERT(m_hWnd == NULL);
+
+       HWND hActiveWnd = ::GetActiveWindow();
+
+       Create(hActiveWnd);
+       if (m_hWnd == NULL) {
+               return E_FAIL;
+       }
+
+       ATLASSERT(m_hWnd != NULL);
+       if (!::IsWindow(m_hWnd)) {
+               // \8d\\92z\82É\8e¸\94s
+               return E_FAIL;
+       }
+
+       try {
+               // \83E\83B\83\93\83h\83E\95\9d\82Ì\92²\90®
+               if (m_formWidth > 0) {
+                       RECT dialogRect;
+                       if (!GetWindowRect(&dialogRect)) {
+                               AtlThrowLastWin32();
+                       }
+
+                       // \83E\83B\83\93\83h\83E\95\9d\82ð\90Ý\92è\81A\8e¸\94s\82µ\82Ä\82à\92v\96½\93I\82Å\82Í\82È\82¢\82Ì\82Å\8cp\91±\82·\82é
+                       SetWindowPos(NULL, 0, 0, m_formWidth,
+                               dialogRect.bottom - dialogRect.top,
+                               SWP_NOZORDER | SWP_NOMOVE | SWP_NOREDRAW);
+               }
+
+               // \83N\83\89\83C\83A\83\93\83g\97Ì\88æ\82ð\8b\81\82ß\82é
+               RECT clientRect = {0};
+               if (!GetClientRect(&clientRect)) {
+                       AtlThrowLastWin32();
+               }
+
+               // \83_\83~\81[\83R\83\93\83g\83\8d\81[\83\8b\82Ì\97Ì\88æ\82ð\8b\81\82ß\82é\81B
+               CWindow dummyCtl = GetDlgItem(IDC_DUMMY);
+               ATLASSERT(dummyCtl.IsWindow());
+
+               RECT templateRect = {0};
+               if (!dummyCtl.GetWindowRect(&templateRect)) {
+                       AtlThrowLastWin32();
+               }
+
+               // \8aî\8f\80\83T\83C\83Y\82Ì\8eZ\92è
+
+               LONG baseHeight = templateRect.bottom - templateRect.top; // 1\8ds\82Ì\8d\82\82³
+               LONG width  = clientRect.right - clientRect.left; // 1\8ds\82Ì\95\9d
+
+               const LONG leftMargin = 5;
+               const LONG rightMargin = 5;
+
+               // \83R\83\93\83g\83\8d\81[\83\8b\82Ì\8d\\92z
+               size_t mx = m_components.GetCount();
+               WORD nChildId = static_cast<WORD>(CHILDID_FIRST); // \8aJ\8enID\82É\83I\83t\83Z\83b\83g\82ð\82Â\82¯\82é\81B
+               for (size_t idx = 0; idx < mx; idx++) {
+                       m_components.GetAt(idx)->Compose(nChildId, m_hWnd); // nChildId\82Í\8cÄ\82Ñ\8fo\82µ\90æ\82Å\8fÁ\94ï\82µ\82½\95ª\82¾\82¯\89Á\8eZ\82³\82ê\82é
+               }
+
+               // \83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u
+               LONG y = 0;
+               for (size_t idx = 0; idx < mx; idx++) {
+                       UINT lineCount = m_components.GetAt(idx)->GetLineCount();
+                       RECT rct = {leftMargin, y, width - rightMargin, y + baseHeight * lineCount};
+                       m_components.GetAt(idx)->DoLayout(m_hWnd, baseHeight, rct);
+                       y += baseHeight * lineCount;
+               }
+
+               // \83E\83B\83\93\83h\83E\82Ì\91å\82«\82³\82ð\92²\90®
+               RECT frameSize = {0};
+               RECT innerSize = {0};
+               GetWindowRect(&frameSize);
+               GetClientRect(&innerSize);
+               // \83E\83B\83\93\83h\83E\8d\82\82³\82©\82ç\83N\83\89\83C\83A\83\93\83g\8d\82\82³\82ð\88ø\82¢\82½\8c\8b\89Ê\82ª\83^\83C\83g\83\8b\83o\81[\82Æ\83{\81[\83_\81[\82ð\8aÜ\82Þ\83T\83C\83Y
+               LONG borderHeight = (frameSize.bottom - frameSize.top) - innerSize.bottom;
+
+               LONG windowHeight = borderHeight + y + (baseHeight / 2); // 0.5\8ds\95ª\91½\82ß\82É\90Ý\92è
+               LONG windowWidth  = frameSize.right - frameSize.left;
+               SetWindowPos(NULL, 0, 0, windowWidth, windowHeight, SWP_NOZORDER | SWP_NOMOVE);
+
+       } catch (CAtlException& ex) {
+               // \8d\\92z\82É\8e¸\94s
+               DestroyForm();
+               return ex.m_hr;
+       }
+
+       // \8dÅ\8f\89\82Ì\83^\83u\83X\83g\83b\83v\82ð\82à\82Â\8eq\83R\83\93\83g\83\8d\81[\83\8b\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é\81B
+       CWindow child = GetWindow(GW_CHILD);
+       while (child.IsWindow()) {
+               LONG style = child.GetWindowLong(GWL_STYLE);
+               if ((style & WS_TABSTOP) && (style & WS_VISIBLE)) {
+                       GotoDlgCtrl(child.m_hWnd);
+                       break;
+               }
+               child = child.GetWindow(GW_HWNDNEXT);
+       }
+
+       // \83\81\83b\83Z\81[\83W\83\8b\81[\83v\82Ö\82Ì\93o\98^
+       HRESULT hr = RegisterOrUnregisterMessageLoop(true);
+       ATLASSERT(SUCCEEDED(hr));
+
+       if (m_formPosDefined) {
+               // \96¾\8e¦\93I\82È\88Ê\92u\8ew\92è\82 \82è
+               SetWindowPos(NULL, m_formPosX, m_formPosY, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
+       } else {
+               // \89æ\96Ê\92\86\89\9b\82É\88Ê\92u\82Ã\82¯
+               CenterWindow(GetParent());
+       }
+
+       // \83E\83B\83\93\83h\83E\82Ì\95\\8e¦
+       ShowWindow(SW_SHOWNORMAL);
+
+       *pEventCode = 1;
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DestroyForm()
+{
+       if (!::IsWindow(m_hWnd)) {
+               // \83_\83C\83A\83\8d\83O\82ª\90\90¬\82³\82ê\82Ä\82¢\82È\82¢
+               // ver2\82æ\82è\81A\95Â\82\82é\96Ú\93I\82Í\92B\82¹\82ç\82ê\82Ä\82¢\82é\82Ì\82Å\83G\83\89\81[\82É\82µ\82È\82¢\82æ\82¤\82É\95Ï\8dX
+               return S_FALSE;
+       }
+       
+       // \83E\83B\83\93\83h\83E\88Ê\92u\82Ì\8eæ\93¾ (\94j\8aü\92\86\82È\82Ì\82Å\83G\83\89\81[\82Í\96³\8e\8b\82·\82é\81B)
+       GetFormPos();
+
+       // \94j\8aü\8aJ\8en\82·\82é\82Ì\82Å\90æ\82É\83E\83B\83\93\83h\83E\82ð\94ñ\95\\8e¦\82É\82·\82é
+       // (\8eq\83R\83\93\83g\83\8d\81[\83\8b\82ª\8fÁ\82¦\82Ä\82ä\82­\97l\8eq\82ð\95\\8e¦\82·\82é\95K\97v\82Í\82È\82¢\82½\82ß)
+       ShowWindow(SW_HIDE);
+
+       // \92è\8b`\82³\82ê\82½\83R\83\93\83g\83\8d\81[\83\8b\82Ì\83E\83B\83\93\83h\83E\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\94j\8aü\82·\82é
+       size_t mx = m_components.GetCount();
+       for (size_t idx = 0; idx < mx; idx++) {
+               HRESULT hr = m_components.GetAt(idx)->Destroy();
+               ATLASSERT(SUCCEEDED(hr));
+       }
+
+       // \83_\83C\83A\83\8d\83O\82Ì\94j\8aü
+       if (!DestroyWindow()) {
+               return HRESULT_FROM_WIN32(GetLastError());
+       }
+       ATLASSERT(m_hWnd == NULL);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::WaitEvent(VARIANT timeout, VARIANT *pEventCode)
+{
+       if (!pEventCode) {
+               return E_POINTER;
+       }
+       VariantInit(pEventCode);
+       pEventCode->vt = VT_NULL;
+
+       // \8f]\97\88\82æ\82è\81A\83E\83B\83\93\83h\83E\82Ì\90\90¬\97L\96³\82É\82©\82©\82í\82ç\82¸\8eÀ\8ds\89Â\94\\82¾\82Á\82½\82Ì\82Å
+       // Ver2\82Å\82à\93¯\97l\82Æ\82·\82é\81B
+
+       // \83^\83C\83\80\83A\83E\83g\92l\82ð\8eæ\93¾
+       DWORD dwTimeout = 0;
+       if (!IsNullOrError(&timeout)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               if (SUCCEEDED(VariantChangeType(&tmp, &timeout, VARIANT_NOUSEROVERRIDE, VT_I4))) {
+                       if (tmp.lVal < 0) {
+                               dwTimeout = 0;
+
+                       } else {
+                               dwTimeout = tmp.lVal * 10; // 100mSec\92P\88Ê\82ð1mSec\92P\88Ê\82É\95â\90³
+                       }
+               }
+       }
+
+       // \83C\83x\83\93\83g\82Ü\82½\82Í\83\81\83b\83Z\81[\83W\82ð\91Ò\8b@
+       // \82½\82¾\82µ\81A\83C\83x\83\93\83g\91Ò\8b@\8c\8b\89Ê\82É\8aÖ\82í\82ç\82¸\81A\83\81\83b\83Z\81[\83W\83L\83\85\81[\82Æ\83C\83x\83\93\83g\83\8a\83X\83g\82Í\96\88\89ñ\8f\88\97\9d\82·\82é\81B
+       do {
+               DWORD st = GetTickCount();
+               DWORD reason = MsgWaitForMultipleObjects(1, &m_hRaiseEvent, FALSE, dwTimeout, QS_ALLINPUT);
+
+               // \83\81\83b\83Z\81[\83W\83L\83\85\81[\82Ì\8f\88\97\9d
+               ATLASSERT(m_pMessageLoopImpl);
+               m_pMessageLoopImpl->DoMessageLoop();
+
+               if (reason != WAIT_OBJECT_0 + 1) {
+                       // \83^\83C\83\80\83A\83E\83g\82Ü\82½\82Í\83C\83x\83\93\83g\94­\90
+                       break;
+               }
+
+               // \8ec\82è\91Ò\8b@\8e\9e\8aÔ\82ª\82 \82ê\82Î\8cJ\82è\95Ô\82·
+               if (dwTimeout > 0) {
+                       DWORD en = GetTickCount();
+                       DWORD elapsed = en - st;
+                       if (elapsed < dwTimeout) {
+                               dwTimeout -= elapsed;
+                       }
+               }
+       } while(dwTimeout > 0);
+
+       // \83C\83x\83\93\83g\82Ì\8eæ\93¾
+       if (m_lstEvent.size() > 0) {
+               SHORT wID = m_lstEvent.front();
+               m_lstEvent.pop_front();
+
+               pEventCode->vt = VT_I2;
+               pEventCode->iVal = wID;
+
+               // \82Ü\82¾\83C\83x\83\93\83g\82Ì\8ec\82è\82ª\82 \82ê\82Î\8e\9f\82É\8eæ\93¾\82Å\82«\82é\82æ\82¤\82É\82·\82é\81B
+               if (m_lstEvent.size() > 0) {
+                       ATLASSERT(m_hRaiseEvent);
+                       SetEvent(m_hRaiseEvent);
+               }
+
+               return S_OK;
+       }
+
+       return S_FALSE;
+}
+
+STDMETHODIMP CUserForm::get_Value(SHORT ctlId, BSTR *pText)
+{
+       return GetComponenet(ctlId).get_Value(pText);
+}
+
+STDMETHODIMP CUserForm::put_Value(SHORT ctlId, BSTR text)
+{
+       return GetComponenet(ctlId).put_Value(text);
+}
+
+STDMETHODIMP CUserForm::get_Enable(SHORT ctlId, VARIANT_BOOL *pEnabled)
+{
+       return GetComponenet(ctlId).get_Enable(pEnabled);
+}
+
+STDMETHODIMP CUserForm::put_Enable(SHORT ctlId, VARIANT_BOOL enabled)
+{
+       return GetComponenet(ctlId).put_Enable(enabled);
+}
+
+STDMETHODIMP CUserForm::get_IsModify(SHORT ctlId, VARIANT_BOOL *pModified)
+{
+       return GetComponenet(ctlId).get_IsModified(pModified);
+}
+
+STDMETHODIMP CUserForm::get_FormWidth(SHORT *pWidth)
+{
+       if (!pWidth) {
+               return E_POINTER;
+       }
+
+       *pWidth = m_formWidth;
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::put_FormWidth(SHORT width)
+{
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       if (width <= 0) {
+               // 0\96¢\96\9e\82Í\96¾\8e¦\93I\8ew\92è\82È\82µ\82ð\88Ó\96¡\82·\82é\81B
+               m_formWidth = 0;
+
+       } else if (width < 50) {
+               // \8dÅ\92á50px\82Í\95K\97v\81B
+               width = 50;
+       }
+
+       m_formWidth = width;
+
+       return S_OK;
+}
+
+HRESULT CUserForm::GetFormPos() throw()
+{
+       if (!::IsWindow(m_hWnd)) {
+               return S_FALSE;
+       }
+
+       WINDOWPLACEMENT pinfo = {0};
+       pinfo.length = sizeof(WINDOWPLACEMENT);
+       if (!GetWindowPlacement(&pinfo)) {
+               return HRESULT_FROM_WIN32(GetLastError());
+       }
+
+       m_formPosX = pinfo.rcNormalPosition.left;
+       m_formPosY = pinfo.rcNormalPosition.top;
+       m_formPosDefined = true;
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::get_FormPos(BSTR *pPlaceInfo)
+{
+       if (!pPlaceInfo) {
+               return E_POINTER;
+       }
+
+       // \95\\8e¦\92\86\82È\82ç\82Î\89æ\96Ê\88Ê\92u\82ð\8eæ\93¾\82·\82é\81B
+       HRESULT hr = GetFormPos();
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       // \95\8e\9a\97ñ\89»
+       const int bufsiz = 64;
+       WCHAR buf[bufsiz] = {0};
+       if (m_formPosDefined) {
+               // \83t\83H\81[\83\80\88Ê\92u\82ª\92è\8b`\82³\82ê\82Ä\82¢\82é\8fê\8d\87
+               int ret = swprintf_s(buf, bufsiz, L"%d,%d", m_formPosX, m_formPosY);
+               if (ret < 0) {
+                       return E_FAIL;
+               }
+       } else {
+               // \83t\83H\81[\83\80\88Ê\92u\82ª\96¢\92è\8b`\82Ì\8fê\8d\87
+               buf[0] = 0; // \8bó\95\8e\9a
+       }
+
+       *pPlaceInfo = SysAllocString(buf);
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::put_FormPos(BSTR placeInfo)
+{
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+       // \89ð\90Í
+
+       CComBSTR pos_x, pos_y;
+
+       LPCWSTR p = placeInfo;
+       if (p && *p) {
+               p = ArrayUtil::GetNextToken(p, ',', &pos_x);
+               if (p) {
+                       p = ArrayUtil::GetNextToken(p, 0, &pos_y);
+               }
+       }
+
+       if (pos_x.Length() == 0 && pos_y.Length() == 0) {
+               // \92è\8b`\82È\82µ\82Ì\8fê\8d\87
+
+               m_formPosX = 0;
+               m_formPosY = 0;
+               m_formPosDefined = false;
+
+       } else {
+               //\96¾\8e¦\93I\8ew\92è\82 \82è\82Ì\8fê\8d\87
+
+               if (pos_x.Length() == 0 || pos_y.Length() == 0) {
+                       // \82¢\82¸\82ê\82©\88ê\95û\82µ\82©\8ew\92è\82ª\82È\82¢\8fê\8d\87\82Í\8c`\8e®\95s\90³
+                       return E_INVALIDARG;
+               }
+
+               LONG x = 0, y = 0;
+
+               if (pos_x.Length() > 0) {
+                       HRESULT hr = VarI4FromStr(pos_x, LOCALE_SYSTEM_DEFAULT, VARIANT_NOUSEROVERRIDE, &x);
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+               }
+               if (pos_y.Length() > 0) {
+                       HRESULT hr = VarI4FromStr(pos_y, LOCALE_SYSTEM_DEFAULT, VARIANT_NOUSEROVERRIDE, &y);
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+               }
+
+               m_formPosX = x;
+               m_formPosY = y;
+               m_formPosDefined = true;
+       }
+
+       return S_OK;
+}
+
+STDMETHODIMP CUserForm::DefineFolderEdit(VARIANT title, VARIANT initValue, VARIANT btnTitle, SHORT *pCtlId)
+{
+       if (!pCtlId) {
+               return E_POINTER;
+       }
+       if (::IsWindow(m_hWnd)) {
+               // \83t\83H\81[\83\80\82ª\8d\\92z\82³\82ê\82Ä\82¢\82ê\82Î\91\80\8dì\95s\89Â
+               return Error(IDS_FORM_ALWAYS_COMPOSED);
+       }
+
+
+       // \83{\83^\83\93\82Ì\83L\83\83\83v\83V\83\87\83\93
+       CComVariant suppliedBtnTitle;
+       if (IsNullOrError(&btnTitle)) {
+               // \8fÈ\97ª\8e\9e\82Í\83f\83t\83H\83\8b\83g\82Ì\83L\83\83\83v\83V\83\87\83\93\82ð\90Ý\92è\82·\82é\81B
+               CComBSTR defaultBtnTitle;
+               defaultBtnTitle.LoadString(IDS_FOLDEREDITBTN_DEFAULTCAPTION);
+               suppliedBtnTitle = defaultBtnTitle;
+       } else {
+               suppliedBtnTitle = btnTitle;
+       }
+
+       CAutoPtr<ControlComponent> pFolderEditButton;
+       HRESULT hr;
+       hr = FolderEditButtonControlComponent::Create(title, initValue, suppliedBtnTitle, &pFolderEditButton.m_p);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       size_t ctlId = m_components.Add(pFolderEditButton);
+
+       *pCtlId = static_cast<SHORT>(ctlId);
+
+       return S_OK;
+}
+
+// ICheckDialogMessage
+
+STDMETHODIMP CUserForm::DoDialogMessage(MSG *pMsg)
+{
+       if (!pMsg) {
+               return E_INVALIDARG;
+       }
+
+       if (!::IsWindow(m_hWnd)) {
+               // \8f\88\97\9d\82µ\82Ä\82¢\82È\82¢
+               return S_FALSE;
+       }
+
+       return IsDialogMessage(pMsg) ? S_OK : S_FALSE;
+}
+
+// \83C\83x\83\93\83g\83n\83\93\83h\83\89
+
+LRESULT CUserForm::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+       CAxDialogImpl<CUserForm>::OnInitDialog(uMsg, wParam, lParam, bHandled);
+
+       // \83^\83C\83g\83\8b\82ð\90Ý\92è\82·\82é
+       if (m_strTitle) {
+               SetWindowText(m_strTitle);
+       } else {
+               SetWindowText(_T(""));
+       }
+
+       // Ver2\82æ\82è\81A\8fí\82É\83h\83\8d\83b\83v\82ð\8b\96\89Â\82·\82é\82æ\82¤\82É\95Ï\8dX\81B
+       // \82½\82¾\82µ\81A\83C\83x\83\93\83g\82Ì\94­\90\97L\96³\82Í\95Ê\81B
+       DWORD dwExStyle = GetWindowLong(GWL_EXSTYLE);
+       dwExStyle |= WS_EX_ACCEPTFILES;
+       SetWindowLong(GWL_EXSTYLE, dwExStyle);
+
+       bHandled = TRUE;
+
+       return 1;  // \83V\83X\83e\83\80\82Å\83t\83H\81[\83J\83X\82ð\90Ý\92è\82µ\82Ü\82·\81B
+}
+
+LRESULT CUserForm::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+       // \8aù\92è\82Ì\8f\88\97\9d\82ð\91±\8ds
+       bHandled = FALSE;
+       return 0;
+}
+
+LRESULT CUserForm::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+       WORD wNotifyCode = HIWORD(wParam);
+       WORD wID = LOWORD(wParam);
+       HWND hCtlWnd = reinterpret_cast<HWND>(lParam);
+
+       if (wID == IDOK) {
+               // ENTER\83L\81[\82ª\89\9f\82³\82ê\82½\8fê\8d\87
+               NextDlgCtrl();
+
+               bHandled = TRUE;
+               return 0;
+       }
+
+       if (wID == IDCANCEL) {
+               // ESC\83L\81[\81A\82à\82µ\82­\82Í\83_\83C\83A\83\8d\83O\82ª\95Â\82\82ç\82ê\82½\8fê\8d\87\81A
+               // \83_\83C\83A\83\8d\83O\83v\83\8d\83V\81[\83W\83\83\82É\82æ\82è\91\97\90M\82³\82ê\82é
+               EnqueueEvent(EVENTID_CANCEL);
+
+               bHandled = TRUE;
+               return 0;
+       }
+
+       if (wNotifyCode == BN_CLICKED) {
+               // \83R\83}\83\93\83h\83{\83^\83\93\82ª\89\9f\89º\82³\82ê\82½\8fê\8d\87\81B
+               // \83E\83B\83\93\83h\83E\8e¯\95Ê\8eq\82©\82ç\83I\83u\83W\83F\83N\83g\82ð\8c\9f\8dõ\82µ\81A\83C\83x\83\93\83gID\82ð\8eæ\93¾\82·\82é\81B
+               // (\82¹\82¢\82º\82¢\90\94\8f\\8cÂ\96¢\96\9e\82È\82Ì\82Å\83\8a\83X\83g\8c\9f\8dõ\82Å\96â\91è\82È\82¢\82Æ\8ev\82¤)
+               size_t mx = m_components.GetCount();
+               for (size_t idx = 0; idx < mx; idx++) {
+                       if (m_components.GetAt(idx)->HasChildId(wID) == S_OK) {
+                               SHORT eventId = 0;
+                               if (m_components.GetAt(idx)->IsEventGenerated(wNotifyCode, wID, &eventId) == S_OK) {
+                                       EnqueueEvent(eventId);
+                                       bHandled = TRUE;
+                               }
+                               break;
+                       }
+               }
+       }
+
+       return 0;
+}
+
+void CUserForm::EnqueueEvent(SHORT eventId)
+{
+       // \83C\83x\83\93\83gID\82ð\90Ý\92è\82·\82é\81B
+       m_lstEvent.push_back(eventId);
+
+       // \83\81\83b\83Z\81[\83W\91Ò\8b@\82ð\89ð\8f\9c\82·\82é\82½\82ß\82Ì\83C\83x\83\93\83g\82ð\83V\83O\83i\83\8b\8fó\91Ô\82Æ\82·\82é
+       ATLASSERT(m_hRaiseEvent);
+       SetEvent(m_hRaiseEvent);
+}
+
+LRESULT CUserForm::OnDropFiles(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+       HDROP hDropInfo = reinterpret_cast<HDROP>(wParam);
+       ATLASSERT(hDropInfo);
+
+       if (hDropInfo && m_bAcceptFiles) {
+               // \83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b\90\94
+               UINT dropCount = DragQueryFile(hDropInfo, -1, NULL, 0);
+
+               // \8ae\83t\83@\83C\83\8b\82Ì\95\8e\9a\90\94\82Æ\8bæ\90Ø\82è\95\8e\9a\82Ì\8d\87\8cv\82ð\8b\81\82ß\82é
+               UINT requireSize = 0;
+               for (UINT idx = 0; idx < dropCount; idx++) {
+                       UINT sz = DragQueryFile(hDropInfo, idx, NULL, 0);
+                       requireSize += sz + 1; // \8bæ\90Ø\82è or \8fI\92[\95\8e\9a\95ª
+               }
+
+               if (requireSize > 0) {
+                       std::vector<WCHAR> namebuf(requireSize);
+                       UINT bufsiz = requireSize;
+                       LPWSTR p = &namebuf[0];
+
+                       for (UINT idx = 0; idx < dropCount; idx++) {
+                               UINT sz = DragQueryFile(hDropInfo, idx, p, bufsiz);
+                               p += sz;
+                               bufsiz -= sz;
+                               *p = 0;
+
+                               if (dropCount > 1 && idx + 1 < dropCount) {
+                                       // \83t\83@\83C\83\8b\90\94\82ª1\82Â\88È\8fã\82 \82è\81A\8a\8e\82Â\81A\82»\82ê\82ª\8dÅ\8cã\82Å\82È\82¯\82ê\82Î
+                                       // \8bæ\90Ø\82è\95\8e\9a\82ª\95K\97v
+                                       *p++ = ';';
+                                       *p = 0;
+                                       bufsiz -= 1;
+                               }
+                       }
+
+                       // AcceptDropFile\83v\83\8d\83p\83e\83B\82Ì\97L\96³\82É\82©\82©\82í\82ç\82¸
+                       // \83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b\82Í\8ai\94[\82·\82é\81B
+                       m_dropedFiles = &namebuf[0];
+
+                       // AcceptDropFile\83v\83\8d\83p\83e\83B\82ª\97L\8cø\82Å\82 \82ê\82Î\83C\83x\83\93\83g\82ð\94­\90\82³\82¹\82é\81B
+                       if (m_bAcceptFiles) {
+                               m_lstEvent.push_back(EVENTID_DROPFILE);
+                               ATLASSERT(m_hRaiseEvent);
+                               SetEvent(m_hRaiseEvent);
+                       }
+               }
+       }
+       if (hDropInfo) {
+               DragFinish(hDropInfo);
+       }
+       
+       bHandled = TRUE;
+
+       return 0;
+}
diff --git a/SeraphyScriptDialog/UserForm.h b/SeraphyScriptDialog/UserForm.h
new file mode 100644 (file)
index 0000000..1fadf61
--- /dev/null
@@ -0,0 +1,191 @@
+// UserForm.h : CUserForm \82Ì\90é\8c¾
+
+#pragma once
+
+#include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
+
+#include <atlhost.h>
+
+#include "SeraphyScriptDialog_i.h"
+
+#include <list>
+
+#include "ControlComponent.h"
+
+// CUserForm
+
+class CUserForm : 
+       public CComObjectRootEx<CComSingleThreadModel>,
+       public CComCoClass<CUserForm, &CLSID_UserForm>,
+       public ISupportErrorInfo,
+       public IDispatchImpl<IUserForm, &IID_IUserForm, &LIBID_SeraphyScriptDialog, /*wMajor =*/ 2, /*wMinor =*/ 0>,
+       public CAxDialogImpl<CUserForm>,
+       public ICheckDialogMessage
+{
+public:
+       CUserForm()
+       {
+       }
+
+       static void WINAPI ObjectMain(bool bStarting)
+       {
+       }
+
+       enum { IDD = IDD_USERFORM };
+
+       // \83\81\83b\83Z\81[\83W\83\8b\81[\83v\82ð\8f\88\97\9d\82·\82é\82½\82ß
+       // ScrDlgRoot\82æ\82è\83Z\83b\83g\82³\82ê\82é\95K\97v\82ª\82 \82é\81B
+       CComPtr<IMessageLoopImpl> m_pMessageLoopImpl;
+
+       // IMessageLoopImpl\82É\93o\98^\8dÏ\82Ý\82Ì\83|\83C\83\93\83^\82ð\95Û\91\82·\82é
+       // \89ð\8f\9c\82µ\82½\8fê\8d\87\82ÍNULL\82É\96ß\82·\81B
+       ICheckDialogMessage *m_pRegisteredThis;
+
+       // \83C\83x\83\93\83g\92Ê\92m\82ª\82 \82é\82±\82Æ\82ð\8e¦\82·\83C\83x\83\93\83g
+       HANDLE m_hRaiseEvent;
+
+       // \83C\83x\83\93\83g\92Ê\92m\82Ì\83L\83\85\81[
+       std::list<SHORT> m_lstEvent;
+
+       // \83C\83x\83\93\83g\82ð\83L\83\85\81[\82É\93ü\82ê\81A\83C\83x\83\93\83g\92Ê\92m\82ð\83V\83O\83i\83\8b\8fó\91Ô\82Æ\82·\82é\81B
+       void EnqueueEvent(SHORT eventId);
+
+
+       // \83E\83B\83\93\83h\83E\83L\83\83\83v\83V\83\87\83\93
+       CComBSTR m_strTitle;
+
+       // \83E\83B\83\93\83h\83E\95\9d(0\82È\82ç\82Î\92è\8b`\82È\82µ)
+       SHORT m_formWidth;
+
+       // \83E\83B\83\93\83h\83E\82Ì\88Ê\92u
+       // formPosDefined\82ªtrue\82Å\82È\82¯\82ê\82Î\97L\8cø\82Å\82Í\82È\82¢
+       LONG m_formPosX, m_formPosY;
+
+       bool m_formPosDefined;
+
+       // \83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\82Ì\8eó\82¯\95t\82¯\97L\96³
+       VARIANT_BOOL m_bAcceptFiles;
+
+       // \83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b
+       CComBSTR m_dropedFiles;
+
+       
+       // \92è\8b`\82³\82ê\82½\83R\83\93\83g\83\8d\81[\83\8b
+       CAutoPtrArray<ControlComponent> m_components;
+
+       // \8eq\83E\83B\83\93\83h\83E\8e¯\95Ê\97p\82Ì\8aJ\8en\94Ô\8d\86
+       // IDOK/IDCANCEL\81A\82¨\82æ\82Ñ\83\8a\83\\81[\83X\83G\83f\83B\83^\82Å\8dì\90¬\82³\82ê\82é
+       // \8aù\91\82ÌID\82Æ\82©\82Ô\82ç\82È\82¢\82æ\82¤\82É\83I\83t\83Z\83b\83g\82·\82é\82½\82ß\81B
+       enum {
+               CHILDID_FIRST = 1000
+       };
+
+       // \82È\82É\82à\82µ\82È\82¢\83_\83~\81[\83R\83\93\83g\83\8d\81[\83\8b
+       CAutoPtr<ControlComponent> m_nullComponent;
+
+
+DECLARE_NO_REGISTRY()
+
+BEGIN_COM_MAP(CUserForm)
+       COM_INTERFACE_ENTRY(IUserForm)
+       COM_INTERFACE_ENTRY(IDispatch)
+       COM_INTERFACE_ENTRY(ISupportErrorInfo)
+       COM_INTERFACE_ENTRY(ICheckDialogMessage)
+END_COM_MAP()
+
+       // ISupportsErrorInfo
+       STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
+
+
+       DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+       HRESULT FinalConstruct();
+
+       void FinalRelease();
+
+       // \83\81\83b\83Z\81[\83W\83\8b\81[\83v\82ð\8f\88\97\9d\82·\82é\82½\82ß
+       // ScrDlgRoot\82æ\82è\83Z\83b\83g\82³\82ê\82é\95K\97v\82ª\82 \82é\81B
+       void SetMessageLoopImpl(IMessageLoopImpl *pMessageLoopImpl);
+
+       // IMessageLoopImpl\82É\8f\88\97\9d\82·\82é\83_\83C\83A\83\8d\83O\82ð\93o\98^\81A\82à\82µ\82­\82Í\89ð\8f\9c\82·\82é
+       HRESULT RegisterOrUnregisterMessageLoop(bool regist);
+
+       // \83R\83\93\83|\81[\83l\83\93\83g\83C\83\93\83f\83b\83N\83X\82©\82ç\83R\83\93\83|\81[\83l\83\93\83g\82Ì\8eQ\8fÆ\82ð\93¾\82é
+       ControlComponent& GetComponenet(SHORT idx);
+
+       // \83t\83H\81[\83\80\82Ì\95\\8e¦\88Ê\92u\82ð\8eæ\93¾\82µ\81A
+       // formPosX,formPosY,formPosDefined\82ð\90Ý\92è\82µ\82ÄS_OK\82ð\95Ô\82·\81B
+       // \95\\8e¦\82³\82ê\82Ä\82¢\82È\82¯\82ê\82Î\89½\82à\82¹\82¸S_FALSE\82ð\95Ô\82·\81B
+       HRESULT GetFormPos() throw();
+
+       // \83I\81[\83o\81[\83\89\83C\83h
+
+       virtual void OnFinalMessage(HWND hWnd);
+
+
+       // \83\81\83b\83Z\81[\83W\83}\83b\83v
+
+BEGIN_MSG_MAP(CUserForm)
+       MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
+       MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
+       MESSAGE_HANDLER(WM_COMMAND, OnCommand)
+       MESSAGE_HANDLER(WM_DROPFILES, OnDropFiles)
+       CHAIN_MSG_MAP(CAxDialogImpl<CUserForm>)
+END_MSG_MAP()
+
+// \83n\83\93\83h\83\89 \83v\83\8d\83g\83^\83C\83v:
+//  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+//  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
+//  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
+
+       LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+       LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+       LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+       LRESULT OnDropFiles(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+public:
+
+       // IUserForm
+       STDMETHOD(get__Value)(SHORT ctlId, BSTR *pText);
+       STDMETHOD(put__Value)(SHORT ctlId, BSTR text);
+       STDMETHOD(get_FormTitle)(BSTR *pTitle);
+       STDMETHOD(put_FormTitle)(BSTR title);
+       STDMETHOD(get_AcceptDropFile)(VARIANT_BOOL *pEnabled);
+       STDMETHOD(put_AcceptDropFile)(VARIANT_BOOL enabled);
+       STDMETHOD(get_DropFiles)(BSTR *pFiles);
+       STDMETHOD(get_EnableForm)(VARIANT_BOOL *pEnabled);
+       STDMETHOD(put_EnableForm)(VARIANT_BOOL enabled);
+       STDMETHOD(ClearAllControls)();
+       STDMETHOD(ExecuteForm)(VARIANT reserve, SHORT *pEventCode);
+       STDMETHOD(DefineLabel)(BSTR text, SHORT *pCtlId);
+       STDMETHOD(DefineEdit)(VARIANT title, VARIANT initValue, VARIANT multiline, SHORT *pCtlId);
+       STDMETHOD(DefineButton)(BSTR title, VARIANT eventCode, SHORT *pCtlId);
+       STDMETHOD(DefineEditButton)(VARIANT title, VARIANT initValue, VARIANT btnTitle, VARIANT eventCode, SHORT *pCtlId);
+       STDMETHOD(DefineFileEdit)(VARIANT title, VARIANT initValue, VARIANT btnTitle, VARIANT openSaveMode, VARIANT filter, SHORT *pCtlId);
+       STDMETHOD(DefineCheckButton)(BSTR titles, VARIANT initValues, VARIANT mode, SHORT *pCtlId);
+       STDMETHOD(DefineRadioButton)(BSTR titles, VARIANT initValues, VARIANT mode, SHORT *pCtlId);
+       STDMETHOD(DefineComboBox)(VARIANT titles, VARIANT initValues, VARIANT listValues, SHORT *pCtlId);
+       STDMETHOD(DefineDropdownList)(VARIANT titles, VARIANT initValue, VARIANT listValues, SHORT *pCtlId);
+       STDMETHOD(DefineListBox)(VARIANT listValues, VARIANT initValue, VARIANT numberOfLines, VARIANT multiSelMode, SHORT *pCtlId);
+       STDMETHOD(ComposeForm)(SHORT *pEventCode);
+       STDMETHOD(DestroyForm)();
+       STDMETHOD(WaitEvent)(VARIANT timeout, VARIANT *pEventCode);
+       STDMETHOD(get_Value)(SHORT ctlId, BSTR *pText);
+       STDMETHOD(put_Value)(SHORT ctlId, BSTR text);
+       STDMETHOD(get_Enable)(SHORT ctlId, VARIANT_BOOL *pEnabled);
+       STDMETHOD(put_Enable)(SHORT ctlId, VARIANT_BOOL enabled);
+       STDMETHOD(get_IsModify)(SHORT ctlId, VARIANT_BOOL *pModified);
+       STDMETHOD(get_FormWidth)(SHORT *pWidth);
+       STDMETHOD(put_FormWidth)(SHORT width);
+       STDMETHOD(get_FormPos)(BSTR *pPlaceInfo);
+       STDMETHOD(put_FormPos)(BSTR placeInfo);
+       STDMETHOD(DefineFolderEdit)(VARIANT title, VARIANT initValue, VARIANT btnTitle, SHORT *pCtlId);
+
+       // ICheckDialogMessage
+       STDMETHOD(DoDialogMessage)(MSG *pMsg);
+};
+
+OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO(__uuidof(UserForm), CUserForm)
diff --git a/SeraphyScriptDialog/VarArray.cpp b/SeraphyScriptDialog/VarArray.cpp
new file mode 100644 (file)
index 0000000..8338d57
--- /dev/null
@@ -0,0 +1,1082 @@
+// VarArray.cpp : CVarArray \82Ì\8eÀ\91\95
+
+#include "stdafx.h"
+#include "VarArray.h"
+
+#include <vector>
+
+// CVarArray
+
+HRESULT CVarArray::FinalConstruct()
+{
+       m_colSeparator = L" \t"; // \8bó\94\92+\83^\83u
+       m_colSeparatorShortSpace = VARIANT_TRUE;
+       m_colReturnNull = VARIANT_FALSE;
+
+       return S_OK;
+}
+
+void CVarArray::FinalRelease()
+{
+       // Ver2\82æ\82è\81A\83\8a\83\8a\81[\83X\82Ì\83^\83C\83~\83\93\83O\82Å\83q\81[\83v\82ð\8fk\91Þ\82·\82é\81B
+       _heapmin();
+}
+
+STDMETHODIMP CVarArray::InterfaceSupportsErrorInfo(REFIID riid)
+{
+       // ISupportErrorInfo\82Ì\8eÀ\91\95\82ÍVer2\82Å\92Ç\89Á\82³\82ê\82Ü\82µ\82½\81B
+
+       static const IID* arr[] = 
+       {
+               &IID_IVarArray
+       };
+
+       for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
+       {
+               if (InlineIsEqualGUID(*arr[i],riid))
+                       return S_OK;
+       }
+       return S_FALSE;
+}
+
+/**
+ * \95W\8f\80\82Ì\97ñ\8b\93\8eq
+ * @param ppUnk \97ñ\8b\93\8eq
+ * @return HRESULT
+ */
+HRESULT CVarArray::get__NewEnum(IUnknown **ppUnk)
+{
+       // \97ñ\8b\93\8eq\82Ì\8eÀ\91\95\82ÍVer2\82Å\92Ç\89Á\82³\82ê\82Ü\82µ\82½\81B
+
+       class EnumObj
+               : public CComObjectRootEx<CComSingleThreadModel>
+               , public IEnumVARIANT
+       {
+       public:
+               DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+               BEGIN_COM_MAP(EnumObj)
+                  COM_INTERFACE_ENTRY(IEnumVARIANT)
+               END_COM_MAP()
+
+               CComPtr<IVarArray> m_pArray;
+
+               LONG m_idx;
+
+               HRESULT FinalConstruct()
+               {
+                       m_pArray = NULL;
+                       m_idx = 0;
+                       return S_OK;
+               }
+
+               void FinalRelease()
+               {
+                       m_pArray.Release();
+
+                       // \83\8a\83\8a\81[\83X\82Ì\83^\83C\83~\83\93\83O\82Å\83q\81[\83v\82ð\8fk\91Þ\82³\82¹\82é
+                       _heapmin();
+               }
+
+        virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next( 
+            /* [in] */ ULONG celt,
+            /* [length_is][size_is][out] */ VARIANT *rgVar,
+            /* [out] */ ULONG *pCeltFetched)
+               {
+                       ATLASSERT(m_pArray);
+
+                       // \8f\89\8aú\89»
+                       if (pCeltFetched) {
+                               *pCeltFetched = 0;
+                       }
+
+                       if (!rgVar) {
+                               return E_INVALIDARG;
+                       }
+
+                       for (ULONG idx = 0; idx < celt; idx++) {
+                               VariantInit(&rgVar[idx]);
+                       }
+                       try {
+                               // \83R\83s\81[
+                               ULONG copied = 0;
+
+                               LONG count = 0;
+                               HRESULT hr;
+                               if (FAILED(hr = m_pArray->get_Count(&count))) {
+                                       AtlThrow(hr);
+                               }
+                               while ((copied + m_idx) < static_cast<ULONG>(count) && copied < celt) {
+                                       if (FAILED(hr = m_pArray->get_Value(copied + m_idx, &rgVar[copied]))) {
+                                               AtlThrow(hr);
+                                       }
+                                       copied++;
+                               }
+                               m_idx += copied;
+
+                               // \8c\8b\89Ê\82ð\95Ô\82·
+                               if (pCeltFetched) {
+                                       *pCeltFetched = copied;
+                               }
+
+                               return celt == copied ? S_OK : S_FALSE;
+                       
+                       } catch (CAtlException &ex) {
+                               // \83G\83\89\81[\8e\9e\81A\92\86\93r\8ai\94[\8dÏ\82Ý\83f\81[\83^\82Ì\83N\83\8a\83A                         
+                               for (ULONG idx = 0; idx < celt; idx++) {
+                                       VariantClear(&rgVar[idx]);
+                               }
+
+                               return ex.m_hr;
+                       }
+               }
+        
+        virtual HRESULT STDMETHODCALLTYPE Skip( 
+            /* [in] */ ULONG celt)
+               {
+                       ATLASSERT(m_pArray);
+
+                       LONG count = 0;
+                       HRESULT hr;
+                       if (FAILED(hr = m_pArray->get_Count(&count))) {
+                               return hr;
+                       }
+
+                       if (m_idx + celt >= static_cast<ULONG>(count)) {
+                               // \83I\81[\83o\81[\82µ\82½
+                               m_idx = count;
+                               return S_FALSE;
+                       }
+
+                       m_idx += celt;
+
+                       return S_OK;
+               }
+        
+        virtual HRESULT STDMETHODCALLTYPE Reset( void) 
+               {
+                       ATLASSERT(m_pArray);
+
+                       m_idx = 0;
+                       return S_OK;
+               }
+        
+        virtual HRESULT STDMETHODCALLTYPE Clone( 
+            /* [out] */ IEnumVARIANT **ppEnum)
+               {
+                       ATLASSERT(m_pArray);
+
+                       CComPtr<IUnknown> pUnk(NULL);
+                       HRESULT hr = CreateEnumObj(m_pArray, m_idx, &pUnk);
+                       if (FAILED(hr)) {
+                               return hr;
+                       }
+                       return pUnk->QueryInterface(ppEnum);
+               }
+
+               static HRESULT CreateEnumObj(IVarArray *pArray, LONG idx, IUnknown **ppUnk)
+               {
+                       if (!ppUnk) {
+                               return E_POINTER;
+                       }
+                       if (!pArray) {
+                               return E_INVALIDARG;
+                       }
+
+                       CComObject<EnumObj> *pEnumObj = NULL;
+                       HRESULT hr;
+                       if (FAILED(hr = CComObject<EnumObj>::CreateInstance(&pEnumObj))) {
+                               return hr;
+                       }
+                       CComPtr<IEnumVARIANT> pEnumVariant(pEnumObj);
+
+                       pEnumObj->m_idx = idx;
+                       
+                       pEnumObj->m_pArray = pArray;
+
+                       return pEnumVariant->QueryInterface(ppUnk);
+               }
+       };
+
+       return EnumObj::CreateEnumObj(this, 0, ppUnk);
+}
+
+/**
+ * \83f\83t\83H\83\8b\83g\82Ì\83A\83N\83Z\83b\83T\81B
+ * Value\83v\83\8d\83p\83e\83B\82Æ\93¯\82\81B
+ * @param idx \8ds\94Ô\8d\86(0\83x\81[\83X)
+ * @param pValue \8ds\82Ì\93à\97e
+ * @return HRESULT
+ */
+HRESULT CVarArray::get__Value(long idx, VARIANT *pValue)
+{
+       return get_Value(idx, pValue);
+}
+
+/**
+ * \83f\83t\83H\83\8b\83g\82Ì\83A\83N\83Z\83b\83T\81B
+ * Value\83v\83\8d\83p\83e\83B\82Æ\93¯\82\81B
+ * @param idx \8ds\94Ô\8d\86(0\83x\81[\83X)
+ * @param newValue \8ds\82Ì\93à\97e
+ * @return HRESULT
+ */
+HRESULT CVarArray::put__Value(long idx, VARIANT newValue)
+{
+       return put_Value(idx, newValue);
+}
+
+/**
+ * \96¢\8eg\97p\82Å\82·\81B
+ * @param pValue \96¢\8eg\97p
+ * @return HRESULT
+ */
+HRESULT CVarArray::get_ColReturnNull(VARIANT_BOOL *pValue)
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       // *NOTE* \82à\82Æ\82à\82Æ\81A\82±\82Ì\83v\83\8d\83p\83e\83B\82Í\82Ç\82±\82É\82à\8eg\82í\82ê\82Ä\82¨\82ç\82¸\81A\83w\83\8b\83v\82É\82à\8bL\8dÚ\82ª\82 \82è\82Ü\82¹\82ñ\81B
+
+       *pValue = m_colReturnNull;
+
+       return S_OK;
+}
+
+/**
+ * \96¢\8eg\97p\82Å\82·\81B
+ * @param newValue \96¢\8eg\97p
+ * @return HRESULT
+ */
+HRESULT CVarArray::put_ColReturnNull(VARIANT_BOOL newValue)
+{
+       // *NOTE* \82à\82Æ\82à\82Æ\81A\82±\82Ì\83v\83\8d\83p\83e\83B\82Í\82Ç\82±\82É\82à\8eg\82í\82ê\82Ä\82¨\82ç\82¸\81A\83w\83\8b\83v\82É\82à\8bL\8dÚ\82ª\82 \82è\82Ü\82¹\82ñ\81B
+
+       m_colReturnNull = newValue;
+
+       return S_OK;
+}
+
+/**
+ * \97ñ\91\80\8dì\82·\82é\82Æ\82«\82Ì\8bæ\90Ø\82è\95\8e\9a\82ð\8eæ\93¾\82·\82é\81B
+ * @param pValue \8bæ\90Ø\82è\95\8e\9a\82ð\8ai\94[\82·\82é
+ * @return HRESULT
+ */
+HRESULT CVarArray::get_ColSeparateChar(BSTR *pValue)
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       CComBSTR value(m_colSeparator);
+       *pValue = value.Detach();
+
+       return S_OK;
+}
+
+/**
+ * \97ñ\91\80\8dì\82·\82é\82Æ\82«\82Ì\8bæ\90Ø\82è\95\8e\9a\82ð\90Ý\92è\82·\82é\81B
+ * \8bæ\90Ø\82è\95\8e\9a\82Í\83T\83\8d\83Q\81[\83g\83y\83A\82Í\83T\83|\81[\83g\82µ\82Ä\82¨\82ç\82¸\81A\8ew\92è\82µ\82½\8fê\8d\87\82Í
+ * \8c»\8dÝ\82Ì\8eÀ\91\95\82Å\82Í\83G\83\89\81[\82Æ\82È\82è\82Ü\82·\81B
+ * @param newValue \8bæ\90Ø\82è\95\8e\9a
+ * @return HRESULT
+ */
+HRESULT CVarArray::put_ColSeparateChar(BSTR newValue)
+{
+       if (newValue) {
+
+               // \83T\83\8d\83Q\81[\83g\83y\83A\82ª\8aÜ\82Ü\82ê\82é\82©\83`\83F\83b\83N\82·\82é
+               LPCWSTR p = newValue;
+               while (*p) {
+                       WCHAR ch = *p++;
+                       if (IS_HIGH_SURROGATE(ch)) {
+                               // \83T\83\8d\83Q\81[\83g\83y\83A\82Í\83T\83|\81[\83g\82³\82ê\82È\82¢
+                               return Error(IDS_UNSUPPORTED_SEPARATE_CHAR);
+                       }
+               }
+
+               m_colSeparator = newValue;
+       } else {
+               m_colSeparator = L"";
+       }
+
+       return S_OK;
+}
+
+/**
+ * \8bæ\90Ø\82è\95\8e\9a\82É\91±\82­\8bó\94\92\82ð\83X\83L\83b\83v\82·\82é\82©\8e¦\82·\83t\83\89\83O\82ð\8eæ\93¾\82·\82é\81B
+ * @param pValue \83t\83\89\83O\82ð\95Ô\82·
+ * @return HRESULT
+ */
+HRESULT CVarArray::get_ColSeparateShortSpace(VARIANT_BOOL *pValue)
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+
+       *pValue = m_colSeparatorShortSpace;
+
+       return S_OK;
+}
+
+/**
+ * \8bæ\90Ø\82è\95\8e\9a\82É\91±\82­\8bó\94\92\82ð\83X\83L\83b\83v\82·\82é\82©\8e¦\82·\83t\83\89\83O\82ð\90Ý\92è\82·\82é\81B
+ * @param newValue \83X\83L\83b\83v\82·\82é\82©?
+ * @return HRESULT
+ */
+HRESULT CVarArray::put_ColSeparateShortSpace(VARIANT_BOOL newValue)
+{
+       m_colSeparatorShortSpace = newValue;
+
+       return S_OK;
+}
+
+/**
+ * \8ds\90\94\82ð\95Ô\82·
+ * @return pCount \8ds\90\94\82ð\95Ô\82·
+ * @return HRESULT
+ */
+HRESULT CVarArray::get_Count(LONG *pCount)
+{
+       if (!pCount) {
+               return E_POINTER;
+       }
+
+       *pCount = static_cast<LONG>(m_array.GetCount());
+
+       return S_OK;
+}
+
+/**
+ * \96\96\94ö\82Ì\93à\97e\82ð\8eæ\93¾\82·\82é\81B
+ * \88ê\8ds\82à\91\8dÝ\82µ\82È\82¢\8fê\8d\87\82ÍNULL\82ð\95Ô\82·\81B
+ * @param pValue \96\96\94ö\82Ì\93à\97e\82ð\8ai\94[\82·\82é\81A\82à\82µ\82­\82ÍNULL
+ * @return HRESULT
+ */
+HRESULT CVarArray::get_LastValue(VARIANT *pValue)
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+       VariantInit(pValue);
+
+       size_t idx = m_array.GetCount();
+       if (idx == 0) {
+               pValue->vt = VT_NULL;
+               return S_FALSE;
+       }
+
+       CComBSTR value;
+       value = m_array.GetAt(idx - 1);
+
+       pValue->vt = VT_BSTR;
+       pValue->bstrVal = value.Detach();
+       return S_OK;
+}
+
+/**
+ * \96\96\94ö\82Ì\8ds\82ð\95Ï\8dX\82·\82é\81B
+ * 1\8ds\82à\91\8dÝ\82µ\82È\82¢\8fê\8d\87\82Í\90V\82½\82É1\8ds\8dì\90¬\82³\82ê\82é\81B
+ * @param newValue \93à\97e
+ * @return HRESULT
+ */
+HRESULT CVarArray::put_LastValue(VARIANT newValue)
+{
+       size_t count = m_array.GetCount();
+       LONG idx;
+       if (count == 0) {
+               idx = 0;
+       } else {
+               idx = static_cast<LONG>(count) - 1;
+       }
+       return put_Value(idx, newValue);
+}
+
+/**
+ * \90æ\93ª\82É\8ds\82ð\92Ç\89Á\82·\82é\81B
+ * @param mes \93à\97e
+ * @param pIndex \8fí\82É0\82ð\95Ô\82·
+ * @return HRESULT
+ */
+HRESULT CVarArray::AddHead(BSTR mes, LONG *pIndex)
+{
+       if (!pIndex) {
+               return E_POINTER;
+       }
+
+       if (mes) {
+               m_array.InsertAt(0, mes);
+       } else {
+               m_array.InsertAt(0, L"");
+       }
+
+       return S_OK;
+}
+
+/**
+ * \96\96\94ö\82É\8ds\82ð\92Ç\89Á\82·\82é\81B
+ * @param mes \93à\97e
+ * @param pIndex \8fí\82É0\82ð\95Ô\82·
+ * @return HRESULT
+ */
+HRESULT CVarArray::AddTail(BSTR mes, LONG *pIndex)
+{
+       if (!pIndex) {
+               return E_POINTER;
+       }
+
+       if (mes) {
+               m_array.Add(mes);
+       } else {
+               m_array.Add(L"");
+       }
+
+       *pIndex = 0; // \8cÝ\8a·\90«\82Ì\82½\82ß
+
+       return S_OK;
+}
+
+/**
+ * \8ew\92è\82µ\82½\8ds\94Ô\8d\86\82É\90V\82µ\82¢\8ds\82ð\91}\93ü\82·\82é\81B
+ * @param idx \8ds\94Ô\8d\86(0\83x\81[\83X)
+ * @param mes \93à\97e
+ * @param pIndex \8fí\82É0\82ð\95Ô\82·
+ * @return HRESULT
+ */
+HRESULT CVarArray::Insert(LONG idx, BSTR mes, LONG *pIndex)
+{
+       if (idx < 0) {
+               return E_INVALIDARG;
+       }
+       if (!pIndex) {
+               return E_POINTER;
+       }
+
+       if (mes) {
+               m_array.InsertAt(idx, mes);
+       } else {
+               m_array.InsertAt(idx, L"");
+       }
+
+       *pIndex = 0; // \8cÝ\8a·\90«\82Ì\82½\82ß
+
+       return S_OK;
+}
+
+/**
+ * \90æ\93ª\82ð\8dí\8f\9c\82·\82é\81B
+ * \82·\82Å\82É\8bó\82Å\82 \82é\8fê\8d\87\82Í\89½\82à\82µ\82È\82¢\81B
+ * @param \8eÀ\8ds\8cã\82Ì\8ds\90\94\82ð\95Ô\82·\81B
+ * @return HRESULT
+ */
+HRESULT CVarArray::RemoveHead(LONG *pIndex)
+{
+       if (!pIndex) {
+               return E_POINTER;
+       }
+
+       size_t count = m_array.GetCount();
+       if (count > 0) {
+               m_array.RemoveAt(0);
+               count--;
+       }
+
+       *pIndex = static_cast<LONG>(count);
+
+       return S_OK;
+}
+
+/**
+ * \96\96\94ö\82ð\8dí\8f\9c\82·\82é\81B
+ * \82·\82Å\82É\8bó\82Å\82 \82é\8fê\8d\87\82Í\89½\82à\82µ\82È\82¢\81B
+ * @param pIndex \8eÀ\8ds\8cã\82Ì\8ds\90\94\82ð\95Ô\82·
+ * @return HRESULT
+ */
+HRESULT CVarArray::RemoveTail(LONG *pIndex)
+{
+       if (!pIndex) {
+               return E_POINTER;
+       }
+
+       size_t count = m_array.GetCount();
+       if (count > 0) {
+               m_array.RemoveAt(count - 1);
+               count--;
+       }
+
+       *pIndex = static_cast<LONG>(count);
+
+       return S_OK;
+}
+
+/**
+ * \8ew\92è\82µ\82½\8ds\82ð\8dí\8f\9c\82µ\82Ü\82·\81B
+ * \8dí\8f\9c\82³\82ê\82½\8ds\82Í\90Ø\82è\8bl\82ß\82ç\82ê\82Ü\82·\81B
+ * \8ds\94Ô\8d\86\82ª\95\89\82Ì\92l\82Å\82 \82é\82©\81A\8aù\91\82Ì\8ds\82Ì\94Í\88Í\8aO\82Å\82 \82é\8fê\8d\87\82Í
+ * \89½\82à\82µ\82Ü\82¹\82ñ\81B
+ * @param idx \8ds\94Ô\8d\86
+ * @param pIndex \8eÀ\8ds\8cã\82Ì\8ds\90\94\82ð\95Ô\82·
+ * @return HRESULT
+ */
+HRESULT CVarArray::Remove(LONG idx, LONG *pIndex)
+{
+       if (!pIndex) {
+               return E_POINTER;
+       }
+
+       HRESULT hr = S_FALSE;
+
+       LONG count = static_cast<LONG>(m_array.GetCount());
+       if (count > 0 && idx >= 0 && idx < count) {
+               m_array.RemoveAt(idx);
+               count--;
+               hr = S_OK;
+       }
+
+       *pIndex = static_cast<LONG>(count);
+
+       return hr;
+}
+
+/**
+ * \82·\82×\82Ä\82Ì\93à\97e\82ð\83N\83\8a\83A\82µ\82Ü\82·\81B
+ */
+HRESULT CVarArray::RemoveAll()
+{
+       m_array.RemoveAll();
+
+       // Ver2\82æ\82è\81A\83q\81[\83v\82ð\8fk\91Þ\82·\82é\81B
+       _heapmin();
+
+       return S_OK;
+}
+
+HRESULT CVarArray::ChangeTerminateChar(LONG nStartIdx, LONG nEndIdx, BSTR newSeparateChar, VARIANT bChangeSeparateChar, VARIANT_BOOL *pResult)
+{
+       if (!pResult) {
+               return E_POINTER;
+       }
+
+       if (nStartIdx < 0) {
+               nStartIdx = 0;
+       }
+
+       LONG count = static_cast<LONG>(m_array.GetCount());
+
+       if (count == 0) {
+               // \8bó\82È\82ç\82Î\82È\82É\82à\82µ\82È\82¢
+               *pResult = VARIANT_TRUE;
+               return S_FALSE;
+       }
+
+       if (nEndIdx < 0 || nEndIdx >= count) {
+               nEndIdx = static_cast<LONG>(count) - 1;
+       }
+
+       // \94Í\88Í\82ª\8bt
+       if (nEndIdx < nStartIdx) {
+               *pResult = VARIANT_FALSE;
+               return S_OK;
+       }
+
+       const size_t newSeparateCharLen = SysStringLen(newSeparateChar);
+
+       for (LONG idx = nStartIdx; idx <= nEndIdx; idx++) {
+               // \8ds\82Ì\8eæ\93¾
+               CAtlStringW line = m_array.GetAt(idx);
+               const size_t lineLen = line.GetLength();
+
+               // \97ñ\90\94\82Ì\8eæ\93¾
+               SHORT colCount = 0;
+               if (FAILED(get_ColCount(idx, &colCount))) {
+                       // \97\\8aú\82¹\82Ê\83G\83\89\81[
+                       ATLASSERT(false);
+                       return E_FAIL;
+               }
+
+               // \95Ò\8fW\83o\83b\83t\83@ (\83T\83C\83Y\82Í\81A\8c³\8ds\82Ì\92·\82³ + \97ñ\90\94 x \90V\82µ\82¢\97ñ\8bæ\90Ø\82è + \8fI\92[)
+               size_t bufsiz = lineLen + newSeparateCharLen * colCount + 1; // \8fI\92[\82Â\82«
+               std::vector<WCHAR> lineBuf(bufsiz);
+               LPWSTR pBuf = &lineBuf[0];
+
+               // \97ñ\82Ì\8dÄ\8d\\92z
+               int colidx = 0;
+               LPCWSTR p = line;
+               do {
+                       if (colidx > 0 && newSeparateCharLen > 0) {
+                               memcpy(pBuf, newSeparateChar, sizeof(WCHAR) * newSeparateCharLen);
+                               pBuf += newSeparateCharLen;
+                               bufsiz -= newSeparateCharLen;
+                       }
+
+                       p = GetNextColumn(p, pBuf, bufsiz);
+                       
+                       size_t colLen = wcslen(pBuf);
+                       pBuf += colLen;
+                       bufsiz -= colLen;
+
+                       colidx++;
+               } while (p);
+
+               *pBuf = 0;
+
+               // \95Ò\8fW\8c\8b\89Ê\82ð\8ai\94[
+               m_array.SetAt(idx, &lineBuf[0]);
+       }
+
+       // \97ñ\8bæ\90Ø\82è\95\8e\9a\82Ì\95Ï\8dX\97L\96³
+       if (!IsNullOrError(&bChangeSeparateChar)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               if (SUCCEEDED(VariantChangeType(&tmp, &bChangeSeparateChar, VARIANT_NOUSEROVERRIDE, VT_BOOL))) {
+                       ATLASSERT(tmp.vt == VT_BOOL);
+                       if (tmp.boolVal) {
+                               HRESULT hr;
+                               if (FAILED(hr = put_ColSeparateChar(newSeparateChar))) {
+                                       // \97ñ\8bæ\90Ø\82è\95\8e\9a\82Ì\90Ý\92è\82É\8e¸\94s
+                                       return hr;
+                               }
+                       }
+               }
+       }
+
+       *pResult = VARIANT_TRUE;
+       return S_OK;
+}
+
+/**
+ * \8ew\92è\82µ\82½\8ds\94Í\88Í\82Ì\92\86\82É\82 \82é\95\8e\9a\97ñ\82Ì\8c\9f\8dõ\82ð\8ds\82¤\81B
+ * \8c©\82Â\82©\82Á\82½\8fê\8d\87\82Í\8ds\94Ô\8d\86\82ð\95Ô\82·\81B
+ * \90æ\93ª\82©\82ç\8c\9f\8dõ\82µ\82Ä\8dÅ\8f\89\82É\8c©\82Â\82©\82Á\82½\82à\82Ì\82ð\82©\82¦\82·\81B
+ * \82Ý\82Â\82©\82ç\82È\82¢\8fê\8d\87\82Í-1\82ð\95Ô\82·\81B
+ * @param nStartIdx \8aJ\8en\8ds(0\83x\81[\83X)\81A\95\89\82Ì\92l\82ð\8ew\92è\82·\82é\82Æ0\82Æ\82Ý\82È\82·\81B
+ * @param nEndIdx \8fI\97¹\8ds(0\83x\81[\83X)\81A\95\89\82Ì\92l\82ð\8ew\92è\82·\82é\82©\8dÅ\91å\8ds\82ð\92´\82¦\82Ä\82¢\82é\8fê\8d\87\82Í\96\96\94ö\82Ü\82Å\82Æ\82Ý\82È\82·\81B
+ * @param strMatch \8c\9f\8dõ\82·\82é\95\8e\9a\97ñ
+ * @param nType \8c\9f\8dõ\83\82\81[\83h\81A0:\95\94\95ª\88ê\92v\81A1:\91O\95û\88ê\92v\81A2:\8a®\91S\88ê\92v\81B
+ * @param pIndex \94­\8c©\82³\82ê\82½\8dÅ\8f\89\82Ì\8ds\94Ô\8d\86\81A\82à\82µ\82­\82Í-1\82ð\8ai\94[\82·\82é\83|\83C\83\93\83^
+ * @return HRESULT
+ */
+HRESULT CVarArray::Find(LONG nStartIdx, LONG nEndIdx, BSTR strMatch, VARIANT nType, LONG *pIndex)
+{
+       return FindCol(nStartIdx, nEndIdx, -1, strMatch, nType, pIndex);
+}
+
+/**
+ * \8ew\92è\82µ\82½\8ds\94Í\88Í\82Ì\92\86\82É\82 \82é\81A\8ew\92è\97ñ\82Ì\95\8e\9a\97ñ\82Ì\8c\9f\8dõ\82ð\8ds\82¤\81B
+ * \8c©\82Â\82©\82Á\82½\8fê\8d\87\82Í\8ds\94Ô\8d\86\82ð\95Ô\82·\81B
+ * \90æ\93ª\82©\82ç\8c\9f\8dõ\82µ\82Ä\8dÅ\8f\89\82É\8c©\82Â\82©\82Á\82½\82à\82Ì\82ð\82©\82¦\82·\81B
+ * \82Ý\82Â\82©\82ç\82È\82¢\8fê\8d\87\82Í-1\82ð\95Ô\82·\81B
+ * @param nStartIdx \8aJ\8en\8ds(0\83x\81[\83X)\81A\95\89\82Ì\92l\82ð\8ew\92è\82·\82é\82Æ0\82Æ\82Ý\82È\82·\81B
+ * @param nEndIdx \8fI\97¹\8ds(0\83x\81[\83X)\81A\95\89\82Ì\92l\82ð\8ew\92è\82·\82é\82©\8dÅ\91å\8ds\82ð\92´\82¦\82Ä\82¢\82é\8fê\8d\87\82Í\96\96\94ö\82Ü\82Å\82Æ\82Ý\82È\82·\81B
+ * @param nCol \97ñ\94Ô\8d\86(0\83x\81[\83X)\81A\95\89\82Ì\92l\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\97ñ\82Å\82Í\82È\82­\8ds\92P\88Ê\82Å\82Ì\8c\9f\8dõ
+ * @param strMatch \8c\9f\8dõ\82·\82é\95\8e\9a\97ñ
+ * @param nType \8c\9f\8dõ\83\82\81[\83h\81A0:\95\94\95ª\88ê\92v\81A1:\91O\95û\88ê\92v\81A2:\8a®\91S\88ê\92v\81B
+ * @param pIndex \94­\8c©\82³\82ê\82½\8dÅ\8f\89\82Ì\8ds\94Ô\8d\86\81A\82à\82µ\82­\82Í-1\82ð\8ai\94[\82·\82é\83|\83C\83\93\83^
+ * @return HRESULT
+ */
+HRESULT CVarArray::FindCol(LONG nStartIdx, LONG nEndIdx, SHORT nCol, BSTR strMatch, VARIANT nType, LONG *pIndex)
+{
+       if (!pIndex) {
+               return E_POINTER;
+       }
+
+       LONG count = static_cast<LONG>(m_array.GetCount());
+       if (count == 0) {
+               // \8bó\82È\82Ì\82Å\8fí\82É\94­\8c©\82³\82ê\82¸\81B
+               *pIndex = -1;
+               return S_FALSE;
+       }
+
+       if (nStartIdx < 0) {
+               nStartIdx = 0;
+       }
+
+       if (nEndIdx < 0 || nEndIdx >= count) {
+               nEndIdx = count - 1;
+       }
+
+       if (nStartIdx > nEndIdx) {
+               // \94Í\88Í\82ª\8bt\82Ì\8fê\8d\87\82Í\8fí\82É\94­\8c©\82³\82ê\82¸\81B
+               *pIndex = -1;
+               return S_FALSE;
+       }
+
+       if (SysStringLen(strMatch) == 0) {
+               // \8c\9f\8dõ\95\8e\9a\82ªNULL\82Ü\82½\82Í\8bó\82Ì\8fê\8d\87\82Í\8fí\82É\94­\8c©\82³\82ê\82¸\81B
+               *pIndex = -1;
+               return S_FALSE;
+       }
+
+       // \8c\9f\8dõ\83\82\81[\83h\82Ì\8eæ\93¾
+       int nSearchMode = 0;
+       if (!IsNullOrError(&nType)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               if (SUCCEEDED(VariantChangeType(&tmp, &nType, VARIANT_NOUSEROVERRIDE, VT_I2))) {
+                       ATLASSERT(tmp.vt == VT_I2);
+                       nSearchMode = tmp.iVal;
+               }
+       }
+
+       for (LONG idx = nStartIdx; idx <= nEndIdx; idx++) {
+               // \8ds\82Ì\8eæ\93¾
+               CAtlStringW line = m_array.GetAt(idx);
+               CAtlStringW value;
+
+               if (nCol >= 0) {
+                       // \97ñ\92P\88Ê
+                       size_t bufsiz = line.GetLength();
+                       std::vector<WCHAR> buf(bufsiz + 1);
+
+                       LPCWSTR p = line;
+                       int colidx = 0;
+                       do {
+                               if (colidx == nCol) {
+                                       p = GetNextColumn(p, &buf[0], bufsiz);
+                                       break;
+                               } else {
+                                       p = GetNextColumn(p, NULL, 0);
+                               }
+                       } while (p);
+
+                       value = &buf[0];
+
+               } else {
+                       // 1\8ds\92P\88Ê
+                       value = line;
+               }
+
+               bool bMatched = false;
+
+               switch (nSearchMode) {
+                       case SEARCHMODE_PREFIX:
+                               // \90æ\93ª\82É\83}\83b\83`
+                               bMatched = (value.Find(strMatch) == 0);
+                               break;
+
+                       case SEARCHMODE_FULL:
+                               // \8a®\91S\82É\83}\83b\83`
+                               bMatched = (value == strMatch);
+                               break;
+
+                       default:
+                       case SEARCHMODE_PART:
+                               // \82Ç\82±\82©\82É\83}\83b\83`
+                               bMatched = (value.Find(strMatch) >= 0);
+                               break;
+               }
+
+               if (bMatched) {
+                       *pIndex = idx;
+                       return S_OK;
+               }
+       }
+
+       *pIndex = -1;
+       return S_FALSE;
+}
+
+/**
+ * \8ew\92è\82µ\82½\8ds\82Ì\93à\97e\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+ * \8ds\82ª\95\89\82Ì\92l\82Å\82 \82é\82©\81A\8aù\91\82Ì\8ds\82Ì\94Í\88Í\82ð\92´\82¦\82Ä\82¢\82é\8fê\8d\87\82ÍNULL\82ð\95Ô\82µ\82Ü\82·\81B
+ * @param idx \8ds\94Ô\8d\86(0\83x\81[\83X)
+ * @param pValue \8ds\82Ì\93à\97e\82ð\8ai\94[\82·\82é
+ * @return HRESULT
+ */
+HRESULT CVarArray::get_Value(LONG idx, VARIANT *pValue)
+{
+       if (!pValue) {
+               return E_POINTER;
+       }
+       VariantInit(pValue);
+       pValue->vt = VT_NULL;
+
+       LONG count = static_cast<LONG>(m_array.GetCount());
+       if (count > 0 && idx >= 0 && idx < count) {
+               CComBSTR value;
+               value = m_array.GetAt(idx);
+               pValue->vt = VT_BSTR;
+               pValue->bstrVal = value.Detach();
+               return S_OK;
+       }
+
+       return S_FALSE;
+}
+
+/**
+ * \8ew\92è\82µ\82½\8ds\82Ì\93à\97e\82ð\90Ý\92è\82µ\82Ü\82·\81B
+ * \8ds\94Ô\8d\86\82ª\95\89\82Ì\92l\82Å\82 \82ê\82Î\89½\82à\82µ\82Ü\82¹\82ñ\81B
+ * \8ds\94Ô\8d\86\82ª\8aù\91\82Ì\8ds\82ð\92´\82¦\82Ä\82¢\82é\8fê\8d\87\82Í\8ag\92£\82³\82ê\82Ü\82·\81B
+ * @param idx \8ds\94Ô\8d\86(0\83x\81[\83X)
+ * @param newValue \8ds\82Ì\93à\97e
+ @ @return HRESULT
+ */
+HRESULT CVarArray::put_Value(LONG idx, VARIANT newValue)
+{
+       CComBSTR value;
+       if (!IsNullOrError(&newValue)) {
+               VARIANT tmp;
+               VariantInit(&tmp);
+               if (SUCCEEDED(VariantChangeType(&tmp, &newValue, VARIANT_NOUSEROVERRIDE, VT_BSTR))) {
+                       ATLASSERT(tmp.vt == VT_BSTR);
+                       value.Attach(tmp.bstrVal);
+               }
+       }
+       if (idx < 0) {
+               // \83G\83\89\81[\82É\82Í\82µ\82È\82¢
+               return S_FALSE;
+       }
+
+       if (value.Length() > 0) {
+               m_array.SetAtGrow(idx, value);
+       } else {
+               m_array.SetAtGrow(idx, L"");
+       }
+
+       return S_OK;
+}
+
+/**
+ * \8ew\92è\82µ\82½\8ds\82Ì\97ñ\90\94\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+ * \8ds\82ª\95\89\82Ì\92l\82Å\82 \82é\82©\81A\8ds\82Ì\94Í\88Í\82ð\92´\82¦\82Ä\82¢\82é\8fê\8d\87\81A\82à\82µ\82­\82Í
+ * \97ñ\8bæ\90Ø\82è\82ª\8ew\92è\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\8fí\82É0\82ð\95Ô\82µ\82Ü\82·\81B
+ * \82»\82¤\82Å\82È\82¯\82ê\82Î\97ñ\82Ì\90\94\82ð\95Ô\82µ\82Ü\82·\81B(\91\8dÝ\82·\82é\8ds\82Í\8fí\82É1\88È\8fã\82Æ\82È\82è\82Ü\82·\81B)
+ * @param idx \8ds\94Ô\8d\86(0\83x\81[\83X)
+ * @param pCount \97ñ\90\94\82ð\8ai\94[\82·\82é\83|\83C\83\93\83^
+ * @return HRESULT
+ */
+HRESULT CVarArray::get_ColCount(LONG idx, SHORT *pCount)
+{
+       if (!pCount) {
+               return E_POINTER;
+       }
+       
+       LONG count = static_cast<LONG>(m_array.GetCount());
+
+       if (idx < 0 || idx >= count || m_colSeparator.IsEmpty()) {
+               // \83C\83\93\83f\83b\83N\83X\82ª\94Í\88Í\8aO\82Å\82 \82é\82©\81A\83J\83\89\83\80\8bæ\90Ø\82è\95\8e\9a\82ª\92è\8b`\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87
+               // \83J\83\89\83\80\90\94\82Í0\82Æ\82·\82é\81B
+               *pCount = 0;
+               return S_FALSE;
+       }
+
+       CAtlStringW line = m_array.GetAt(idx);
+       LPCWSTR p = line;
+
+       int colCount = 0;
+       do {
+               p = GetNextColumn(p, NULL, 0);
+               colCount++;
+       } while (p);
+
+       *pCount = colCount;
+
+       return S_OK;
+}
+
+/**
+ * \8ew\92è\82µ\82½\8ds\82Ì\81A\8ew\92è\82µ\82½\97ñ\82Ì\92l\82ð\8eæ\93¾\82µ\82Ü\82·\81B
+ * \8ds\94Ô\8d\86\82Ü\82½\82Í\97ñ\94Ô\8d\86\82ª\95\89\82Ì\92l\82Å\82 \82é\82©\81A\8ds\82Ü\82½\82Í\97ñ\82Ì\94Í\88Í\82ð\92´\82¦\82Ä\82¢\82é\8fê\8d\87\81A
+ * \8bó\95\8e\9a\82ª\95Ô\82³\82ê\82Ü\82·\81B
+ * \82»\82¤\82Å\82È\82¯\82ê\82Î\97ñ\82Ì\95\8e\9a\97ñ\82ª\95Ô\82³\82ê\82Ü\82·\81B
+ * @param idx \8ds\94Ô\8d\86(0\83x\81[\83X)
+ * @param colidx \97ñ\94Ô\8d\86(0\83x\81[\83X)
+ * @param pColValue \97ñ\82Ì\93à\97e\82ð\8ai\94[\82·\82éBSTR\82Ö\82Ì\83|\83C\83\93\83^
+ */
+HRESULT CVarArray::get_ColValue(LONG idx, SHORT colidx, BSTR *pColValue)
+{
+       if (!pColValue) {
+               return E_POINTER;
+       }
+
+       LONG count = static_cast<LONG>(m_array.GetCount());
+
+       if (idx >= 0 && idx < count && !m_colSeparator.IsEmpty() && colidx >= 0) {
+               CAtlStringW line = m_array.GetAt(idx);
+
+               LPCWSTR p = line;
+
+               int colCount = 0;
+               do {
+                       if (colCount == colidx) {
+                               // \97ñ\82Ì\95\94\95ª\95\8e\9a\97ñ\82ð\8eæ\93¾\82·\82é
+                               int bufsiz = line.GetLength() + 1;
+                               std::vector<WCHAR> colBuf(bufsiz);
+
+                               p = GetNextColumn(p, &colBuf[0], bufsiz);
+
+                               *pColValue = SysAllocString(&colBuf[0]);
+                               return S_OK;
+                       }
+
+                       p = GetNextColumn(p, NULL, 0);
+                       colCount++;
+               } while (p);
+       }
+
+       *pColValue = SysAllocString(L"");
+       return S_FALSE;
+}
+
+/** 
+ * \8ew\92è\82µ\82½\8ds\82Ì\81A\8ew\92è\82µ\82½\97ñ\82Ì\92l\82ð\90Ý\92è\82µ\82Ü\82·\81B
+ * \8ds\94Ô\8d\86\81A\97ñ\94Ô\8d\86\82Æ\82à\82É\95\89\82Ì\92l\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\89½\82à\82µ\82Ü\82¹\82ñ\81B
+ * \8ds\94Ô\8d\86\82ª\8aù\91\82Ì\94Í\88Í\82ð\92´\82¦\82Ä\82¢\82é\8fê\8d\87\82Í\8ag\92£\82³\82ê\82Ü\82·\81B
+ * \82»\82Ì\8fê\8d\87\81A\8aù\91\82Ì\8ds\82Í\8bó\95\8e\9a\82Å\82 \82é\82Æ\8c©\82È\82³\82ê\82Ä\97ñ\82Ì\90Ý\92è\82ª\8ds\82í\82ê\82Ü\82·\81B
+ * \97ñ\94Ô\8d\86\82ª\8aù\91\82Ì\94Í\88Í\82ð\92´\82¦\82Ä\82¢\82é\8fê\8d\87\82Í\97ñ\8bæ\90Ø\82è\82Æ\82µ\82Ä\81A\8bæ\90Ø\82è\95\8e\9a\97ñ\82Ì
+ * \8dÅ\8f\89\82Ì\95\8e\9a\82ð\8bæ\90Ø\82è\95\8e\9a\82Æ\82µ\82Ä\8eg\97p\82µ\82Ä\97ñ\82ª\8dì\90¬\82³\82ê\82Ü\82·\81B
+ * \97ñ\82Ì\91}\93ü\82Ü\82½\82Í\92u\82«\8a·\82¦\82É\94º\82¢\81A\8aù\91\82Ì\95\8e\9a\97ñ\82Í\81A\97ñ\8bæ\90Ø\82è\95\8e\9a\97ñ\82Ì
+ * \8dÅ\8f\89\82Ì\95\8e\9a\82ð\8bæ\90Ø\82è\95\8e\9a\82Æ\82µ\82Ä\8dÄ\8d\\90¬\82³\82ê\82Ü\82·\81B
+ * @param idx [in] \8ds\94Ô\8d\86(0\83x\81[\83X)
+ * @param colidx [in] \97ñ\94Ô\8d\86(0\83x\81[\83X)
+ * @param newValue [in] \92u\82«\8a·\82¦\82é\97ñ\82Ì\93à\97e
+ * @return HRESULT
+ */
+HRESULT CVarArray::put_ColValue(LONG idx, SHORT colidx, BSTR newValue)
+{
+       if (idx < 0 || m_colSeparator.IsEmpty() || colidx < 0) {
+               // \94Í\88Í\8aO
+               return S_FALSE;
+       }
+
+       // \8dÅ\8f\89\82Ì\8bæ\90Ø\82è\95\8e\9a\82ð\8dÌ\97p\82·\82é (\83T\83\8d\83Q\81[\83g\83y\83A\8dl\97\82È\82µ)
+       WCHAR separateChar = m_colSeparator.GetAt(0);
+
+       // \8ds\82ð\8eæ\93¾
+       CAtlStringW line;
+       LONG count = static_cast<LONG>(m_array.GetCount());
+       if (idx < count) {
+               line = m_array.GetAt(idx);
+       } else {
+               line = L"";
+       }
+
+       const int lineLen = line.GetLength();
+       const int newValueLen = SysStringLen(newValue);
+
+       // \8ds\95Ò\8fW\97p\83o\83b\83t\83@
+       // \8dÅ\91å\82Å\81A\8c³\8ds\82Ì\92·\82³(\91S\97ñ+\8bæ\90Ø\82è\95\8e\9a) + \92u\82«\8a·\82¦\82é\97ñ\82Ì\92·\82³ + \8bæ\90Ø\82è\95\8e\9a\90\94 + \8fI\92[
+       size_t bufsiz = lineLen + newValueLen + colidx + 1;
+       std::vector<WCHAR> editBuf(bufsiz);
+       LPWSTR pBuf = &editBuf[0];
+
+       // \8aù\91\82Ì\97ñ\82Ì\8eæ\93¾\82Æ\97ñ\82Ì\92u\82«\8a·\82¦\81E\82à\82µ\82­\82Í\8dÄ\8d\\92z
+       int colCount = 0;
+       LPCWSTR p = line;
+       do {
+               if (colCount > 0) {
+                       // 2\8c\85\96Ú\88È\8d~\82Å\82 \82ê\82Î\8bæ\90Ø\82è\95\8e\9a\82Å\8bæ\90Ø\82é
+                       *pBuf++ = separateChar;
+                       bufsiz--;
+               }
+
+               if (colCount == colidx) {
+                       // \8ew\92è\82µ\82½\8c³\97ñ\82Í\93Ç\82Ý\94ò\82Î\82·
+                       p = GetNextColumn(p, NULL, 0);
+
+                       // \8ew\92è\82µ\82½\97ñ\82ð\90V\82µ\82¢\97ñ\82Å\92u\82«\8a·\82¦\82é
+                       if (newValue) {
+                               memcpy(pBuf, newValue, sizeof(WCHAR) * newValueLen);
+                               pBuf += newValueLen;
+                               bufsiz -= newValueLen;
+                       }
+
+               } else {
+                       // \8ew\92è\82µ\82½\97ñ\88È\8aO\82Í\81A\82»\82Ì\82Ü\82Ü\83R\83s\81[
+                       p = GetNextColumn(p, pBuf, bufsiz);
+
+                       size_t collen = wcslen(pBuf);
+                       pBuf += collen;
+                       bufsiz -= collen;
+               }
+
+               colCount++;
+       } while (p);
+       
+       // \8aù\91\82Ì\97ñ\82æ\82è\82à\8cã\95û\82Ì\8fê\8d\87\81A\97ñ\82Ì\91}\93ü\82ð\8ds\82¤\81B
+       if (colCount <= colidx) {
+               for (int colspan = colCount; colspan <= colidx; colspan++) {
+                       *pBuf++ = separateChar;
+                       bufsiz--;
+               }
+               if (newValue) {
+                       memcpy(pBuf, newValue, sizeof(WCHAR) * newValueLen);
+                       pBuf += newValueLen;
+                       bufsiz -= newValueLen;
+               }
+       }
+
+       // \8fI\92[
+       *pBuf = 0;
+
+       // \8ds\82Ì\92u\82«\8a·\82¦
+       m_array.SetAtGrow(idx, &editBuf[0]);
+
+       return S_OK;
+}
+
+/**
+ * \8bæ\90Ø\82è\95\8e\9a\82Ü\82½\82Í\8fI\92[\82É\8fo\89ï\82¤\82Ü\82Å\82Ì\95\94\95ª\95\8e\9a\97ñ\82ð\8eæ\93¾\82µ\81A
+ * \96ß\82è\92l\82Æ\82µ\82Ä\8bæ\90Ø\82è\95\8e\9a\82Ì\8e\9f\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·\81B
+ * \82½\82¾\82µ\8fI\92[\82É\92B\82µ\82½\8fê\8d\87\82ÍNULL\82ð\95Ô\82·\81B
+ * NULL\82ð\93n\82µ\82½\8fê\8d\87\82Í\95\94\95ª\95\8e\9a\97ñ\82Í\8ai\94[\82¹\82¸NULL\82ð\95Ô\82·\81B
+ * \8bó\95\8e\9a\82ð\93n\82µ\82½\8fê\8d\87\82Í\95\94\95ª\95\8e\9a\97ñ\82Í\8bó\95\8e\9a\82Æ\82È\82èNULL\82ð\95Ô\82·\81B
+ * \95\94\95ª\95\8e\9a\97ñ\82É\8ai\94[\82·\82é\83o\83b\83t\83@\83T\83C\83Y\82Í\8fI\92[0\82ð\8aÜ\82ß\82½\91å\82«\82³\82ª\95K\97v\81B
+ * \95s\91«\82·\82é\8fê\8d\87\82Í\95\94\95ª\95\8e\9a\97ñ\82Í0\8fI\92[\82Å\82«\82é\83T\83C\83Y\82Ü\82Å\90Ø\82è\8bl\82ß\82ç\82ê\82Ü\82·\81B
+ * \83o\83b\83t\83@\83T\83C\83Y\82ª0\82Ì\8fê\8d\87\82Í\89½\82à\8f\91\82«\8d\9e\82Ü\82ê\82Ü\82¹\82ñ\81B
+ * (1\82Ì\8fê\8d\87\82Í\95K\91R\93I\82É\8fí\82É\8fI\92[\95\8e\9a\82µ\82©\8f\91\82«\8d\9e\82Ü\82ê\82Ü\82¹\82ñ\81B)
+ * @param p \89ð\90Í\82·\82é\95\8e\9a\97ñ\82Ö\82Ì\83|\83C\83\93\83^\81ANULL\82Ì\8fê\8d\87\82Í\89½\82à\82¹\82¸NULL\82ð\95Ô\82·\81B
+ * @param colBuf \95\94\95ª\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\81ANULL\82Ì\8fê\8d\87\82Í\8ai\94[\82¹\82¸\81B
+ * @param bufsiz colBuf\82Ì\83o\83b\83t\83@\83T\83C\83Y\81B\8fI\92[0\82ð\8aÜ\82ß\82½\83T\83C\83Y\82ª\95K\97v\81B
+ * @param \8e\9f\82Ì\83J\83\89\83\80\82Ì\90æ\93ª\81A\82à\82µ\82­\82Í\96\96\94ö
+ */
+LPCWSTR CVarArray::GetNextColumn(LPCWSTR p, LPWSTR colBuf, size_t bufsiz)
+{
+       if (!p) {
+               // NULL\82Ì\8fê\8d\87
+               return NULL;
+       }
+
+       LPCWSTR pSt = p;
+
+       if (m_colSeparator.IsEmpty()) {
+               // \83J\83\89\83\80\8bæ\90Ø\82è\95\8e\9a\82ª\8bó\82Ì\8fê\8d\87\82Í\96\96\92[\95\8e\9a(\0)\82Ü\82Å\83X\83L\83b\83v\82·\82é\81B
+               while (*p) p++;
+
+       } else {
+               // \83J\83\89\83\80\8bæ\90Ø\82è\95\8e\9a\82É\88Ê\92u\82Ã\82¯\82é\81B
+               // \83J\83\89\83\80\8bæ\90Ø\82è\95\8e\9a\82ª\8c©\82Â\82©\82ç\82È\82¢\8fê\8d\87\82Í\96\96\92[(\0)\82Ü\82Å\83X\83L\83b\83v\82³\82ê\82é\81B
+               size_t idx = wcscspn(p, m_colSeparator);
+               p = p + idx;
+       }
+
+       // \83J\83\89\83\80\83o\83b\83t\83@\82Ì\8ew\92è\82ª\82 \82ê\82Î\83R\83s\81[\82·\82é
+       if (colBuf && bufsiz > 0) {
+               size_t len = p - pSt;
+               if (len > bufsiz - 1) {
+                       // \83o\83b\83t\83@\83T\83C\83Y\82ª\8fI\92[0\82ð\8aÜ\82ñ\82Å\83J\83\89\83\80\82ð\8ai\94[\82·\82é\83T\83C\83Y\82É\91«\82è\82È\82¢
+                       len = bufsiz - 1;
+               }
+               if (len > 0) {
+                       memcpy(colBuf, pSt, sizeof(WCHAR) * len);
+               }
+               colBuf[len] = 0;
+       }
+
+       // \8bæ\90Ø\82è\95\8e\9a\82Ì\8e\9f\82É\90i\82ß\82é
+       if (*p) {
+               p++;
+       }
+
+       // \98A\91±\82·\82é\8bó\94\92\82ð\96³\8e\8b\82·\82é\8fê\8d\87\81A\83|\83C\83\93\83^\82ð\90i\82ß\82é
+       if (m_colSeparatorShortSpace) {
+               while (*p == ' ') p++;
+       }
+
+       if (*p) {
+               // \82Ü\82¾\8e\9f\82ª\82 \82é\8fê\8d\87
+               return p;
+       }
+       // \8e\9f\82ª\82È\82¢\8fê\8d\87
+       return NULL;
+}
diff --git a/SeraphyScriptDialog/VarArray.h b/SeraphyScriptDialog/VarArray.h
new file mode 100644 (file)
index 0000000..1b7fddd
--- /dev/null
@@ -0,0 +1,101 @@
+// VarArray.h : CVarArray \82Ì\90é\8c¾
+
+#pragma once
+#include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
+
+#include "SeraphyScriptDialog_i.h"
+
+
+#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
+#error "DCOM \82Ì\8a®\91S\83T\83|\81[\83g\82ð\8aÜ\82ñ\82Å\82¢\82È\82¢ Windows Mobile \83v\83\89\83b\83g\83t\83H\81[\83\80\82Ì\82æ\82¤\82È Windows CE \83v\83\89\83b\83g\83t\83H\81[\83\80\82Å\82Í\81A\92P\88ê\83X\83\8c\83b\83h COM \83I\83u\83W\83F\83N\83g\82Í\90³\82µ\82­\83T\83|\81[\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81BATL \82ª\92P\88ê\83X\83\8c\83b\83h COM \83I\83u\83W\83F\83N\83g\82Ì\8dì\90¬\82ð\83T\83|\81[\83g\82·\82é\82±\82Æ\81A\82¨\82æ\82Ñ\82»\82Ì\92P\88ê\83X\83\8c\83b\83h COM \83I\83u\83W\83F\83N\83g\82Ì\8eÀ\91\95\82Ì\8eg\97p\82ð\8b\96\89Â\82·\82é\82±\82Æ\82ð\8b­\90§\82·\82é\82É\82Í\81A_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA \82ð\92è\8b`\82µ\82Ä\82­\82¾\82³\82¢\81B\82²\8eg\97p\82Ì rgs \83t\83@\83C\83\8b\82Ì\83X\83\8c\83b\83\83\82\83f\83\8b\82Í 'Free' \82É\90Ý\92è\82³\82ê\82Ä\82¨\82è\81ADCOM Windows CE \88È\8aO\82Ì\83v\83\89\83b\83g\83t\83H\81[\83\80\82Å\83T\83|\81[\83g\82³\82ê\82é\97B\88ê\82Ì\83X\83\8c\83b\83\83\82\83f\83\8b\82Æ\90Ý\92è\82³\82ê\82Ä\82¢\82Ü\82µ\82½\81B"
+#endif
+
+
+
+// CVarArray
+
+class ATL_NO_VTABLE CVarArray :
+       public CComObjectRootEx<CComSingleThreadModel>,
+       public CComCoClass<CVarArray, &CLSID_ListExObj>,
+       public ISupportErrorInfo,
+       public IDispatchImpl<IVarArray, &IID_IVarArray, &LIBID_SeraphyScriptDialog, /*wMajor =*/ 2, /*wMinor =*/ 0>
+{
+public:
+       CVarArray()
+       {
+       }
+
+// \83\8c\83W\83X\83g\83\8a\82Ì\93o\98^\82Í\82µ\82È\82¢\81B
+// \92P\93Æ\82Å\90\90¬\82µ\82Ä\82à\89½\82ç\96â\91è\82Í\82È\82¢\82ª\8f]\97\88\82æ\82è\93o\98^\82µ\82Ä\82¢\82È\82¢\82Ì\82Å\81B
+//DECLARE_REGISTRY_RESOURCEID(IDR_VARARRAY)
+DECLARE_NO_REGISTRY()
+
+BEGIN_COM_MAP(CVarArray)
+       COM_INTERFACE_ENTRY(IVarArray)
+       COM_INTERFACE_ENTRY(IDispatch)
+       COM_INTERFACE_ENTRY(ISupportErrorInfo)
+END_COM_MAP()
+
+// ISupportsErrorInfo
+       STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
+
+       DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+       HRESULT FinalConstruct();
+
+       void FinalRelease();
+
+private:
+
+       // \95\8e\9a\97ñ\94z\97ñ
+       CAtlArray<CAtlStringW> m_array;
+
+       // \97ñ\8bæ\90Ø\82è\95\8e\9a\82Ì\95\8e\9a\8fW\8d\87
+       CAtlStringW m_colSeparator;
+
+       // \97ñ\8bæ\90Ø\82è\8cã\82Ì\94¼\8ap\83X\83y\81[\83X\82ð\93Ç\82Ý\94ò\82Î\82·\83t\83\89\83O
+       VARIANT_BOOL m_colSeparatorShortSpace;
+
+       // *\96¢\8eg\97p*
+       VARIANT_BOOL m_colReturnNull;
+
+       // \97ñ\8bæ\90Ø\82è\95\8e\9a\8fW\8d\87\82Æ\97ñ\8bæ\90Ø\82è\8cã\82Ì\8bó\94\92\93Ç\82Ý\94ò\82Î\82µ\83t\83\89\83O\82ð\97p\82¢\82Ä
+       // \8ew\92è\82µ\82½\95\8e\9a\97ñ\82©\82ç\97ñ\82ð\90Ø\82è\8fo\82µ\81A\8e\9f\82Ì\97ñ\82Ì\90æ\93ª\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·
+       // \8e\9f\82Ì\97ñ\82ª\91\8dÝ\82µ\82È\82¢\8fê\8d\87\82ÍNULL\82ð\95Ô\82·\81B
+       LPCWSTR GetNextColumn(LPCWSTR p, LPWSTR colbuf, size_t bufsiz);
+
+public:
+
+       STDMETHOD(get__NewEnum)(IUnknown **ppUnk);
+       STDMETHOD(get__Value)(long idx, VARIANT *pValue);
+       STDMETHOD(put__Value)(long idx, VARIANT newValue);
+       STDMETHOD(get_ColReturnNull)(VARIANT_BOOL *pValue);
+       STDMETHOD(put_ColReturnNull)(VARIANT_BOOL newValue);
+       STDMETHOD(get_ColSeparateChar)(BSTR *pValue);
+       STDMETHOD(put_ColSeparateChar)(BSTR newValue);
+       STDMETHOD(get_ColSeparateShortSpace)(VARIANT_BOOL *pValue);
+       STDMETHOD(put_ColSeparateShortSpace)(VARIANT_BOOL newValue);
+       STDMETHOD(get_Count)(LONG *pCount);
+       STDMETHOD(get_LastValue)(VARIANT *pValue);
+       STDMETHOD(put_LastValue)(VARIANT newValue);
+       STDMETHOD(AddHead)(BSTR mes, LONG *pIndex);
+       STDMETHOD(AddTail)(BSTR mes, LONG *pIndex);
+       STDMETHOD(Insert)(LONG idx, BSTR mes, LONG *pIndex);
+       STDMETHOD(RemoveHead)(LONG *pIndex);
+       STDMETHOD(RemoveTail)(LONG *pIndex);
+       STDMETHOD(Remove)(LONG idx, LONG *pIndex);
+       STDMETHOD(RemoveAll)();
+       STDMETHOD(ChangeTerminateChar)(LONG nStartIdx, LONG nEndIndx, BSTR newSeparateChar, VARIANT bChangeSeparateChar, VARIANT_BOOL *pResult);
+       STDMETHOD(Find)(LONG nStartIdx, LONG nEndIdx, BSTR strMatch, VARIANT nType, LONG *pIndex);
+       STDMETHOD(FindCol)(LONG nStartIdx, LONG nEndIdx, SHORT nCol, BSTR strMatch, VARIANT nType, LONG *pIndex);
+       STDMETHOD(get_Value)(LONG idx, VARIANT *pValue);
+       STDMETHOD(put_Value)(LONG idx, VARIANT newValue);
+       STDMETHOD(get_ColCount)(LONG idx, SHORT *pCount);
+       STDMETHOD(get_ColValue)(LONG idx, SHORT colidx, BSTR *pColValue);
+       STDMETHOD(put_ColValue)(LONG idx, SHORT colidx, BSTR newValue);
+};
+
+// \83\8c\83W\83X\83g\83\8a\82Ì\93o\98^\82Í\82µ\82È\82¢\81B
+// \92P\93Æ\82Å\90\90¬\82µ\82Ä\82à\89½\82ç\96â\91è\82Í\82È\82¢\82ª\8f]\97\88\82æ\82è\93o\98^\82µ\82Ä\82¢\82È\82¢\82Ì\82Å\81B
+//OBJECT_ENTRY_AUTO(__uuidof(ListExObj), CVarArray)
+OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO(__uuidof(ListExObj), CVarArray)
diff --git a/SeraphyScriptDialog/VarArray.rgs b/SeraphyScriptDialog/VarArray.rgs
new file mode 100644 (file)
index 0000000..266999e
--- /dev/null
@@ -0,0 +1,27 @@
+HKCR
+{
+       SeraphyScriptDialog.VarArray.2 = s 'VarArray Class'
+       {
+               CLSID = s '{4FB83780-8E4B-4EE2-AE89-3FBC569658BA}'
+       }
+       SeraphyScriptDialog.VarArray = s 'VarArray Class'
+       {
+               CLSID = s '{4FB83780-8E4B-4EE2-AE89-3FBC569658BA}'
+               CurVer = s 'SeraphyScriptDialog.VarArray.2'
+       }
+       NoRemove CLSID
+       {
+               ForceRemove {4FB83780-8E4B-4EE2-AE89-3FBC569658BA} = s 'VarArray Class'
+               {
+                       ProgID = s 'SeraphyScriptDialog.VarArray.2'
+                       VersionIndependentProgID = s 'SeraphyScriptDialog.VarArray'
+                       ForceRemove 'Programmable'
+                       InprocServer32 = s '%MODULE%'
+                       {
+                               val ThreadingModel = s 'Apartment'
+                       }
+                       Version = s '2.0'
+                       'TypeLib' = s '{8C5ED098-A33E-4B09-8E44-638CCF6307A8}'
+               }
+       }
+}
diff --git a/SeraphyScriptDialog/dlldatax.c b/SeraphyScriptDialog/dlldatax.c
new file mode 100644 (file)
index 0000000..94217f0
--- /dev/null
@@ -0,0 +1,18 @@
+// dlldata.c \97p\82Ì\83\89\83b\83p\81[
+
+#ifdef _MERGE_PROXYSTUB // proxy stub DLL \82Ì\8c\8b\8d\87
+
+#define REGISTER_PROXY_DLL //DllRegisterServer\81A\91¼
+
+#define _WIN32_WINNT 0x0500    //WinNT 4.0 \82¨\82æ\82Ñ DCOM \82ð\8e\9d\82 Win95 \97p
+#define USE_STUBLESS_PROXY     //MIDL \82Ì\83I\83v\83V\83\87\83\93\82Å /Oicf \82ð\8ew\92è\82µ\82½\8fê\8d\87\82Ì\82Ý\92è\8b`
+
+#pragma comment(lib, "rpcns4.lib")
+#pragma comment(lib, "rpcrt4.lib")
+
+#define ENTRY_PREFIX   Prx
+
+#include "dlldata.c"
+#include "SeraphyScriptDialog_p.c"
+
+#endif //_MERGE_PROXYSTUB
diff --git a/SeraphyScriptDialog/dlldatax.h b/SeraphyScriptDialog/dlldatax.h
new file mode 100644 (file)
index 0000000..89313c5
--- /dev/null
@@ -0,0 +1,15 @@
+#pragma once
+
+#ifdef _MERGE_PROXYSTUB
+
+extern "C" 
+{
+BOOL WINAPI PrxDllMain(HINSTANCE hInstance, DWORD dwReason, 
+       LPVOID lpReserved);
+STDAPI PrxDllCanUnloadNow(void);
+STDAPI PrxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
+STDAPI PrxDllRegisterServer(void);
+STDAPI PrxDllUnregisterServer(void);
+}
+
+#endif
diff --git a/SeraphyScriptDialog/dllmain.cpp b/SeraphyScriptDialog/dllmain.cpp
new file mode 100644 (file)
index 0000000..04d8e52
--- /dev/null
@@ -0,0 +1,20 @@
+// dllmain.cpp : DllMain \82Ì\8eÀ\91\95
+
+#include "stdafx.h"
+#include "resource.h"
+#include "SeraphyScriptDialog_i.h"
+#include "dllmain.h"
+#include "dlldatax.h"
+
+CSeraphyScriptDialogModule _AtlModule;
+
+// DLL \83G\83\93\83g\83\8a \83|\83C\83\93\83g
+extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
+{
+#ifdef _MERGE_PROXYSTUB
+       if (!PrxDllMain(hInstance, dwReason, lpReserved))
+               return FALSE;
+#endif
+       hInstance;
+       return _AtlModule.DllMain(dwReason, lpReserved); 
+}
diff --git a/SeraphyScriptDialog/dllmain.h b/SeraphyScriptDialog/dllmain.h
new file mode 100644 (file)
index 0000000..6502f35
--- /dev/null
@@ -0,0 +1,11 @@
+// dllmain.h : \83\82\83W\83\85\81[\83\8b \83N\83\89\83X\82Ì\90é\8c¾
+
+class CSeraphyScriptDialogModule : public CAtlDllModuleT< CSeraphyScriptDialogModule >
+{
+public :
+       DECLARE_LIBID(LIBID_SeraphyScriptDialog)
+       DECLARE_REGISTRY_APPID_RESOURCEID(IDR_SERAPHYSCRIPTDIALOG, "{C781EBBC-836D-4DB3-B100-16A2BEE5F503}")
+};
+
+extern class CSeraphyScriptDialogModule _AtlModule;
+
diff --git a/SeraphyScriptDialog/resource.h b/SeraphyScriptDialog/resource.h
new file mode 100644 (file)
index 0000000..10a5a04
--- /dev/null
@@ -0,0 +1,35 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by SeraphyScriptDialog.rc
+//
+#define IDS_PROJNAME                    100
+#define IDR_SERAPHYSCRIPTDIALOG         101
+#define IDS_ABOUTMESSAGE                101
+#define IDR_SCRDLGROOT                  102
+#define IDR_VARARRAY                    107
+#define IDD_OUTPUTWINDOW                108
+#define IDD_USERFORM                    109
+#define IDS_PROFILESECTIONNAME          200
+#define IDS_DEFAULT_PREFERENCENAME      201
+#define IDC_EDIT1                       201
+#define IDC_DUMMY                       202
+#define IDS_USERFORM_TITLE              202
+#define IDS_FILTER_ALLFILES             300
+#define IDS_FILEEDITBTN_DEFAULTCAPTION  301
+#define IDS_FOLDEREDITBTN_DEFAULTCAPTION 302
+#define IDS_MESSAGEBOXDEFAULTTITLE      512
+#define IDS_NO_SHUTDOWN_PRIVILEGE       513
+#define IDS_UNSUPPORTED_SEPARATE_CHAR   514
+#define IDS_FORM_ALWAYS_COMPOSED        515
+#define IDS_FORM_NOT_COMPOSED           516
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        203
+#define _APS_NEXT_COMMAND_VALUE         32768
+#define _APS_NEXT_CONTROL_VALUE         203
+#define _APS_NEXT_SYMED_VALUE           110
+#endif
+#endif
diff --git a/SeraphyScriptDialog/stdafx.cpp b/SeraphyScriptDialog/stdafx.cpp
new file mode 100644 (file)
index 0000000..3d965b0
--- /dev/null
@@ -0,0 +1,5 @@
+// stdafx.cpp : \95W\8f\80\83C\83\93\83N\83\8b\81[\83h SeraphyScriptDialog.pch \82Ì\82Ý\82ð
+// \8aÜ\82Þ\83\\81[\83\83t\83@\83C\83\8b\82Í\81A\83v\83\8a\83R\83\93\83p\83C\83\8b\8dÏ\82Ý\83w\83b\83_\81[\82É\82È\82è\82Ü\82·\81B
+// stdafx.obj \82É\82Í\83v\83\8a\83R\83\93\83p\83C\83\8b\8dÏ\82Ý\8c^\8fî\95ñ\82ª\8aÜ\82Ü\82ê\82Ü\82·\81B
+
+#include "stdafx.h"
diff --git a/SeraphyScriptDialog/stdafx.h b/SeraphyScriptDialog/stdafx.h
new file mode 100644 (file)
index 0000000..43ceb78
--- /dev/null
@@ -0,0 +1,60 @@
+// stdafx.h : \95W\8f\80\82Ì\83V\83X\83e\83\80 \83C\83\93\83N\83\8b\81[\83\83t\83@\83C\83\8b\82Ì\83C\83\93\83N\83\8b\81[\83\83t\83@\83C\83\8b\81A\82Ü\82½\82Í
+// \8eQ\8fÆ\89ñ\90\94\82ª\91½\82­\81A\82©\82Â\82 \82Ü\82è\95Ï\8dX\82³\82ê\82È\82¢\81A\83v\83\8d\83W\83F\83N\83g\90ê\97p\82Ì\83C\83\93\83N\83\8b\81[\83\83t\83@\83C\83\8b
+// \82ð\8bL\8fq\82µ\82Ü\82·\81B
+
+#pragma once
+
+#ifndef STRICT
+#define STRICT
+#endif
+
+#include "targetver.h"
+
+#define _ATL_APARTMENT_THREADED
+#define _ATL_NO_AUTOMATIC_NAMESPACE
+
+#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS     // \88ê\95\94\82Ì CString \83R\83\93\83X\83g\83\89\83N\83^\82Í\96¾\8e¦\93I\82Å\82·\81B
+
+// Enabling Visual Style
+#define ISOLATION_AWARE_ENABLED 1
+#include <windows.h>
+#include <commctrl.h>
+
+#ifdef _UNICODE
+#if defined _M_IX86
+#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
+#elif defined _M_IA64
+#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
+#elif defined _M_X64
+#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
+#else
+#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
+#endif
+#endif 
+
+#include <tchar.h>
+
+#include "resource.h"
+#include <atlbase.h>
+#include <atlcom.h>
+#include <atlctl.h>
+#include <atlcoll.h>
+#include <ATLComTime.h>
+#include <atlsecurity.h>
+
+#include <shlobj.h>
+#include <shlwapi.h>
+
+using namespace ATL;
+
+// Win32API\82Ì\83}\83N\83\8d\93W\8aJ\82Æ\8b£\8d\87\82µ\82Ä\82µ\82Ü\82¤\82Ì\82Å\81A\92è\8b`\82ð\89ð\8f\9c\82·\82é
+#undef ExitWindows
+
+// VARIANT\88ø\90\94\82ÌNULL/ERROR/EMPTY\82Ì\94»\92è\97p
+inline bool IsNullOrError(const VARIANT* pVar) throw()
+{
+       while (pVar && pVar->vt == (VT_BYREF | VT_VARIANT)) {
+               pVar = pVar->pvarVal;
+       }
+       return (pVar == NULL) || (pVar->vt == VT_EMPTY) || (pVar->vt == VT_NULL) || (pVar->vt == VT_ERROR);
+}
diff --git a/SeraphyScriptDialog/targetver.h b/SeraphyScriptDialog/targetver.h
new file mode 100644 (file)
index 0000000..b2d0893
--- /dev/null
@@ -0,0 +1,26 @@
+
+#pragma once
+
+// \88È\89º\82Ì\83}\83N\83\8d\82Í\81A\8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82ð\92è\8b`\82µ\82Ü\82·\81B\8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82Æ\82Í\81A
+// \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ð\8eÀ\8ds\82·\82é\82½\82ß\82É\95K\97v\82È\8b@\94\\82ð\94õ\82¦\82½\8dÅ\82à\8cÃ\82¢\83o\81[\83W\83\87\83\93\82Ì Windows \82â Internet Explorer \82È\82Ç
+// \82ð\82¢\82¢\82Ü\82·\81B\82±\82ê\82ç\82Ì\83}\83N\83\8d\82Í\81A\8ew\92è\82µ\82½\83o\81[\83W\83\87\83\93\82Æ\81A\82»\82ê\88È\91O\82Ì\83o\81[\83W\83\87\83\93\82Ì\83v\83\89\83b\83g\83t\83H\81[\83\80\8fã\82Å\97\98\97p\82Å\82«\82é\82·\82×\82Ä\82Ì\8b@\94\\82ð\97L\8cø\82É\82·\82é\82±\82Æ\82É\82æ\82Á\82Ä 
+// \93®\8dì\82µ\82Ü\82·\81B
+
+// \89º\82Å\8ew\92è\82³\82ê\82½\92è\8b`\82Ì\91O\82É\91Î\8fÛ\83v\83\89\83b\83g\83t\83H\81[\83\80\82ð\8ew\92è\82µ\82È\82¯\82ê\82Î\82È\82ç\82È\82¢\8fê\8d\87\81A\88È\89º\82Ì\92è\8b`\82ð\95Ï\8dX\82µ\82Ä\82­\82¾\82³\82¢\81B
+// \88Ù\82È\82é\83v\83\89\83b\83g\83t\83H\81[\83\80\82É\91Î\89\9e\82·\82é\92l\82É\8aÖ\82·\82é\8dÅ\90V\8fî\95ñ\82É\82Â\82¢\82Ä\82Í\81AMSDN \82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B
+#ifndef WINVER                          // \8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82ª Windows Vista \82Å\82 \82é\82±\82Æ\82ð\8ew\92è\82µ\82Ü\82·\81B
+#define WINVER 0x0502           // \82±\82ê\82ð Windows \82Ì\91¼\82Ì\83o\81[\83W\83\87\83\93\8cü\82¯\82É\93K\90Ø\82È\92l\82É\95Ï\8dX\82µ\82Ä\82­\82¾\82³\82¢\81B
+#endif
+
+#ifndef _WIN32_WINNT            // \8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82ª Windows Vista \82Å\82 \82é\82±\82Æ\82ð\8ew\92è\82µ\82Ü\82·\81B
+#define _WIN32_WINNT 0x0502     // \82±\82ê\82ð Windows \82Ì\91¼\82Ì\83o\81[\83W\83\87\83\93\8cü\82¯\82É\93K\90Ø\82È\92l\82É\95Ï\8dX\82µ\82Ä\82­\82¾\82³\82¢\81B
+#endif
+
+#ifndef _WIN32_WINDOWS          // \8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82ª Windows 98 \82Å\82 \82é\82±\82Æ\82ð\8ew\92è\82µ\82Ü\82·\81B
+#define _WIN32_WINDOWS 0x0410 // \82±\82ê\82ð Windows Me \82Ü\82½\82Í\82»\82ê\88È\8d~\82Ì\83o\81[\83W\83\87\83\93\8cü\82¯\82É\93K\90Ø\82È\92l\82É\95Ï\8dX\82µ\82Ä\82­\82¾\82³\82¢\81B
+#endif
+
+#ifndef _WIN32_IE                       // \8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82ª Internet Explorer 7.0 \82Å\82 \82é\82±\82Æ\82ð\8ew\92è\82µ\82Ü\82·\81B
+#define _WIN32_IE 0x0700        // \82±\82ê\82ð IE \82Ì\91¼\82Ì\83o\81[\83W\83\87\83\93\8cü\82¯\82É\93K\90Ø\82È\92l\82É\95Ï\8dX\82µ\82Ä\82­\82¾\82³\82¢\81B
+#endif
+
diff --git a/SeraphyScriptDialogSetup.iss b/SeraphyScriptDialogSetup.iss
new file mode 100644 (file)
index 0000000..0f3c7d3
--- /dev/null
@@ -0,0 +1,456 @@
+[Setup]
+; \8dX\90V\81E\92Ç\89Á\83C\83\93\83X\83g\81[\83\8b\82Ì\82½\82ß\82Ì\8e¯\95Ê\96¼
+; (\93¯\88ê\96¼\82Å\82 \82ê\82Î\8dX\90V\83C\83\93\83X\83g\81[\83\8b\81A\82»\82¤\82Å\82È\82¯\82ê\82Î\92Ç\89Á\83C\83\93\83X\83g\81[\83\8b\82Æ\82È\82é.)
+AppId = SeraphyScriptDialog2.0
+
+; \95\\8e¦\96¼
+AppName = SeraphyScriptDialog
+; \95\\8e¦\83o\81[\83W\83\87\83\93
+AppVersion = 2.0
+
+; \8fo\97Í\96¼
+OutputBaseFilename={#SetupSetting("AppName")}-{#SetupSetting("AppVersion")}_setup
+; \8fo\97Í\90æ\83f\83B\83\8c\83N\83g\83\8a
+OutputDir=dist
+
+; \95\\8e¦\82·\82é\94z\95z\8eÒ\96¼
+AppPublisher=seraphyware.jp
+; \92\98\8dì\8c \95\\8e¦
+AppCopyright=Copyright 2015 seraphy (seraphyware.jp)
+
+; \83Z\83b\83g\83A\83b\83v\82Ì\83o\81[\83W\83\87\83\93\8fî\95ñ
+VersionInfoCompany = seraphyware.jp
+VersionInfoCopyright = copyright 2002/2 - 2015/3 seraphy (seraphyware.jp)
+VersionInfoDescription = SeraphyScriptDialog (DLL) Installer (x64/x86)
+VersionInfoVersion = 2.0.0.1
+
+; \83v\83\8d\83O\83\89\83\80\83O\83\8b\81[\83v
+DefaultGroupName = SeraphyScriptDialog
+
+; \83v\83\8d\83O\83\89\83\80\83O\83\8b\81[\83v\82Ì\95s\8dì\90¬\82ð\89Â\82Æ\82·\82é
+AllowNoIcons=yes
+
+
+; \8fí\82Écommon\82É\93ü\82ê\82é\82Ì\82Å\83C\83\93\83X\83g\81[\83\8b\90æ\82ð\96â\82¢\8d\87\82í\82¹\82È\82¢.
+DisableDirPage = yes
+
+
+; \83f\83t\83H\83\8b\83g\82Ì\83C\83\93\83X\83g\81[\83\8b\90æ\82Ì\8ew\92è
+; (\83C\83\93\83X\83g\81[\83\8b\90æ\82Í\83A\83\93\83C\83\93\83X\83g\81[\83\89\82ª\95Û\91\82³\82ê\82é\8fê\8f\8a\82Å\82à\82 \82é)
+DefaultDirName={cf}\{#SetupSetting("AppName")}\{#SetupSetting("AppVersion")}
+
+
+; 64bit\82Íx64\83A\81[\83L\83e\83N\83`\83\83\82ð\91z\92è
+ArchitecturesInstallIn64BitMode = x64
+
+; \93ú\96{\8cê\81E\89p\8cê\82Ì\82¢\82¸\82ê\82Å\82à\82È\82¢\8fê\8d\87\82Ì\82Ý\8c¾\8cê\91I\91ð\89æ\96Ê\82ð\8fo\82·.
+ShowLanguageDialog = auto
+
+; \88³\8fk\8c`\8e®
+Compression=lzma2/max
+SolidCompression=yes
+
+
+[Languages]
+Name: "ja"; MessagesFile: "compiler:Languages/Japanese.isl";
+Name: "en"; MessagesFile: "compiler:Default.isl"; 
+
+[Types]
+Name: "Minimum"; Description: "{cm:MinInst}";
+Name: "Full"; Description: "{cm:FullInst}";
+Name: "Custom"; Description: "{cm:CustomInst}"; Flags: iscustom;
+
+[Components]
+Name: "CoreDLL"; Description: "Core DLL"; Types: Minimum Full Custom; Flags: fixed
+Name: "Help"; Description: "Help"; Types: Full Custom;
+Name: "Samples"; Description: "Samples"; Types: Full Custom;
+
+[Files]
+#define DLL_NAME_X64 "SeraphyScriptDialogx64.dll"
+#define DLL_NAME_X86 "SeraphyScriptDialog.dll"
+
+; 64\83r\83b\83g\94Ådll
+Source: "SeraphyScriptDialog\x64\Release\{#DLL_NAME_X64}"; DestDir: "{code:GetTargetDir}"; Flags: 64bit; MinVersion: 0,5.01sp3; Check: Is64BitInstallMode; Components: "CoreDLL";
+
+; 32\83r\83b\83g\94Ådll
+Source: "SeraphyScriptDialog\Win32\Release\{#DLL_NAME_X86}"; DestDir: "{code:GetTargetDirX86}"; Flags: 32bit; MinVersion: 0,5.01sp3; Components: "CoreDLL";
+
+; \83w\83\8b\83v
+Source: "help/SeraphyScriptDialog2.chm"; DestDir: "{code:GetTargetDir}/Help"; Flags: isreadme; Components: "Help";
+
+; \83T\83\93\83v\83\8b
+Source: "sample/*"; DestDir: "{code:GetTargetDir}/Samples"; Components: "Samples";
+
+[Registry]
+; COM\82Ü\82í\82è\82Ì\83o\81[\83W\83\87\83\93\8cÅ\97L\8e¯\95Ê\8eq
+#define REP_PROGID "SeraphyScriptDialog"
+#define PROGID "SeraphyScriptDialog.2"
+#define PROG_VERSION "2"
+#define PROGID_VERSION "2.0"
+#define CLSID "{{4019FCE4-1A3B-4BFF-BF84-C036195842EF}"
+#define TYPLIBID "{{8C5ED098-A33E-4B09-8E44-638CCF6307A8}"
+#define APPID "{{C781EBBC-836D-4DB3-B100-16A2BEE5F503}"
+
+; <<COM\82Ì\93o\98^>>
+; "regserver" flag\82Í\8eg\97p\82¹\82¸\81A\83Z\83b\83g\83A\83b\83v\92\86\82Å\93Æ\8e©\82É\91Î\89\9e\82·\82é.
+; \82Ü\82½\81A\83|\83X\83g\83C\83\93\83X\83g\81[\83\8b\81A\83|\83X\83g\83A\83\93\83C\83\93\83X\83g\81[\83\8b\8f\88\97\9d\82Å\91ã\95\PROGID\82Ì\95â\90³\82ð\8ds\82¤.
+
+; 64\83r\83b\83g\94Å
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\{#REP_PROGID}"; ValueType: string; ValueData: "{#REP_PROGID} Class"; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\{#REP_PROGID}\CLSID"; ValueType: string; ValueData: "{#CLSID}"; Check: IsVerEqOrLessThan('{#PROGID_VERSION}') and Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\{#REP_PROGID}\CurVer"; ValueType: string; ValueData: "{#PROGID}"; Check: IsVerEqOrLessThan('{#PROGID_VERSION}') and Is64BitInstallMode
+
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\{#PROGID}"; ValueType: string; ValueData: "{#REP_PROGID} Class"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\{#PROGID}\CLSID"; ValueType: string; ValueData: "{#CLSID}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}"; ValueType: string; ValueData: "{#REP_PROGID} Class"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\InprocServer32"; ValueType: string; ValueData: "{code:GetTargetDir}\{#DLL_NAME_X64}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\InprocServer32"; ValueType: string; ValueName: "ThreadingModel"; ValueData: "Apartment"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\ProgID"; ValueType: string; ValueData: "{#PROGID}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\Programmable"; ValueType: none; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\TypeLib"; ValueType: string; ValueData: "{#TYPLIBID}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\Version"; ValueType: string; ValueData: "{#PROGID_VERSION}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\VersionIndependentProgID"; ValueType: string; ValueData: "{#REP_PROGID}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}"; ValueType: none; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}"; ValueType: string; ValueData: "{#PROGID} {#PROGID_VERSION} \83^\83C\83\83\89\83C\83u\83\89\83\8a"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}\0"; ValueType: none; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}\0\win64"; ValueType: string; ValueData: "{code:GetTargetDir}\{#DLL_NAME_X64}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}\FLAGS"; ValueType: string; ValueData: "0"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}\HELPDIR"; ValueType: string; ValueData: "{code:GetTargetDir}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+Root: "HKLM64"; Subkey: "SOFTWARE\Classes\AppID\{#DLL_NAME_X64}"; ValueType: string; ValueName: "AppID"; ValueData: "{#APPID}"; Flags: uninsdeletevalue uninsdeletekeyifempty; Check: Is64BitInstallMode
+
+; 32\83r\83b\83g\94Å
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\{#REP_PROGID}"; ValueType: string; ValueData: "{#REP_PROGID} Class"
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\{#REP_PROGID}\CLSID"; ValueType: string; ValueData: "{#CLSID}"; Check: IsVerEqOrLessThan('{#PROGID_VERSION}')
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\{#REP_PROGID}\CurVer"; ValueType: string; ValueData: "{#PROGID}"; Check: IsVerEqOrLessThan('{#PROGID_VERSION}')
+
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\{#PROGID}"; ValueType: string; ValueData: "{#REP_PROGID} Class"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\{#PROGID}\CLSID"; ValueType: string; ValueData: "{#CLSID}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}"; ValueType: string; ValueData: "{#REP_PROGID} Class"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\InprocServer32"; ValueType: string; ValueData: "{code:GetTargetDirX86}\{#DLL_NAME_X86}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\InprocServer32"; ValueType: string; ValueName: "ThreadingModel"; ValueData: "Apartment"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\ProgID"; ValueType: string; ValueData: "{#PROGID}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\Programmable"; ValueType: none; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\TypeLib"; ValueType: string; ValueData: "{#TYPLIBID}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\Version"; ValueType: string; ValueData: "{#PROGID_VERSION}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{#CLSID}\VersionIndependentProgID"; ValueType: string; ValueData: "{#REP_PROGID}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}"; ValueType: none; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}"; ValueType: string; ValueData: "{#PROGID} {#PROGID_VERSION} \83^\83C\83\83\89\83C\83u\83\89\83\8a"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}\0"; ValueType: none; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}\0\win32"; ValueType: string; ValueData: "{code:GetTargetDirX86}\{#DLL_NAME_X86}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}\FLAGS"; ValueType: string; ValueData: "0"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\TypeLib\{#TYPLIBID}\{#PROGID_VERSION}\HELPDIR"; ValueType: string; ValueData: "{code:GetTargetDirX86}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\AppID\{#DLL_NAME_X86}"; ValueType: string; ValueName: "AppID"; ValueData: "{#APPID}"; Flags: uninsdeletevalue uninsdeletekeyifempty
+
+; \8b\8cVersion1(32\83r\83b\83g\94Å)\82ÌDLL\82ª\82 \82ê\82Î\83\8c\83W\83X\83g\83\8a\82ð\95â\90³\82·\82é.
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\CLSID\{{86893BFE-A779-4685-8FC9-D63C8827C4C9}\ProgID"; ValueType: string; ValueData: "SeraphyScriptDialog.1"; Check: HasVersion1DLL
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\SeraphyScriptDialog.1"; ValueType: string; ValueData: "SeraphyScriptDialog Class"; Check: HasVersion1DLL
+Root: "HKLM32"; Subkey: "SOFTWARE\Classes\SeraphyScriptDialog.1\CLSID"; ValueType: string; ValueData: "{{86893BFE-A779-4685-8FC9-D63C8827C4C9}"; Check: HasVersion1DLL
+
+[Icons]
+; \83w\83\8b\83v
+Name: "{group}\Help"; Filename: "{code:GetTargetDir}\Help\SeraphyScriptDialog2.chm"; WorkingDir: "{code:GetTargetDir}\Help\"; Components: "Help";
+
+; \83T\83\93\83v\83\8b
+Name: "{group}\Samples\About.wsf"; Filename: "{code:GetTargetDir}\Samples\About.wsf"; WorkingDir: "{code:GetTargetDir}\Samples\"; Components: "Samples";
+Name: "{group}\Samples\CalcSample.js"; Filename: "{code:GetTargetDir}\Samples\CalcSample.js"; WorkingDir: "{code:GetTargetDir}\Samples\"; Components: "Samples";
+Name: "{group}\Samples\FormSample1.vbs"; Filename: "{code:GetTargetDir}\Samples\FormSample1.vbs"; WorkingDir: "{code:GetTargetDir}\Samples\"; Components: "Samples";
+Name: "{group}\Samples\FormSample2.vbs"; Filename: "{code:GetTargetDir}\Samples\FormSample2.vbs"; WorkingDir: "{code:GetTargetDir}\Samples\"; Components: "Samples";
+
+
+[CustomMessages]
+en.x86_x64=Install both x86 and x64 version.
+ja.x86_x64=x86\94Å\82Æx64\94Å\82Ì\97¼\95û\82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ü\82·.
+
+en.x86=Install x86 version.
+ja.x86=x86\94Å\82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ü\82·.
+
+en.MinInst=Minimum
+ja.MinInst=\8dÅ\8f¬\8d\\90¬
+
+en.FullInst=Full
+ja.FullInst=\8a®\91S
+
+en.CustomInst=Custom
+ja.CustomInst=\83J\83X\83^\83\80
+
+en.unchangeDefaultProgID=Because a newer version exists, PROGID is not changed.
+ja.unchangeDefaultProgID=\90V\82µ\82¢\83o\81[\83W\83\87\83\93\82ª\83C\83\93\83X\83g\81[\83\8b\8dÏ\82Ý\82Ì\82½\82ß\81A\83f\83t\83H\83\8b\83g\82ÌProgID\82Í\95Ï\8dX\82³\82ê\82Ü\82¹\82ñ.
+
+en.appendVersion1ProgID=ProgID of version 1 is changed to "SeraphyScriptDialog.1".
+ja.appendVersion1ProgID=\8b\8c\83o\81[\83W\83\87\83\931\82ÌProgID\82ð"SeraphyScriptDialog.1"\82É\95â\90³\82µ\82Ü\82·.
+
+
+[Code]
+// \83o\81[\83W\83\87\83\93\82ð\89ð\90Í\82·\82é.
+// http://stackoverflow.com/questions/1297773/check-java-is-present-before-installing
+procedure DecodeVersion(
+  verstr: String;
+  var verint: array of Integer);
+var
+  i, p: Integer;
+  s: string;
+begin
+  // initialize array
+  verint := [0, 0, 0, 0];
+  i := 0;
+  while ((Length(verstr) > 0) and (i < 4)) do
+  begin
+    p := pos ('.', verstr);
+    if p > 0 then begin
+      if p = 1 then begin
+        s:= '0'
+      end else begin
+        s:= Copy (verstr, 1, p - 1);
+      end;
+      verint[i] := StrToIntDef(s, 0);
+      i := i + 1;
+      verstr := Copy (verstr, p+1, Length(verstr));
+    end else begin
+      verint[i] := StrToIntDef(verstr, 0);
+      verstr := '';
+    end;
+  end;
+end;
+// \83o\81[\83W\83\87\83\93\82ð\94ä\8ar\82·\82é.
+function CompareVersion(ver1, ver2: String) : Integer;
+var
+  verint1, verint2: array of Integer;
+  i: integer;
+begin
+  SetArrayLength(verint1, 4);
+  DecodeVersion(ver1, verint1);
+  SetArrayLength(verint2, 4);
+  DecodeVersion(ver2, verint2);
+  Result := 0; i := 0;
+  while ((Result = 0) and ( i < 4 )) do
+  begin
+    if verint1[i] > verint2[i] then
+      Result := 1
+    else
+      if verint1[i] < verint2[i] then
+        Result := -1
+      else
+        Result := 0;
+    i := i + 1;
+  end;
+end;
+
+
+// 64\83r\83b\83g\94Å\82Ì\83C\83\93\83X\83g\81[\83\8b\90æ
+// (32\83r\83b\83g\83\82\81[\83h\82Ì\8fê\8d\87\82Í32\83r\83b\83g\94Å\82Æ\93¯\82\8fê\8f\8a\82ð\8ew\82·.)
+function GetTargetDir(value: String): String;
+var
+  vartmp: String;
+begin
+  if Is64BitInstallMode then begin
+    vartmp := '{cf64}';
+  end else begin
+    vartmp := '{cf}';
+  end;
+  Result := ExpandConstant(vartmp +'\{#SetupSetting("AppName")}\{#SetupSetting("AppVersion")}');
+end;
+
+// 32\83r\83b\83g\94Å\82Ì\83C\83\93\83X\83g\81[\83\8b\90æ
+function GetTargetDirX86(value: String): String;
+begin
+  Result := ExpandConstant('{cf32}\{#SetupSetting("AppName")}\{#SetupSetting("AppVersion")}');
+end;
+
+// \8b\8cVersion1.0\82ÌDLL\82ÌCLSID\82ª\83V\83X\83e\83\80\82É\93o\98^\82³\82ê\82Ä\8eÀ\8dÝ\82·\82é\82©\81H
+function HasVersion1DLL(): Boolean;
+var
+  tmp: String;
+  dllpath: String;
+begin
+  tmp := ExpandConstant('{reg:HKLM32\SOFTWARE\Classes\CLSID\{{86893BFE-A779-4685-8FC9-D63C8827C4C9%7d,}');
+  if Length(tmp) > 0 then begin
+    dllpath := ExpandConstant('{reg:HKLM32\SOFTWARE\Classes\CLSID\{{86893BFE-A779-4685-8FC9-D63C8827C4C9%7d\InprocServer32,}');
+    Result := FileExists(dllpath);
+    exit;
+  end;
+  Result := False;
+end;
+
+function IsVerEqOrLessThan(ver: String): Boolean; forward;
+
+// \83C\83\93\83X\83g\81[\83\8b\90æ\82Ì\95\\8e¦
+function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo,
+  MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
+begin
+  // \83C\83\93\83X\83g\81[\83\8b\83\82\81[\83h (x64/x86 or x86)
+  if Is64BitInstallMode then begin
+    Result := Result + ExpandConstant('{cm:x86_x64}') + NewLine;
+  end else begin
+    Result := Result + ExpandConstant('{cm:x86}') + NewLine;
+  end;
+
+  Result := Result + NewLine;
+
+  // \83C\83\93\83X\83g\81[\83\8b\90æ\82Ì\95\\8e¦
+  Result := Result + 'Install directory:' + NewLine;
+  if Is64BitInstallMode then begin
+    // x64/x86\82²\82Æ\82É
+    Result := Result + Space + ExpandConstant('x64 = {code:GetTargetDir}') + NewLine;
+    Result := Result + Space + ExpandConstant('x86 = {code:GetTargetDirX86}') + NewLine;
+  end else begin
+    // x86\82Ì\82Ý
+    Result := Result + Space + ExpandConstant('{code:GetTargetDirX86}') + NewLine;
+  end;
+
+  // \91ã\95\PROGID\82ª\95Ï\82í\82ç\82È\82¢\82©\81H
+  if not IsVerEqOrLessThan(ExpandConstant('{#PROGID_VERSION}')) then begin
+    Result := Result + NewLine;
+    Result := Result + '* ' + ExpandConstant('{cm:unchangeDefaultProgID}') + NewLine;
+  end;
+
+  // \8b\8cVersion1.0\82ÌPROGID\82Ì\95â\90³\97L\96³
+  if HasVersion1DLL() then begin
+    Result := Result + NewLine;
+    Result := Result + '* ' + ExpandConstant('{cm:appendVersion1ProgID}') + NewLine;
+  end;
+
+  // \83w\83\8b\83v\83t\83@\83C\83\8b\82Ì\83C\83\93\83X\83g\81[\83\8b\90æ
+  if IsComponentSelected('Help') then begin
+    Result := Result + NewLine;
+    Result := Result + 'Help directory:' + NewLine;
+    Result := Result + Space + ExpandConstant('{code:GetTargetDir}\Help') + NewLine;
+  end;
+
+  // \83T\83\93\83v\83\8b\82Ì\83C\83\93\83X\83g\81[\83\8b\90æ
+  if IsComponentSelected('Samples') then begin
+    Result := Result + NewLine;
+    Result := Result + 'Samples directory:' + NewLine;
+    Result := Result + Space + ExpandConstant('{code:GetTargetDir}\Samples') + NewLine;
+  end;
+end;
+
+// \83y\81[\83W\83X\83L\83b\83v\82Ì\94»\92è
+function ShouldSkipPage(PageID: Integer): Boolean;
+begin
+  if PageID = wpSelectProgramGroup then begin
+    // Help, Samples\82Æ\82à\82É\91I\91ð\82µ\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\83X\83^\81[\83g\83\81\83j\83\85\81[\82ð\8dì\90¬\82µ\82È\82¢\82Ì\82Å\96â\82¢\8d\87\82í\82¹\95s\97v
+    Result := not IsComponentSelected('Help') and not IsComponentSelected('Samples');
+    Exit;
+  end;
+  Result := False;
+end;
+
+// \83C\83\93\83X\83g\81[\83\8b\8aJ\8en\81A\8fI\97¹\82È\82Ç\82Ì\83X\83e\83b\83v\82Å\8cÄ\82Ñ\8fo\82³\82ê\82é
+procedure CurStepChanged(CurStep: TSetupStep);
+begin
+  Log('CurStepChanged(' + IntToStr(Ord(CurStep)) + ') called');
+
+  if CurStep = ssPostInstall then begin
+  end;
+end;
+
+// \83V\83X\83e\83\80\82É\83C\83\93\83X\83g\81[\83\8b\8dÏ\82Ý\82Ì\8c»\8dÝ\82Ì\83o\81[\83W\83\87\83\93\82ð\8eæ\93¾\82µ\81ATrue\82ð\95Ô\82·.
+// \82È\82¯\82ê\82ÎFalse\82ð\95Ô\82·.
+function GetLastVersion(var curver: String): Boolean;
+var
+  key, clsid, clsidEsc, verstr: String;
+  pt: Integer;
+begin
+  clsid := ExpandConstant('{reg:HKLM\SOFTWARE\Classes\' +
+      ExpandConstant('{#REP_PROGID}') + '\CLSID,}');
+  Log('GetLastVersion#clsid=' + clsid);
+  
+  if Length(clsid) > 0 then begin
+    // ExpandConstant\82Å{}\82ª\93W\8aJ\82³\82ê\82È\82¢\82æ\82¤\82É\83G\83X\83P\81[\83v\82·\82é
+    clsidEsc := '{' + clsid;
+    StringChangeEx(clsidEsc, '}', '%7d', False);
+    key := '{reg:HKLM\SOFTWARE\Classes\CLSID\' + clsidEsc + '\Version,}';
+    Log('key=' + key);
+    curver := ExpandConstant(key);
+    Log('GetLastVersion#version=' + curver);
+    if Length(curver) > 0 then begin
+      Result := True;
+      exit;
+    end;
+  end;
+
+  Result := False;
+end;
+
+// \8c»\8dÝ\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82é\83o\81[\83W\83\87\83\93\82Í\88ø\90\94\82Æ\93\99\82µ\82¢\81A\82à\82µ\82­\82Í\8f¬\82³\82¢\82©\81H
+function IsVerEqOrLessThan(ver: String): Boolean;
+var
+  curver: String;
+begin
+  if GetLastVersion(curver) then begin
+    if CompareVersion(curver, ver) > 0 then begin
+      // \83V\83X\83e\83\80\82É\83C\83\93\83X\83g\81[\83\8b\8dÏ\82Ý\82Ì\83o\81[\83W\83\87\83\93\82ª\81Aver\82æ\82è\82à\91å\82«\82¢\8fê\8d\87
+      Result := False;
+      exit;
+    end;
+  end;
+
+  Result := True;
+end;
+
+
+
+[Code]
+function FindPreviousVersionInfo(var progid: String; var clsid: String): Boolean; forward;
+
+// \83A\83\93\83C\83\93\83X\83g\81[\83\8b\8aJ\8en\81A\8fI\97¹\82È\82Ç\82Ì\83X\83e\83b\83v\82Å\8cÄ\82Ñ\8fo\82³\82ê\82é
+procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
+var
+  progid, clsid, curver: String;
+begin
+  Log('CurUninstallStepChanged(' + IntToStr(Ord(CurUninstallStep)) + ') called');
+
+  if CurUninstallStep = usPostUninstall then begin
+    curver := ExpandConstant('{reg:HKLM\SOFTWARE\Classes\' +
+        ExpandConstant('{#REP_PROGID}') + '\CurVer,}');
+    Log('Uninstall#CurrentVersion=' + curver);
+    if curver = ExpandConstant('{#PROGID}') then begin
+      // \83A\83\93\83C\83\93\83X\83g\81[\83\8b\82µ\82½\83o\81[\83W\83\87\83\93\82ª\81A\83V\83X\83e\83\80\8fã\82Ì\91ã\95\\83o\81[\83W\83\87\83\93\82Å\82 \82Á\82½\8fê\8d\87\81A
+      // \82±\82Ì\83o\81[\83W\83\87\83\93\82ð\8fÁ\82µ\82½\82 \82Æ\82Ì\82à\82Á\82Æ\82à\90V\82µ\82¢\91O\82Ì\83o\81[\83W\83\87\83\93\82ª\82Ç\82ê\82©\82ð\8c\9f\8dõ\82·\82é.
+      if FindPreviousVersionInfo(progid, clsid) then begin
+        // \89º\88Ê\82Ì\83o\81[\83W\83\87\83\93\82ª\91\8dÝ\82·\82é\82Ì\82Å\91ã\95\\83o\81[\83W\83\87\83\93\82ð\8f\91\82«\8a·\82¦\82é
+        Log('Version -> Downgrade');
+        RegWriteStringValue(HKEY_LOCAL_MACHINE,
+            ExpandConstant('SOFTWARE\Classes\{#REP_PROGID}\CurVer'), '', progid);
+        RegWriteStringValue(HKEY_LOCAL_MACHINE,
+            ExpandConstant('SOFTWARE\Classes\{#REP_PROGID}\CLSID'), '', clsid);
+      end else begin
+        // \89º\88Ê\82Ì\83o\81[\83W\83\87\83\93\82ª\91\8dÝ\82µ\82È\82¢\82Ì\82ÅPROGID\82»\82Ì\82à\82Ì\82ð\8fÁ\82·
+        Log('Version -> Uninstall');
+        RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE,
+            ExpandConstant('SOFTWARE\Classes\{#REP_PROGID}'));
+      end;
+    end;
+  end;  
+end;
+
+// \8c»\8dÝ\82æ\82è\82à\89º\88Ê\82Ì\83o\81[\83W\83\87\83\93\82ÌPROGID\82ÆCLSID\82ð\8c\9f\8dõ\82µ\81A\8c©\82Â\82©\82Á\82½\8fê\8d\87\82Í\81A\82»\82Ì\92l\82ÆTrue\82ð\95Ô\82·.
+// \82È\82¯\82ê\82ÎFALSE\82ð\95Ô\82·.
+function FindPreviousVersionInfo(var progid: String; var clsid: String): Boolean;
+var
+  idx: Integer;
+  progVersions: TStringList;
+  selver: String;
+begin
+  // \82±\82Ì\83o\81[\83W\83\87\83\93\82ª\94F\8e¯\82µ\82Ä\82¢\82é\81A\89ß\8b\8e\82ÌPROGID\97p\83o\81[\83W\83\87\83\93\82ð\90V\82µ\82¢\8f\87\82É\92è\8b`\82·\82é.
+  // (\96¢\97\88\82Ì\83o\81[\83W\83\87\83\93\82Í\95s\96¾\82È\82½\82ß\8c\9f\8dõ\82Å\82«\82È\82¢)
+  progVersions := TStringList.Create;
+  progVersions.Append('1');
+
+  // \83\8c\83W\83X\83g\83\8a\82É\93o\98^\82ª\82 \82é\82©\8f\87\94Ô\82É\8c\9f\8d¸\82·\82é
+  for idx := 0 to progVersions.Count - 1 do begin
+    progid := ExpandConstant('{#REP_PROGID}') + '.' + progVersions[idx];
+    clsid := ExpandConstant('{reg:HKLM\SOFTWARE\Classes\' + progid + '\CLSID,}');
+    Log('search progid:' + progid + ' /clsid: ' + clsid);
+    if Length(clsid) > 0 then begin
+      // \82±\82Ì\83o\81[\83W\83\87\83\93\82ª\94F\8e¯\82µ\82Ä\82¢\82é\81A\82à\82Á\82Æ\82à\90V\82µ\82¢\89ß\8b\8e\83o\81[\83W\83\87\83\93\82ª\8c©\82Â\82©\82Á\82½\8e\9e\93_\82Å\8fI\97¹\82·\82é
+      Result := True;
+      exit;
+    end;
+  end;
+  Result := False;
+end;
+
diff --git a/help/.gitignore b/help/.gitignore
new file mode 100644 (file)
index 0000000..241f26d
--- /dev/null
@@ -0,0 +1,2 @@
+*.chw
+*.chm
diff --git a/help/SeraphyScriptDialog.hhk b/help/SeraphyScriptDialog.hhk
new file mode 100644 (file)
index 0000000..c5e9fc7
--- /dev/null
@@ -0,0 +1,264 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<UL>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefaultIS">
+               <param name="Local" value="html\DataConvProp.html#DefaultIS">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefaultFS">
+               <param name="Local" value="html\DataConvProp.html#DefaultFS">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefaultTolerance">
+               <param name="Local" value="html\DataConvProp.html#DefaultTolerance">
+               </OBJECT>
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="ProfilePath">
+               <param name="Local" value="html\PreferencesProp.html#ProfilePath">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="ProfileValue">
+               <param name="Local" value="html\PreferencesProp.html#ProfileValue">
+               </OBJECT>
+
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="CreateForm">
+               <param name="Local" value="html\UserFormSynop.html#CreateForm">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="CreateOutputWindow">
+               <param name="Local" value="html\UserFormSynop.html#CreateOutputWindow">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="CreateList">
+               <param name="Local" value="html\UserFormSynop.html#CreateList">
+               </OBJECT>
+
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetOpenFileName">
+               <param name="Local" value="html\CommonDlgMethod.html#GetOpenFileName">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetSaveFileName">
+               <param name="Local" value="html\CommonDlgMethod.html#GetSaveFileName">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="BrowseForFolder">
+               <param name="Local" value="html\CommonDlgMethod.html#BrowseForFolder">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="MessageBox">
+               <param name="Local" value="html\CommonDlgMethod.html#MessageBox">
+               </OBJECT>
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="ShellExecute">
+               <param name="Local" value="html\ShellMethod.html#ShellExecute">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="VersionCheck">
+               <param name="Local" value="html\ShellMethod.html#VersionCheck">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetFileVersion">
+               <param name="Local" value="html\ShellMethod.html#GetFileVersion">
+               </OBJECT>
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetSpecialFolderPath">
+               <param name="Local" value="html\FileMethod.html#GetSpecialFolderPath">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="CreateDirectory">
+               <param name="Local" value="html\FileMethod.html#CreateDirectory">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetTempPath">
+               <param name="Local" value="html\FileMethod.html#GetTempPath">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetTempFileName">
+               <param name="Local" value="html\FileMethod.html#GetTempFileName">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetFileAttributes">
+               <param name="Local" value="html\FileMethod.html#GetFileAttributes">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetFileLastWriteTime">
+               <param name="Local" value="html\FileMethod.html#GetFileLastWriteTime">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetFileCreationTime">
+               <param name="Local" value="html\FileMethod.html#GetFileCreationTime">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="CopyFile">
+               <param name="Local" value="html\FileMethod.html#CopyFile">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="MoveFile">
+               <param name="Local" value="html\FileMethod.html#MoveFile">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="ChangeExtensionName">
+               <param name="Local" value="html\FileMethod.html#ChangeExtensionName">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetLocalPathNameFILE">
+               <param name="Local" value="html\FileMethod.html#GetLocalPathNameFILE">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetFileURL">
+               <param name="Local" value="html\FileMethod.html#GetFileURL">
+               </OBJECT>
+               
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="GetASyncKeyState">
+               <param name="Local" value="html\EventMethod.html#GetASyncKeyState">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DoEvents">
+               <param name="Local" value="html\EventMethod.html#DoEvents">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="Sleep">
+               <param name="Local" value="html\EventMethod.html#Sleep">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="WaitCursor">
+               <param name="Local" value="html\EventMethod.html#WaitCursor">
+               </OBJECT>
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="FloatS">
+               <param name="Local" value="html\DataConvMethod.html#FloatS">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="IntS">
+               <param name="Local" value="html\DataConvMethod.html#IntS">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="IsEqual">
+               <param name="Local" value="html\DataConvMethod.html#IsEqual">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="IsPointEqual">
+               <param name="Local" value="html\DataConvMethod.html#IsPointEqual">
+               </OBJECT>
+
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="FormTitle">
+               <param name="Local" value="html\UserFormProp.html#FormTitle">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="FormPos">
+               <param name="Local" value="html\UserFormProp.html#FormPos">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="FormWidth">
+               <param name="Local" value="html\UserFormProp.html#FormWidth">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="EnableForm">
+               <param name="Local" value="html\UserFormProp.html#EnableForm">
+               </OBJECT>
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="AcceptDropFiles">
+               <param name="Local" value="html\UserFormProp.html#AcceptDropFiles">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DropFiles">
+               <param name="Local" value="html\UserFormProp.html#DropFiles">
+               </OBJECT>
+               
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="Value">
+               <param name="Local" value="html\UserFormProp.html#Value">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="Enable">
+               <param name="Local" value="html\UserFormProp.html#Enable">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="IsModify">
+               <param name="Local" value="html\UserFormProp.html#IsModify">
+               </OBJECT>
+
+               
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="ClearAllControls">
+               <param name="Local" value="html\ClearAllControls.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineLabel">
+               <param name="Local" value="html\DefineLabel.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineEdit">
+               <param name="Local" value="html\DefineEdit.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineEditButton">
+               <param name="Local" value="html\DefineEditButton.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineFileEdit">
+               <param name="Local" value="html\DefineFileEdit.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineButton">
+               <param name="Local" value="html\DefineButton.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineCheckButton">
+               <param name="Local" value="html\DefineCheckButton.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineRadioButton">
+               <param name="Local" value="html\DefineRadioButton.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineComboBox">
+               <param name="Local" value="html\DefineComboBox.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineDropdownList">
+               <param name="Local" value="html\DefineDropdownList.html">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DefineListBox">
+               <param name="Local" value="html\DefineListBox.html">
+               </OBJECT>
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="ExecuteForm">
+               <param name="Local" value="html\ExecuteForm.html">
+               </OBJECT>
+               
+
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="ComposeForm">
+               <param name="Local" value="html\ComposeForm.html#ComposeForm">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="DestroyForm">
+               <param name="Local" value="html\ComposeForm.html#DestroyForm">
+               </OBJECT>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="WaitEvent">
+               <param name="Local" value="html\ComposeForm.html#WaitEvent">
+               </OBJECT>
+
+</UL>
+</BODY></HTML>
diff --git a/help/SeraphyScriptDialog2.hhp b/help/SeraphyScriptDialog2.hhp
new file mode 100644 (file)
index 0000000..86578d8
--- /dev/null
@@ -0,0 +1,50 @@
+[OPTIONS]
+Compatibility=1.1 or later
+Compiled file=SeraphyScriptDialog2.chm
+Contents file=seraphyscriptdialog.hhc
+Default Font=\82l\82\82o\83S\83V\83b\83N,11,128
+Default topic=html\top.html
+Display compile progress=No
+Index file=SeraphyScriptDialog.hhk
+Language=0x411 \93ú\96{\8cê (\93ú\96{)
+Title=SeraphyScriptDialog (ver2.0)
+
+
+[FILES]
+html\top.html
+html\license.html
+html\howtoinstall.html
+html\technote.html
+html\history.html
+html\howtouse.html
+html\ScrDlgRootSynop.html
+html\UserFormSynop.html
+html\OutputWindowSynop.html
+html\ListObjSynop.html
+html\PreferencesProp.html
+html\DataConvProp.html
+html\CommonDlgMethod.html
+html\ShellMethod.html
+html\SystemMethod.html
+html\FileMethod.html
+html\EventMethod.html
+html\DataConvMethod.html
+html\UserFormProp.html
+html\ClearAllControls.html
+html\DefineLabel.html
+html\DefineEdit.html
+html\DefineEditButton.html
+html\DefineFileEdit.html
+html\DefineButton.html
+html\DefineCheckButton.html
+html\DefineRadioButton.html
+html\DefineComboBox.html
+html\DefineDropdownList.html
+html\DefineListBox.html
+html\ExecuteForm.html
+html\ComposeForm.html
+html\wsfref.html
+html\bugs.html
+
+[INFOTYPES]
+
diff --git a/help/buidl.cmd b/help/buidl.cmd
new file mode 100644 (file)
index 0000000..459af11
--- /dev/null
@@ -0,0 +1,2 @@
+"c:\Program Files (x86)\HTML Help Workshop\hhc.exe" SeraphyScriptDialog2.hhp
+pause
diff --git a/help/examplecode/preference.ini b/help/examplecode/preference.ini
new file mode 100644 (file)
index 0000000..0ec4560
--- /dev/null
@@ -0,0 +1,2 @@
+[SeraphyScriptDialogData]
+Message=@@@@@@
diff --git a/help/examplecode/sample_about.wsf b/help/examplecode/sample_about.wsf
new file mode 100644 (file)
index 0000000..fbe9566
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<job>
+   <object id="dlg" progid="SeraphyScriptDialog" />
+   <script language="VBScript">
+   <![CDATA[
+      Option Explicit
+      dim ver
+      ver = dlg.About
+      WScript.Echo "version=" & ver
+   ]]>
+   </script>
+</job>
diff --git a/help/examplecode/sample_button.vbs b/help/examplecode/sample_button.vbs
new file mode 100644 (file)
index 0000000..2631ee3
--- /dev/null
@@ -0,0 +1,8 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim btn1: btn1 = frm.DefineButton("\83R\83}\83\93\83h1;\83R\83}\83\93\83h2;\83R\83}\83\93\83h3", 10)
+Dim btn2: btn2 = frm.DefineButton("\83R\83}\83\93\83h4;\83R\83}\83\93\83h5", 20)
+Dim btn3: btn3 = frm.DefineButton("\83R\83}\83\93\83h6")
+Dim ret: ret = frm.ExecuteForm()
+MsgBox "commandnumber=" & ret
diff --git a/help/examplecode/sample_cd1.vbs b/help/examplecode/sample_cd1.vbs
new file mode 100644 (file)
index 0000000..ab0a2a9
--- /dev/null
@@ -0,0 +1,9 @@
+Dim obj, file
+Set obj = CreateObject("SeraphyScriptDialog")
+file = obj.GetOpenFileName("Foo.txt", "\83e\83L\83X\83g|*.txt|XML|*.xml|")
+If Not IsNull(file) then
+       MsgBox "\91I\91ð\82µ\82½\83t\83@\83C\83\8b=" & file
+Else
+       MsgBox "Cancel\82³\82ê\82Ü\82µ\82½"
+End If
+
diff --git a/help/examplecode/sample_cd2.vbs b/help/examplecode/sample_cd2.vbs
new file mode 100644 (file)
index 0000000..51fd5a8
--- /dev/null
@@ -0,0 +1,9 @@
+Dim obj, file
+Set obj = CreateObject("SeraphyScriptDialog")
+file = obj.GetSaveFileName("Bar.txt", "\83e\83L\83X\83g|*.txt|XML|*.xml|")
+If Not IsNull(file) then
+       MsgBox "\91I\91ð\82µ\82½\83t\83@\83C\83\8b=" & file
+Else
+       MsgBox "Cancel\82³\82ê\82Ü\82µ\82½"
+End If
+
diff --git a/help/examplecode/sample_chkbutton1.vbs b/help/examplecode/sample_chkbutton1.vbs
new file mode 100644 (file)
index 0000000..a999db9
--- /dev/null
@@ -0,0 +1,9 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineCheckButton("\83`\83F\83b\83N1;\83`\83F\83b\83N2;\83`\83F\83b\83N3", "001")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk=" & frm.Value(chk1)
+End If
diff --git a/help/examplecode/sample_chkbutton2.vbs b/help/examplecode/sample_chkbutton2.vbs
new file mode 100644 (file)
index 0000000..f35a7b4
--- /dev/null
@@ -0,0 +1,9 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineCheckButton("\83`\83F\83b\83N1;\83`\83F\83b\83N2;\83`\83F\83b\83N3", "001", 1)
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk=" & frm.Value(chk1)
+End If
diff --git a/help/examplecode/sample_chkbutton3.vbs b/help/examplecode/sample_chkbutton3.vbs
new file mode 100644 (file)
index 0000000..c26e4d0
--- /dev/null
@@ -0,0 +1,11 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineCheckButton("\83`\83F\83b\83N1", 0, 1)
+Dim chk2: chk2 = frm.DefineCheckButton("\83`\83F\83b\83N2", 0, 1)
+Dim chk3: chk3 = frm.DefineCheckButton("\83`\83F\83b\83N3", 1, 1)
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk=" & frm.Value(chk1) & frm.Value(chk2) & frm.Value(chk3)
+End If
diff --git a/help/examplecode/sample_combo.vbs b/help/examplecode/sample_combo.vbs
new file mode 100644 (file)
index 0000000..2ef38d2
--- /dev/null
@@ -0,0 +1,13 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim cbo1: cbo1 = frm.DefineComboBox()
+Dim cbo2: cbo2 = frm.DefineComboBox(,"data2","data1;data2;data3")
+Dim cbo3: cbo3 = frm.DefineComboBox("label3",,"data1a;data2a;data3a")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "cbo1=" & frm.Value(cbo1) & vbCrLf & _
+        "cbo2=" & frm.Value(cbo2) & vbCrLf & _
+        "cbo3=" & frm.Value(cbo3)
+End If
diff --git a/help/examplecode/sample_const.wsf b/help/examplecode/sample_const.wsf
new file mode 100644 (file)
index 0000000..542044e
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<job>
+   <object id="scrdlg" progid="SeraphyScriptDialog" />
+   <reference object="SeraphyScriptDialog"/>
+   <script language="VBScript">
+   <![CDATA[
+      Option Explicit
+      Dim desktopdir
+      desktopdir = scrdlg.GetSpecialFolderPath(FOLDERID_DESKTOPDIRECTORY)
+      WScript.Echo "desktop dir=" & desktopdir
+   ]]>
+   </script>
+</job>
diff --git a/help/examplecode/sample_dropdownlist.vbs b/help/examplecode/sample_dropdownlist.vbs
new file mode 100644 (file)
index 0000000..92e6252
--- /dev/null
@@ -0,0 +1,11 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim cbo1: cbo1 = frm.DefineDropdownList(,1,"data1;data2;data3")
+Dim cbo2: cbo2 = frm.DefineDropdownList("label3",,"data1a;data2a;data3a")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "cbo1=" & frm.Value(cbo1) & vbCrLf & _
+        "cbo2=" & frm.Value(cbo2) & vbCrLf
+End If
diff --git a/help/examplecode/sample_editbox.vbs b/help/examplecode/sample_editbox.vbs
new file mode 100644 (file)
index 0000000..f15453f
--- /dev/null
@@ -0,0 +1,10 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim edt1: edt1 = frm.DefineEdit(, "edt1-value")
+Dim edt2: edt2 = frm.DefineEdit("edt2-title", "edt2-value")
+Dim edt3: edt3 = frm.DefineEdit(,"xx" & vbCrLf& "yy", 5)
+Dim btn1: btn1 = frm.DefineButton("OK")
+If frm.ExecuteForm() = btn1 Then
+    MsgBox frm.Value(edt1) & ":" & frm.Value(edt2) & ":" & frm.Value(edt3)
+End If
diff --git a/help/examplecode/sample_editbtn.vbs b/help/examplecode/sample_editbtn.vbs
new file mode 100644 (file)
index 0000000..d6dadb0
--- /dev/null
@@ -0,0 +1,11 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim edt1: edt1 = frm.DefineEditButton(, "edt1-value","\83{\83^\83\931")
+Dim edt2: edt2 = frm.DefineEditButton("edt2-label:", "edt2-value", "\83{\83^\83\932")
+Dim ret: ret = frm.ExecuteForm()
+If ret = edt1 Then
+    MsgBox frm.Value(edt1)
+ElseIf ret = edt2 Then
+    MsgBox frm.Value(edt2)
+End If
diff --git a/help/examplecode/sample_fileedit.vbs b/help/examplecode/sample_fileedit.vbs
new file mode 100644 (file)
index 0000000..e3a66ab
--- /dev/null
@@ -0,0 +1,10 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim edt1: edt1 = frm.DefineFileEdit(, "edt1-value","\8aJ\82­", 0, "\83e\83L\83X\83g|*.txt")
+Dim edt2: edt2 = frm.DefineFileEdit("edt2-label:", "edt2-value", "\95Û\91¶", 1, "\83f\81[\83^|*.dat")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "Open=" & frm.Value(edt1) & vbCrLf & "Save=" & frm.Value(edt2)
+End If
diff --git a/help/examplecode/sample_label.vbs b/help/examplecode/sample_label.vbs
new file mode 100644 (file)
index 0000000..89b6ec0
--- /dev/null
@@ -0,0 +1,8 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+frm.DefineLabel "\96{\93ú\82Ì\93ú\95t:"
+Dim lbl2: lbl2 = frm.DefineLabel("")
+frm.Value(lbl2) = FormatDateTime(Now, vbLongDate)
+frm.Enable(lbl2) = False
+frm.ExecuteForm()
diff --git a/help/examplecode/sample_listbox.vbs b/help/examplecode/sample_listbox.vbs
new file mode 100644 (file)
index 0000000..36e87e5
--- /dev/null
@@ -0,0 +1,13 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim lst1: lst1 = frm.DefineListBox("a;b;c")
+Dim lst2: lst2 = frm.DefineListBox("abc;def;xyz", 1, 3)
+Dim lst3: lst3 = frm.DefineListBox("\8c\8e;\89Î;\90\85;\96Ø;\8bà;\93y;\93ú", "0;1;2", 7, 1)
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "lst1=" & frm.Value(lst1) & vbCrLf _
+        & "lst2=" & frm.Value(lst2) & vbCrLf _
+        & "lst3=" & frm.Value(lst3)
+End If
diff --git a/help/examplecode/sample_modal.vbs b/help/examplecode/sample_modal.vbs
new file mode 100644 (file)
index 0000000..09f81ee
--- /dev/null
@@ -0,0 +1,26 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+frm.FormTitle = "\83\86\81[\83U\81[\8fî\95ñ\82Ì\93ü\97Í"
+frm.FormWidth = 250
+
+Dim chk1: chk1 = frm.DefineCheckButton("\83j\83b\83N\83l\81[\83\80", 0, 1)
+
+frm.DefineLabel "\90©\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+Dim nEdit1: nEdit1 = frm.DefineEdit()
+
+frm.DefineLabel "\96¼\91O\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+Dim nEdit2: nEdit2 = frm.DefineEdit()
+
+Dim btn1: btn1 = frm.DefineButton("\97¹\89ð;·¬Ý¾Ù")
+
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    Dim name
+    If frm.Value(chk1) <> 0 then
+        name = frm.Value(nEdit2)
+    Else
+        name = frm.Value(nEdit1) & frm.Value(nEdit2)
+    End If
+    MsgBox name
+End If
diff --git a/help/examplecode/sample_modaless.vbs b/help/examplecode/sample_modaless.vbs
new file mode 100644 (file)
index 0000000..bfa3ac9
--- /dev/null
@@ -0,0 +1,48 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+frm.FormTitle = "\83\86\81[\83U\81[\8fî\95ñ\82Ì\93ü\97Í"
+
+Dim chk1: chk1 = frm.DefineCheckButton("\83j\83b\83N\83l\81[\83\80", 0, 1)
+
+frm.DefineLabel "\90©\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+Dim nEdit1: nEdit1 = frm.DefineEdit()
+
+frm.DefineLabel "\96¼\91O\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+Dim nEdit2: nEdit2 = frm.DefineEdit()
+
+Dim btn1: btn1 = frm.DefineButton("\97¹\89ð;·¬Ý¾Ù")
+
+Dim lbl1: lbl1 = frm.DefineLabel("")
+
+dim cnt
+frm.ComposeForm()
+Do
+    cnt = cnt + 1
+    frm.Value(lbl1) = FormatDateTime(Now, vbLongTime) & ":cnt=" & cnt
+
+    Dim ret: ret = frm.WaitEvent(100)
+    If Not IsNull(ret) Then
+        ' \83R\83}\83\93\83h\94Ô\8d\86\82 \82è
+        If ret = btn1 Then
+            ' \97¹\89ð\83{\83^\83\93\89\9f\89º\82©\81H
+            Dim name
+            If frm.Value(chk1) <> 0 then
+                name = frm.Value(nEdit2)
+            Else
+                name = frm.Value(nEdit1) & frm.Value(nEdit2)
+            End If
+            If Len(name) > 0 Then
+                ' \8bó\82Å\82È\82¯\82ê\82Î\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82É\95\\8e¦
+                obj.MessageBox name, "\83\86\81[\83U\96¼", 0
+                Exit Do
+            Else
+                obj.MessageBox "\83\86\81[\83U\96¼\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+            End If
+        Else
+            ' \81~\83{\83^\83\93\82Å\95Â\82\82½\82©\81A\83L\83\83\83\93\83Z\83\8b\83{\83^\83\93\82©\81H
+            Exit Do
+        End If
+    End If
+Loop
+frm.DestroyForm()
diff --git a/help/examplecode/sample_modaless2.vbs b/help/examplecode/sample_modaless2.vbs
new file mode 100644 (file)
index 0000000..7ceba10
--- /dev/null
@@ -0,0 +1,48 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+
+Dim frm1: Set frm1 = obj.CreateForm()
+frm1.FormTitle = "\83t\83H\81[\83\801"
+Dim lbl1: lbl1 = frm1.DefineLabel("")
+Dim btn1: btn1 = frm1.DefineButton("\97¹\89ð1;\8fI\97¹")
+frm1.FormPos = "200,200"
+
+Dim frm2: Set frm2 = obj.CreateForm()
+frm2.FormTitle = "\83t\83H\81[\83\802"
+Dim lbl2: lbl2 = frm2.DefineLabel("")
+Dim btn2: btn2 = frm2.DefineButton("\97¹\89ð2")
+frm2.FormPos = "200,300"
+
+dim cnt
+
+frm1.ComposeForm()
+frm2.ComposeForm()
+
+Do
+    cnt = cnt + 1
+    frm1.Value(lbl1) = "cnt=" & cnt
+    frm2.Value(lbl2) = "cnt=" & cnt
+
+    ' \83R\83}\83\93\83h\82ª\94­\90\82µ\82Ä\82¢\82ê\82Î\8eó\82¯\8eæ\82é
+    Dim ret1: ret1 = frm1.WaitEvent()
+    If Not IsNull(ret1) Then
+        If ret1 = btn1 + 1 Or ret1 = -1 Then
+            ' \8fI\97¹\83{\83^\83\93\82à\82µ\82­\82Í\81~\83{\83^\83\93\82Ì\8fê\8d\87
+            Exit Do
+        Else
+               MsgBox "frm1=" & ret1
+        End If
+    End If
+
+    ' \83R\83}\83\93\83h\82ª\94­\90\82µ\82Ä\82¢\82ê\82Î\8eó\82¯\8eæ\82é
+    Dim ret2: ret2 = frm2.WaitEvent()
+    If Not IsNull(ret2) Then
+        MsgBox "frm2=" & ret2
+    End If
+
+    ' \93ñ\82Â\82Ì\83t\83H\81[\83\80\82Ì\83\81\83b\83Z\81[\83W\82ð\88ê\8a\87\8f\88\97\9d\82·\82é
+    obj.DoEvents 100
+Loop
+
+frm1.DestroyForm()
+frm2.DestroyForm()
diff --git a/help/examplecode/sample_outputwnd.vbs b/help/examplecode/sample_outputwnd.vbs
new file mode 100644 (file)
index 0000000..2684b3b
--- /dev/null
@@ -0,0 +1,12 @@
+Dim obj, wnd, cnt
+Set obj = CreateObject("SeraphyScriptDialog")
+Set wnd = obj.CreateOutputWindow()
+wnd.Visible = true
+cnt = 0
+Do While(cnt < 100)
+  cnt = cnt + 1
+  wnd.Text = "\8f\88\97\9d\8dH\92ö\90\94" & cnt & "/100"
+  obj.DoEvents
+  obj.Sleep(100)
+Loop
+MsgBox "ok"
diff --git a/help/examplecode/sample_profilevalue.vbs b/help/examplecode/sample_profilevalue.vbs
new file mode 100644 (file)
index 0000000..ca54fd9
--- /dev/null
@@ -0,0 +1,10 @@
+Dim obj
+Set obj = CreateObject("SeraphyScriptDialog")
+
+Dim msg
+msg = obj.ProfileValue("Message")
+
+MsgBox msg
+
+obj.ProfileValue("Message") = msg & "@"
+
diff --git a/help/examplecode/sample_radiobutton1.vbs b/help/examplecode/sample_radiobutton1.vbs
new file mode 100644 (file)
index 0000000..81f51f6
--- /dev/null
@@ -0,0 +1,10 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineRadioButton("\83\89\83W\83I1;\83\89\83W\83I2;\83\89\83W\83I3", 0)
+Dim chk2: chk2 = frm.DefineRadioButton("\83\89\83W\83Ia;\83\89\83W\83Ib")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk1=" & frm.Value(chk1) & vbCrLf & "chk2=" & frm.Value(chk2)
+End If
diff --git a/help/examplecode/sample_radiobutton2.vbs b/help/examplecode/sample_radiobutton2.vbs
new file mode 100644 (file)
index 0000000..53b3dc0
--- /dev/null
@@ -0,0 +1,11 @@
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineRadioButton("\83\89\83W\83I1;\83\89\83W\83I2;\83\89\83W\83I3", 0, 1)
+frm.DefineLabel ""
+Dim chk2: chk2 = frm.DefineRadioButton("\83\89\83W\83Ia;\83\89\83W\83Ib",,1)
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk1=" & frm.Value(chk1) & vbCrLf & "chk2=" & frm.Value(chk2)
+End If
diff --git a/help/html/ClearAllControls.html b/help/html/ClearAllControls.html
new file mode 100644 (file)
index 0000000..e7192a3
--- /dev/null
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/ClearAllControls</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+        <h3><a name="ClearAllControls">ClearAllControls</a></h3>
+        <p>\83\86\81[\83U\81[\92è\8b`\83_\83C\83A\83\8d\83O\82É\90Ý\92è\82³\82ê\82½\83R\83\93\83g\83\8d\81[\83\8b\92è\8b`\82ð\83\8a\83Z\83b\83g\82µ\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>\92Ê\8fí\81A\8eg\82í\82ê\82Ü\82¹\82ñ\81B</p>
+        <p>\83t\83H\81[\83\80\82Ì\92è\8b`\82Í\81AExecuteForm\83\81\83\\83b\83h\82ð\8cÄ\82Ñ\8fo\82µ\82½\82 \82Æ\82à\81A\96¾\8e¦\93I\82É\83R\83\93\83g\83\8d\81[\83\8b\82ð\95Ï\8dX\82µ\82È\82¢\82©\82¬\82è\92è\8b`\8fó\91Ô\82Í\95Ï\82í\82è\82Ü\82¹\82ñ\81B</p>
+        <p>\8dÄ\93xExecuteForm\83\81\83\\83b\83h\82ð\8cÄ\82Ñ\8fo\82·\82±\82Æ\82ª\89Â\94\\82Å\82·\81B</p>
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/CommonDlgMethod.html b/help/html/CommonDlgMethod.html
new file mode 100644 (file)
index 0000000..9e57327
--- /dev/null
@@ -0,0 +1,160 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\83\81\83\\83b\83h\81^\83R\83\82\83\93\83_\83C\83A\83\8d\83O\8aÖ\98A</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>SeraphyScriptDialog\83\81\83\\83b\83h\81^\83R\83\82\83\93\83_\83C\83A\83\8d\83O\8aÖ\98A</h2>
+        <h3><a name="GetOpenFileName">Variant GetOpenFileName(Variant initname, Variant filter, Variant initdir)</a></h3>
+        <p>\81u\83t\83@\83C\83\8b\82ð\8aJ\82­\81v\83_\83C\83A\83\8d\83O</p>
+
+        <h4>\88ø\90\94</h4>
+        <p>\88ø\90\94\82Í\82¢\82¸\82ê\82à\8fÈ\97ª\89Â\94\\81B</p>
+        
+        <div class="argsdesc">
+            <dl>
+                <dt>Initname</dt>
+                <dd>\8dÅ\8f\89\82É\95\\8e¦\82·\82é\83t\83@\83C\83\8b\96¼<br />
+                \96¢\8ew\92è\82Å\82 \82ê\82Î\8bó\82Æ\82È\82é\81B</dd>
+            </dl>
+            <dl>
+                <dt>Filter</dt>
+                <dd>
+                    \8ag\92£\8eq\83t\83B\83\8b\83^<br />
+                    \81u\83e\83L\83X\83g\83t\83@\83C\83\8b|*.TXT|\83\8f\81[\83h\95\8f\91|*.DOC\81v\82Ì\82æ\82¤\82É\8bæ\90Ø\82é\81B<br />
+                    \81u\82·\82×\82Ä\82Ì\83t\83@\83C\83\8b\81v\82Í\8e©\93®\93I\82É\95\\8e¦\82³\82ê\82é\81B<br />
+                    \8dÅ\8f\89\82Ì\8ag\92£\8eq\82ª\95W\8f\80\82Ì\8ag\92£\8eq\82Æ\82³\82ê\82é\81B<br />
+                    \96¢\8ew\92è\82Å\82 \82ê\82Î\95W\8f\80\82Ì\8ag\92£\8eq\82Í\96³\82µ\81A\83t\83B\83\8b\83^\82Í\81u\82·\82×\82Ä\82Ì\83t\83@\83C\83\8b\81v\82Ì\82Ý\82Æ\82È\82é\81B
+                </dd>
+            </dl>
+
+            <dl>
+                <dt>Initdir</dt>
+                <dd>\8f\89\8aú\83f\83B\83\8c\83N\83g\83\8a<br />
+                <a href="bugs.html">\81¦ Version2.0\82Í\8cø\89Ê\82È\82µ(bug)</a>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83t\83@\83C\83\8b\82ð\8ew\92è\82¹\82¸\82É\83L\83\83\83\93\83Z\83\8b\82µ\82½\8fê\8d\87\81ANULL\82ª\95Ô\82é\81B</p>
+        <p>\82»\82¤\82Å\82È\82¯\82ê\82Î\91I\91ð\82µ\82½\83p\83X\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\83T\83\93\83v\83\8b</h4>
+        <code><pre class="codeexample">
+Dim obj, file
+Set obj = CreateObject("SeraphyScriptDialog")
+file = obj.GetOpenFileName("Foo.txt", "\83e\83L\83X\83g|*.txt|XML|*.xml|")
+If Not IsNull(file) then
+    MsgBox "\91I\91ð\82µ\82½\83t\83@\83C\83\8b=" &amp; file
+Else
+    MsgBox "Cancel\82³\82ê\82Ü\82µ\82½"
+End If
+</pre></code>
+
+        <h3><a name="GetSaveFileName">VARIANT GetSaveFileName(Variant initname, Variant filter, Variant initdir)</a></h3>
+
+        <p>\81u\96¼\91O\82ð\82Â\82¯\82Ä\95Û\91\81v\83_\83C\83A\83\8d\83O</p>
+        <p>\8ew\92è\95û\96@\82ÍGetOpenFileName\82Æ\93¯\88ê\82Å\82·\81B</p>
+
+        <h4>\83T\83\93\83v\83\8b</h4>
+        <code>
+            <pre class="codeexample">
+Dim obj, file
+Set obj = CreateObject("SeraphyScriptDialog")
+file = obj.GetSaveFileName("Foo.txt", "\83e\83L\83X\83g|*.txt|XML|*.xml|")
+If Not IsNull(file) then
+    MsgBox "\91I\91ð\82µ\82½\83t\83@\83C\83\8b=" &amp; file
+Else
+    MsgBox "Cancel\82³\82ê\82Ü\82µ\82½"
+End If
+</pre>
+        </code>
+
+        <h3><a name="BrowseForFolder">Variant BrowseForFolder(Variant startdir)</a></h3>
+        <p>\81u\83t\83H\83\8b\83_\82ð\91I\91ð\81v\83_\83C\83A\83\8d\83O</p>
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>startdir</dt>
+                <dd>\8dÅ\8f\89\82É\91I\91ð\82³\82ê\82Ä\82¢\82é\83f\83B\83\8c\83N\83g\83\8a\82ð\8e¦\82µ\82Ü\82·\81B<br />
+                \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ª\8ew\92è\82³\82ê\82½\82Æ\82Ý\82È\82µ\82Ü\82·\81B
+                </dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\91I\91ð\82³\82ê\82¸\83L\83\83\83\93\83Z\83\8b\82³\82ê\82½\8fê\8d\87\82ÍNULL\81B</p>
+        <p>\83t\83H\83\8b\83_\82ª\91I\91ð\82³\82ê\82n\82j\82³\82ê\82½\8fê\8d\87\82Í\83p\83X\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+
+        <h3><a name="MessageBox">Short  MessageBox(BSTR mes, Variant title, Variant type)</a></h3>
+        <p>\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82ð\95\\8e¦\82µ\82Ü\82·\81B</p>
+        <p>\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82Í\83^\83X\83N\83\82\81[\83_\83\8b\82Å\83t\83H\83A\83O\83\89\83\93\83h\82É\95\\8e¦\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>mes</dt>
+                <dd>
+                    \95\\8e¦\82·\82é\83\81\83b\83Z\81[\83W\82ð\8ew\92è\82µ\82Ü\82·\81B\95K\90{\82Å\82·\81B
+                </dd>
+            </dl>
+
+            <dl>
+                <dt>Title</dt>
+                <dd>
+                    \83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82Ì\83^\83C\83g\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
+                    \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\81u\83G\83\89\81[\81v\82Æ\95\\8e¦\82³\82ê\82Ü\82·\81B
+                </dd>
+            </dl>
+
+            <dl>
+                <dt>type</dt>
+                <dd>
+                    \83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82Ì\83A\83C\83R\83\93\82¨\82æ\82Ñ\83{\83^\83\93\82Ì\8eí\97Þ\82Ì\91g\82Ý\8d\87\82í\82¹\82ð\90®\90\94\82Å\8ew\92è\82µ\82Ü\82·\81B<br />
+                    \88È\89º\82Ì\90à\96¾\82Ì\91g\82Ý\8d\87\82í\82¹\82ª\82Å\82«\82Ü\82·\81B<br />
+                    \8fÈ\97ª\82·\82é\82Æ\83G\83\89\81[\83A\83C\83R\83\93\82ÆOK\83{\83^\83\93\82Ì\91g\82Ý\8d\87\82í\82¹\82Æ\82È\82è\82Ü\82·\81B
+                </dd>
+            </dl>
+        </div>
+
+        <p>Type\82É\82æ\82Á\82Ä\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82Ì\83A\83C\83R\83\93\82Æ\83^\83C\83v\82ð\90Ý\92è\82Å\82«\82Ü\82·\81B</p>
+        <p>\88È\89º\82Ì\83\82\81[\83h\82Æ\83A\83C\83R\83\93\82Ì\92è\90\94\82Ì\91g\82Ý\8d\87\82í\82¹(\91«\82µ\8eZ)\82ð\8ew\92è\82Å\82«\82Ü\82·\81B</p>
+        <pre>
+    const MESSAGEBOXMODE_OK = 0 ' OK
+    const MESSAGEBOXMODE_OKCANCEL = 1 ' OK or CANCEL
+    const MESSAGEBOXMODE_YESNO = 2 ' YES or NO
+    const MESSAGEBOXMODE_YESNOCANCEL = 3 ' YES or NO or CANCEL
+    const MESSAGEBOXMODE_RETRYCANCEL = 4 ' RETRY or CANCEL
+    const MESSAGEBOXMODE_ABORTRETRYIGNORE = 5 ' ABORT or RETRY or IGNORE
+
+    const MESSAGEBOXICON_NORMAL = 0 ' NORMAL ICON
+    const MESSAGEBOXICON_ERROR = 10 ' ERROR ICON
+    const MESSAGEBOXICON_INFORMATION = 20 ' INFORMATION ICON
+    const MESSAGEBOXICON_QUESTION = 30 ' QUESTION ICON
+</pre>
+        <p>\81¦ wsf\83t\83@\83C\83\8b\82Å<a href="wsfref.html">reference\82É\82æ\82é\83^\83C\83v\83\89\83C\83u\83\8a\82ð\8ew\92è</a>\82µ\82Ä\82¢\82é\8fê\8d\87\82Í\81A\8fã\8bL\92è\90\94\96¼\82Å\92l\82ð\8eQ\8fÆ\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\96ß\82è\92l\82Í\81AYES/OK/RETRY\82ª1\81B</p>
+        <p>NO/IGNORE\82ª0</p>
+        <p>CANCEL/ABORT\82ª-1\82Æ\82È\82è\82Ü\82·\81B</p>
+</div>
+</div>
+</body>
+</html>
+
+
diff --git a/help/html/ComposeForm.html b/help/html/ComposeForm.html
new file mode 100644 (file)
index 0000000..dd7e2f6
--- /dev/null
@@ -0,0 +1,219 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+      <div id="main">
+          <h2>UserForm\83\81\83\\83b\83h\81^\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O</h2>
+
+          <h3><a name="ComposeForm">Short ComposeForm</a></h3>
+          <p>\83\82\81[\83h\83\8c\83X\81E\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82µ\82Ü\82·\81B</p>
+
+          <h4>\96ß\82è\92l</h4>
+          <p>\90¬\8c÷\82µ\82½\8fê\8d\87\82Í0\88È\8aO\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+          <p>\82È\82¨\81A\8b\8cVersion1.0\82Å\82Í\83t\83H\81[\83\80\82ª\82·\82Å\82É\95\\8e¦\82³\82ê\82Ä\82¢\82é\8fê\8d\87\82Í0\82ð\95Ô\82µ\82Ü\82µ\82½\82ª\81A
+          Version2.0\82Å\82Í\83G\83\89\81[\82Æ\82È\82è\82Ü\82·\81B</p>
+
+          <h4>\94õ\8dl</h4>
+          <p>\83t\83H\81[\83\80\82ª\82·\82Å\82É\95\\8e¦\82³\82ê\82Ä\82¢\82Ä\82Í\82È\82è\82Ü\82¹\82ñ\81B</p>
+          <p>\8eÀ\8dÛ\82É\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O\82ð\8b@\94\\82³\82¹\82é\82É\82Í\81A<code>WaitEvent</code>\83\81\83\\83b\83h\82ð\8cJ\82è\95Ô\82µ\8cÄ\82Ñ\8fo\82·\95K\97v\82ª\82 \82è\82Ü\82·\81B</p>
+
+          <h3><a name="DestroyForm">DestroyForm</a></h3>
+          <p>\83\82\81[\83h\83\8c\83X\81E\83_\83C\83A\83\8d\83O\82ð\8fI\97¹\82µ\82Ü\82·\81B</p>
+
+          <h4>\94õ\8dl</h4>
+          <p>\83t\83H\81[\83\80\82ª\82·\82Å\82É\95\\8e¦\82³\82ê\82Ä\82¢\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B</p>
+
+
+          <h3><a name="WaitEvent">Short WaitEvent(Variant timeout)</a></h3>
+          <p>\83\82\81[\83h\83\8c\83X\81E\83_\83C\83A\83\8d\83O\97p\83C\83x\83\93\83g\83\8b\81[\83v\82ð\8f\88\97\9d\82µ\82Ü\82·\81B</p>
+
+          <h4>\88ø\90\94</h4>
+          <p>timeout\82Í10mSec\92P\88Ê\82Ì\91Ò\82¿\8e\9e\8aÔ\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
+          <p>\8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\91Ò\82¿\8e\9e\8aÔ\82È\82µ\82Æ\82È\82è\82Ü\82·\81B</p>
+          <p>\8ew\92è\82µ\82½\8e\9e\8aÔ\82ª\8co\89ß\82·\82é\82©\81A\89½\82ç\82©\82Ì\83R\83}\83\93\83h\94Ô\8d\86\82ª\94­\90\82·\82é\82Æ\90§\8cä\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+          <h4>\96ß\82è\92l</h4>
+          <p>\89½\82ç\82©\82Ì\83R\83}\83\93\83h\94Ô\8d\86\82ª\94­\90\82µ\82½\8fê\8d\87\82Í\81A\91Ò\82¿\8e\9e\8aÔ\82ð\91Ò\82½\82¸\81A\82»\82Ì\83R\83}\83\93\83h\94Ô\8d\86\82ð\92¼\82¿\82É\95Ô\82µ\82Ü\82·\81B</p>
+          <p>\82»\82¤\82Å\82È\82¢\8fê\8d\87\82Í\91Ò\82¿\8e\9e\8aÔ\82ð\8co\89ß\8cã\81ANULL\82ð\95Ô\82µ\82Ü\82·\81B</p>
+
+
+          <h4>\94õ\8dl</h4>
+          <p>\83o\83b\83N\83O\83\89\83E\83\93\83h\82Å\89½\82©\8f\88\97\9d\82ð\82µ\82½\82¢\8fê\8d\87\82Ítimeout\92l\82É\82Í\8f¬\82³\82È\92l\82ð\8ew\92è\82µ\83\8b\81[\83v\92\86\82Å\8f\88\97\9d\82ð\8ds\82¢\82Ü\82·\81B</p>
+
+          <p>\83t\83H\81[\83\80\82Ì\83C\83x\83\93\83g\82ð\91Ò\82Â\82¾\82¯\82È\82ç\91å\82«\82È\92l\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
+
+          <p>\83C\83x\83\93\83g\82Í\83{\83^\83\93\82â\83E\83B\83\93\83h\83E\82ð\95Â\82\82é\8fê\8d\87\82Í\83\82\81[\83_\83\8b\81E\83_\83C\83A\83\8d\83O\82Ì\8fê\8d\87\82Æ\93¯\97l\82È\96ß\82è\92l\82ª\95Ô\82è\82Ü\82·\81B</p>
+
+          <p><del>\82»\82Ì\82Ù\82©\82É\81A\83`\83F\83b\83N\83{\83^\83\93\82â\83\89\83W\83I\83{\83^\83\93\81A\83\8a\83X\83g\83{\83b\83N\83X\82ª\91\80\8dì\82³\82ê\82½\8fê\8d\87\82É\82Í\81A\82»\82Ì\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82è\82Ü\82·\81B</del>
+              <a href="bugs.html">(\81¦ Version2.0\82Å\82Í\83C\83x\83\93\83g\82Í\94­\90\82µ\82Ü\82¹\82ñ\81B)</a></p>
+
+          <p>\83C\83x\83\93\83g\82ª\82È\82¯\82ê\82ÎNULL\82ª\95Ô\82è\82Ü\82·\81B</p>
+
+          <p style="margin-top: 1em;">SeraphyScriptDialog\83I\83u\83W\83F\83N\83g\82Ì\8aî\96{\83N\83\89\83X\82ÌDoEvents\82Æ\93¯\93\99\82È\8b@\94\\82ð\89Ê\82½\82µ\82Ü\82·\82ª\81A
+          \83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O\82Ì\83C\83x\83\93\83g\82ð\8eó\82¯\8eæ\82é\8fê\8d\87\82Í\81A\82±\82¿\82ç\82ð\8eg\82Á\82Ä\82­\82¾\82³\82¢\81B</p>
+
+
+          <h4>\92\8d\88Ó</h4>
+          <p>
+              \83X\83N\83\8a\83v\83g\82ª\8eÀ\8ds\82³\82ê\82Ä\82¢\82é\93¯\88ê\83X\83\8c\83b\83h\8fã\82Å\83X\83N\83\8a\83v\83g\88È\8aO\82É\82æ\82Á\82Ä\8aÇ\97\9d\82³\82ê\82Ä\82¢\82é\83E\83B\83\93\83h\83E\82ª\82 \82é\8fê\8d\87\81A
+              \96{\83\81\83\\83b\83h\82É\82æ\82è\81A\82»\82ê\82ç\82Ì\83X\83\8c\83b\83h\83\81\83b\83Z\81[\83W\82à\82Ü\82Æ\82ß\82Ä\8f\88\97\9d\82³\82ê\82Ü\82·\81B
+          </p>
+          <p>
+              \82»\82Ì\8c\8b\89Ê\82Æ\82µ\82Ä\81A\83X\83N\83\8a\83v\83g\82Ì\8a®\97¹\82ð\91Ò\82½\82¸\82É\83{\83^\83\93\82â\83\81\83j\83\85\81[\82È\82Ç\82ª\91\80\8dì\81A\8eÀ\8ds\82³\82ê\82¤\82é\82Ì\82Å\81A\8fó\8bµ\82É\82æ\82è\81A
+              \8b[\8e\97\93I\82È\83}\83\8b\83`\83X\83\8c\83b\83h\93I\82È\93®\8dì\82Æ\82È\82é\8fê\8d\87\82ª\82 \82è\81A\82»\82Ì\95\9b\8dì\97p\82É\82Í\92\8d\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B
+          </p>
+
+          <h3>\83\82\81[\83h\83\8c\83X\82Ì\97á</h3>
+
+          <h4>\83\\81[\83X\83R\81[\83h</h4>
+
+          <code>
+              <pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+frm.FormTitle = "\83\86\81[\83U\81[\8fî\95ñ\82Ì\93ü\97Í"
+
+frm.DefineLabel "\90©\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+Dim nEdit1: nEdit1 = frm.DefineEdit()
+frm.DefineLabel "\96¼\91O\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+Dim nEdit2: nEdit2 = frm.DefineEdit()
+
+Dim btn1: btn1 = frm.DefineButton("\97¹\89ð;·¬Ý¾Ù")
+
+Dim lbl1: lbl1 = frm.DefineLabel("")
+frm.Enable(lbl1) = False
+
+dim cnt
+<b>frm.ComposeForm()</b>
+Do
+    cnt = cnt + 1
+    frm.Value(lbl1) = FormatDateTime(Now, vbLongTime) &amp; ":cnt=" &amp; cnt
+
+    <b>Dim ret: ret = frm.WaitEvent(100)</b>
+    If Not IsNull(ret) Then
+        <span style="color: green">' \83R\83}\83\93\83h\94Ô\8d\86\82 \82è</span>
+        If ret = btn1 Then
+            <span style="color: green">' \97¹\89ð\83{\83^\83\93\89\9f\89º\82©\81H</span>
+            Dim name
+            name = frm.Value(nEdit1) &amp; frm.Value(nEdit2)
+            If Len(name) > 0 Then
+                <span style="color: green">' \8bó\82Å\82È\82¯\82ê\82Î\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82É\95\\8e¦</span>
+                obj.MessageBox name, "\83\86\81[\83U\96¼", 0
+                Exit Do
+            Else
+                obj.MessageBox "\83\86\81[\83U\96¼\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+            End If
+        Else
+            <span style="color: green">' \81~\83{\83^\83\93\82Å\95Â\82\82½\82©\81A\83L\83\83\83\93\83Z\83\8b\83{\83^\83\93\82©\81H</span>
+            Exit Do
+        End If
+    End If
+Loop
+<b>frm.DestroyForm()</b>
+</pre>
+          </code>
+      </div>
+
+      <h4>\8eÀ\8ds\8c\8b\89Ê</h4>
+
+      <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+          <img src="sample_modaless.png"><br />
+          <span style="font-size: 80%; color: gray;">\97á: \83\82\81[\83h\83\8c\83X\82Ì\97á</span>
+      </div>
+
+      <h4>\89ð\90à</h4>
+      <p>\83t\83H\81[\83\80\8fã\82ÉDefineButton\83\81\83\\83b\83h\82É\82æ\82è2\8cÂ\82Ì\83{\83^\83\93\82ð\92è\8b`\82µ\82Ä\82¢\82Ü\82·\81B</p>
+      <p>\96¾\8e¦\93I\82Écommandnumber\82ð\8ew\92è\82µ\82È\82¢\8fê\8d\87\81A\8dÅ\8f\89\82Ì\83{\83^\83\93\82Ìcommandnumber\82Í\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82Æ\93¯\82\82Å\82·\81B</p>
+      <p>\82»\82Ì\82½\82ß\81A\81u\97¹\89ð\81v\83{\83^\83\93\82ª\89\9f\82³\82ê\82½\8fê\8d\87\82Ì\82Ý\81A\83G\83f\83B\83b\83g\83{\83b\83N\83X1,2\82Ì\93à\97e\82ð\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82É\95\\8e¦\82µ\82Ä\82¢\82Ü\82·\81B</p>
+      <p style="margin-top: 1em;">ESC\83L\81[\81A\82 \82é\82¢\82Í\81~\83{\83^\83\93\82É\82æ\82è\83E\83B\83\93\83h\83E\82ð\95Â\82\82é\82©\81A\82 \82é\82¢\82Í\83L\83\83\83\93\83Z\83\8b\83{\83^\83\93\82ð\89\9f\89º\82µ\82½\8fê\8d\87\82Í\96³\8e\8b\82µ\82Ä\82¢\82Ü\82·\81B</p>
+      <p style="margin-top: 1em;">\83\82\81[\83h\83\8c\83X\82Å\82Í\83R\83}\83\93\83h\83{\83^\83\93\82ª\89\9f\89º\82³\82ê\82È\82­\82ÄWaitEvent\83\81\83\\83b\83h\82Ì\90§\8cä\82ª\95Ô\82é\82½\82ß\81A\83E\83B\83\93\83h\83E\82ð\95Â\82\82é\82×\82«\82Æ\94»\92f\82Å\82«\82é\82Ü\82Å\83\8b\81[\83v\82Å\8cJ\82è\95Ô\82µ\8cÄ\82Ñ\8fo\82·\95K\97v\82ª\82 \82è\82Ü\82·\81B</p>
+      <p style="margin-top: 1em;">\83\8b\81[\83v\82µ\82Ä\82¢\82é\82±\82Æ\82ª\8e\8b\8ao\93I\82É\82í\82©\82é\82æ\82¤\82É\83t\83H\81[\83\80\82Ì\89º\82É\8c»\8dÝ\8e\9e\8d\8f\82Æ\83\8b\81[\83v\89ñ\90\94\82ð\8e¦\82·\83\89\83x\83\8b\82ð\90Ý\92u\82µ\82Ä\82¢\82Ü\82·\81B</p>
+      <p style="margin-top: 1em;">\83{\83^\83\93\82Ì\83C\83x\83\93\83g\82ð\94»\92è\82·\82é\8e\9e\93_\82Å\82Í\81A\82Ü\82¾\83t\83H\81[\83\80\82Í\95Â\82\82ç\82ê\82Ä\82¢\82È\82¢\82½\82ß\81A\83t\83H\81[\83\80\82ð\95\\8e¦\82µ\82½\82Ü\82Ü\81A\83e\83L\83X\83g\83{\83b\83N\83X\82Ì\92\86\90g\82ð\8c\9f\8fØ\82µ\82Ä\83G\83\89\81[\82ð\95\\8e¦\82·\82é\81A\82È\82Ç\82Ì\93®\8dì\82ª\82Å\82«\82Ü\82·\81B</p>
+
+    <h3>2\82Â\82Ì\83\82\81[\83h\83\8c\83X\82Ì\97á</h3>
+      <h4>\83\\81[\83X\83R\81[\83h</h4>
+      <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+
+Dim frm1: Set frm1 = obj.CreateForm()
+frm1.FormTitle = "\83t\83H\81[\83\801"
+Dim lbl1: lbl1 = frm1.DefineLabel("")
+Dim btn1: btn1 = frm1.DefineButton("\97¹\89ð1;\8fI\97¹")
+frm1.FormPos = "200,200"
+
+Dim frm2: Set frm2 = obj.CreateForm()
+frm2.FormTitle = "\83t\83H\81[\83\802"
+Dim lbl2: lbl2 = frm2.DefineLabel("")
+Dim btn2: btn2 = frm2.DefineButton("\97¹\89ð2")
+frm2.FormPos = "200,300"
+
+dim cnt
+
+frm1.ComposeForm()
+frm2.ComposeForm()
+
+Do
+    cnt = cnt + 1
+    frm1.Value(lbl1) = "cnt=" &amp; cnt
+    frm2.Value(lbl2) = "cnt=" &amp; cnt
+
+    <span style="color: green">' \83R\83}\83\93\83h\82ª\94­\90\82µ\82Ä\82¢\82ê\82Î\8eó\82¯\8eæ\82é</span>
+    Dim ret1: ret1 = frm1.WaitEvent()
+    If Not IsNull(ret1) Then
+        If ret1 = btn1 + 1 Or ret1 = -1 Then
+            <span style="color: green">' \8fI\97¹\83{\83^\83\93\82à\82µ\82­\82Í\81~\83{\83^\83\93\82Ì\8fê\8d\87</span>
+            Exit Do
+        Else
+               MsgBox "frm1=" &amp; ret1
+        End If
+    End If
+
+    <span style="color: green">' \83R\83}\83\93\83h\82ª\94­\90\82µ\82Ä\82¢\82ê\82Î\8eó\82¯\8eæ\82é</span>
+    Dim ret2: ret2 = frm2.WaitEvent()
+    If Not IsNull(ret2) Then
+        MsgBox "frm2=" &amp; ret2
+    End If
+
+    <span style="color: green">' \93ñ\82Â\82Ì\83t\83H\81[\83\80\82Ì\83\81\83b\83Z\81[\83W\82ð\88ê\8a\87\8f\88\97\9d\82·\82é</span>
+    obj.DoEvents 100
+Loop
+
+frm1.DestroyForm()
+frm2.DestroyForm()
+</pre></code>
+
+      <h4>\8eÀ\8ds\8c\8b\89Ê</h4>
+
+      <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+          <img src="sample_modaless2.png"><br />
+          <span style="font-size: 80%; color: gray;">\97á: 2\82Â\82Ì\83\82\81[\83h\83\8c\83X\82Ì\97á</span>
+      </div>
+
+      <h4>\89ð\90à</h4>
+      <p>\93¯\8e\9e\82É2\82Â\88È\8fã\82Ì\83\82\81[\83h\83\8c\83X\82ð\91\80\8dì\82·\82é\8fê\8d\87\81A\82»\82ê\82¼\82ê\82Ì\83C\83x\83\93\83g\82Í\83t\83H\81[\83\80\82É\91Î\82·\82éWaitEvent\83\81\83\\83b\83h\82Å\8eæ\93¾\82Å\82«\82Ü\82·\81B</p>
+      <p>\82½\82¾\82µ\91Ò\82¿\8e\9e\8aÔ\82ð\8ew\92è\82·\82é\82Æ\83\8c\83X\83|\83\93\83X\82ª\88«\82­\82È\82é\82½\82ß\81AWaitEvent\82Ì\91Ò\8b@\8e\9e\8aÔ\82Í\83[\83\8d\82É\82µ\82Ü\82·\81B</p>
+      <p>\82©\82í\82è\82É\81ADoEvents\83\81\83\\83b\83h\82ð\8eg\82¢\83\81\83b\83Z\81[\83W\8f\88\97\9d\82ð\88ê\8a\87\82Å\8ds\82í\82¹\82Ü\82·\81B</p>
+      <p>\83E\83B\83\93\83h\83E\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82é\82©\82¬\82è\83\81\83b\83Z\81[\83W\8f\88\97\9d\82Í\90\8f\8e\9e\95K\97v\82Æ\82³\82ê\82é\82½\82ß\81A\92Ê\8fí\81A
+      DoEvent\82É\8ew\92è\82µ\82½\91Ò\8b@\8e\9e\8aÔ\82æ\82è\82à\91\81\82­\91Ò\8b@\89ð\8f\9c\82³\82ê\82Ü\82·\82ª\81A\91Ò\8b@\82ð\8ew\92è\82µ\82È\82¢\82æ\82è\82Í\96³\91Ê\82È\8f\88\97\9d\82Í\8f­\82È\82­\82È\82è\82Ü\82·\81B</p>
+  </div>
+
+</body>
+</html>
+
+
diff --git a/help/html/DataConvMethod.html b/help/html/DataConvMethod.html
new file mode 100644 (file)
index 0000000..b365893
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\83\81\83\\83b\83h\81^\83f\81[\83^\95Ï\8a·\8aÖ\98A</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>SeraphyScriptDialog\83\81\83\\83b\83h\81^\83f\81[\83^\95Ï\8a·\8aÖ\98A</h2>
+
+        <h3><a name="FloatS">BSTR FloatS(Double val, Variant len)</a></h3>
+        
+        <p>\8eÀ\90\94\82ð\95\8e\9a\97ñ\82É\8ew\92è\90¸\93x\82Å\95Ï\8a·\82µ\95\8e\9a\97ñ\82ð\95Ô\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <p>Len\82Í\8fÈ\97ª\89Â\94\\82Å\81A\82»\82Ì\8fê\8d\87\82ÍDefaultFS\83v\83\8d\83p\83e\83B\82Ì\92l\82ª\8eg\97p\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>\8fÚ\82µ\82­\82Í<a href="DataConvProp.html#DefaultFS">DefaultFS</a>\82Ì\8d\80\96Ú\82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+
+        <h3><a name="IntS">BSTR IntS(Long val, Variant len)</a></h3>
+        
+        <p>\90®\90\94\82ð\95\8e\9a\97ñ\82É\8ew\92è\8c\85\90\94\82Å\95Ï\8a·\82µ\95\8e\9a\97ñ\82ð\95Ô\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        
+        <p>Len\82Í\8fÈ\97ª\89Â\94\\82Å\81A\82»\82Ì\8fê\8d\87\82ÍDefaultIS\83v\83\8d\83p\83e\83B\82Ì\92l\82ª\8eg\97p\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        
+        <p>\8fÚ\82µ\82­\82Í<a href="DataConvProp.html#DefaultIS">DefaultIS</a>\82Ì\8d\80\96Ú\82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+
+        <h3><a name="IsEqual">BOOL IsEqual(Double v1, Double v2, Variant tolerance)</a></h3>
+        <p>\8eÀ\90\94\82ð\8ew\92è\90¸\93x\88È\93à\82Å\88ê\92v\82·\82é\82©\8c\9f\8d¸\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        
+        <p>Tolerance\82Í\8fÈ\97ª\89Â\94\\82Å\81A\82»\82Ì\8fê\8d\87\82ÍDefaultTolerance\83v\83\8d\83p\83e\83B\82ª\8eg\97p\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+
+        <p>\8fÚ\82µ\82­\82Í<a href="DataConvProp.html#DefaultTolerance">DefaultTolerance</a>\82Ì\8d\80\96Ú\82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+
+        <h3><a name="IsPointEqual">BOOL IsPointEqual(Double x1, double y1, Double x2, Double y2, Variant tolerance)</a></h3>
+        <p>\82Q\93_\8aÔ\82Ì\8b\97\97£\82ª\8ew\92è\90¸\93x\88È\93à\82É\82 \82é\82©\8c\9f\8d¸\82µ\82Ü\82·\81B</p>
+
+        <p>Tolerance\82Í\8fÈ\97ª\89Â\94\\82Å\81A\82»\82Ì\8fê\8d\87\82ÍDefaultTolerance\83v\83\8d\83p\83e\83B\82ª\8eg\97p\82³\82ê\82é\81B</p>
+
+        <h4>\94õ\8dl</h4>
+
+        <p>\8fÚ\82µ\82­\82Í<a href="DataConvProp.html#DefaultTolerance">DefaultTolerance</a>\82Ì\8d\80\96Ú\82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DataConvProp.html b/help/html/DataConvProp.html
new file mode 100644 (file)
index 0000000..71f8829
--- /dev/null
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\83v\83\8d\83p\83e\83B\81^\83f\81[\83^\95Ï\8a·\8aÖ\98A</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+
+<h2>SeraphyScriptDialog\83v\83\8d\83p\83e\83B\81^\83f\81[\83^\95Ï\8a·\8aÖ\98A</h2>
+
+<h3><a name="DefaultIS">Short DefaultIS</a></h3>
+
+<p>\90®\90\94\81¨\95\8e\9a\97ñ\95Ï\8a·\82Ì\95W\8f\80\82Ì\8c\85\90\94\82ð\90®\90\94\82Å\8ew\92è\82µ\82Ü\82·\81B
+
+<p>\82P\88È\8fã\82Ì\90\94\92l\82Å\82 \82ê\82Î\81A\8ew\92è\82µ\82½\8c\85\90\94\82¾\82¯\90æ\93ª\82É\83[\83\8d\82ª\8bl\82ß\82ç\82ê\82Ü\82·\81B
+
+<p style="margin: 1em;">(\97á) 1\82Ì\8fê\8d\87\81A3\82ð\8ew\92è\82·\82é\82Æ\81A001\82Æ\82È\82è\82Ü\82·\81B
+
+<p>\83}\83C\83i\83X1\88È\89º\82Ì\90\94\92l\82Å\82 \82ê\82Î\81A\8ew\92è\82µ\82½\8c\85\90\94\82¾\82¯\8bó\94\92\82ª\8bl\82ß\82ç\82ê\82Ü\82·\81B
+
+
+<h3><a name="DefaultFS">Short DefaultFS</a></h3>
+
+<p>\8eÀ\90\94\81¨\95\8e\9a\97ñ\95Ï\8a·\82Ì\95W\8f\80\82Ì\97L\8cø\90¸\93x\82ð\90®\90\94\82Å\8ew\92è\82µ\82Ü\82·\81B
+
+<p>0\88È\8fã\82È\82ç\81A\8ew\92è\82µ\82½\90\94\92l\95ª\82Ì\8f¬\90\94\93_\88È\89º\8c\85\90\94\82ð\95\\8e¦\82µ\82Ü\82·\81B
+
+<p style="margin: 1em;">(\97á) 0.1234\82Ì\8fê\8d\87\82Å3\82ð\8ew\92è\82·\82é\82Æ0.123\82Æ\82È\82è\82Ü\82·\81B
+
+<p>\83}\83C\83i\83X\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\81A\8ew\92è\82µ\82½\90\94\92l\95ª\82Ì\8f¬\90\94\93_\88È\89º\88Ê\92u\82ð\90®\90\94\95\94\82Ü\82Å\8cJ\82è\8fã\82°\82Ü\82·
+
+<p style="margin: 1em;">(\97á) 0.1234\82Ì\8fê\8d\87\82Å-3\82ð\8ew\92è\82·\82é\82Æ123\82Æ\82È\82è\82Ü\82·\81B
+
+
+<h3><a name="DefaultTolerance">Double DefaultTolerance</a></h3>
+
+<p>\8eÀ\90\94\94ä\8ar\82Ì\95W\8f\80\82Ì\90¸\93x\82ð\8eÀ\90\94\82Å\97^\82¦\82Ü\82·\81B
+
+<p>IsEqual\83\81\83\\83b\83h\81AIsPointEqual\83\81\83\\83b\83h\82Å\8eg\82í\82ê\82Ü\82·\81B
+
+</div>
+</div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineButton.html b/help/html/DefineButton.html
new file mode 100644 (file)
index 0000000..cbb1798
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineButton</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+      <div id="main">
+          <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+          <h3><a name="DefineButton">Short DefineButton(BSTR title, Variant commandnumber)</a></h3>
+          <p>\83{\83^\83\93\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+
+          <h4>\88ø\90\94</h4>
+          <div class="argsdesc">
+              <dl>
+                  <dt>title</dt>
+                  <dd>
+                      \83{\83^\83\93\82Ì\83^\83C\83g\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                      \95¡\90\94\83{\83^\83\93\82ð\89¡\82É\95À\82×\82Ä\95\\8e¦\82·\82é\8fê\8d\87\82É\82Í\81A\81ua;b;c\81v\82Ì\82æ\82¤\82É\8bæ\90Ø\82è\95\8e\9a\81u;\81v\82É\82æ\82Á\82Ä\8bæ\90Ø\82è\82Ü\82·\81B
+                  </dd>
+              </dl>
+              <dl>
+                  <dt>commandnumber</dt>
+                  <dd>
+                      \83{\83^\83\93\82ª\89\9f\82³\82ê\82½\82Æ\82«\82Ì\83C\83x\83\93\83g\82Æ\82µ\82Ä\95Ô\82³\82ê\82é\94Ô\8d\86\82Å\81A\8dÅ\8f\89\82Ì\83{\83^\83\93\82©\82ç1\82Ã\82Â\83J\83E\83\93\83g\83A\83b\83v\82³\82ê\82Ü\82·\81B<br />
+                      \82½\82Æ\82¦\82Î\81A\81ua;b;c\81v\82Æ3\82Â\82Ì\83{\83^\83\93\82ð\92è\8b`\82µ\81Acommandnumber\82ª100\82Å\82 \82ê\82Î\81A\83{\83^\83\93C\82Í102\82Æ\82¢\82¤\94Ô\8d\86\82ª\95Ô\82è\82Ü\82·\81B<br />
+                      Commandnumber\82ð\8fÈ\97ª\82·\82é\82Æ\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82Æ\93¯\82\94Ô\8d\86\82É\82È\82è\82Ü\82·\82ª\81A
+                      2\82Â\88È\8fã\82Ì\83{\83^\83\93\82ð\8eg\82¤\8fê\8d\87\82Í\8e\9f\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82Ì\83C\83x\83\93\83g\82Æ\8fd\95¡\82·\82é\82½\82ß\81A\95K\82¸commandnumber\82É\91å\82«\82È\92l\82ð\8ew\92è\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
+                  </dd>
+              </dl>
+          </div>
+
+          <h4>\96ß\82è\92l</h4>
+          <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+          <h4>\83T\83\93\83v\83\8b</h4>
+          <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim btn1: btn1 = frm.DefineButton("\83R\83}\83\93\83h1;\83R\83}\83\93\83h2;\83R\83}\83\93\83h3", 10)
+Dim btn2: btn2 = frm.DefineButton("\83R\83}\83\93\83h4;\83R\83}\83\93\83h5", 20)
+Dim btn3: btn3 = frm.DefineButton("\83R\83}\83\93\83h6")
+Dim ret: ret = frm.ExecuteForm()
+MsgBox "commandnumber=" &amp; ret
+</pre></code>
+
+          <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+              <img src="sample_button.png"><br />
+              <span style="font-size: 80%; color: gray;">\97á: \83{\83^\83\93\82Ì\97á</span>
+          </div>
+
+      </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineCheckButton.html b/help/html/DefineCheckButton.html
new file mode 100644 (file)
index 0000000..b94bae8
--- /dev/null
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineCheckButton</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+        <h3><a name="DefineCheckButton">Short DefineCheckButton(BSTR title, Variant value, Variant mode)</a></h3>
+        <p>\83`\83F\83b\83N\83{\83b\83N\83X\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>title</dt>
+                <dd>
+                    \83{\83^\83\93\82Ì\83^\83C\83g\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                    \95¡\90\94\83{\83^\83\93\82Ì\8fê\8d\87\82É\82Í\81A\81ua;b;c\81v\82Ì\82æ\82¤\82É\8bæ\90Ø\82è\95\8e\9a\81u;\81v\82É\82æ\82Á\82Ä\8bæ\90Ø\82è\82Ü\82·\81B
+                </dd>
+            </dl>
+            <dl>
+                <dt>value</dt>
+                <dd>
+                    1\82È\82ç\82Î\83I\83\93\81A0\82È\82ç\82Î\83I\83t\82ð\88Ó\96¡\82µ\82Ü\82·\81B<br />
+                    \95¡\90\94\83{\83^\83\93\82Ì\8fê\8d\87\82Í\95\8e\9a\97ñ\82Å\81u01100\81v\82Ì\82æ\82¤\82É\8ew\92è\82µ\82Ü\82·\81B
+                </dd>
+            </dl>
+            <dl>
+                <dt>mode</dt>
+                <dd>
+                    1\82È\82ç\82Î\8fc\95û\8cü\81A0\82È\82ç\82Î\89¡\95û\8cü\82É\83{\83^\83\93\82ð\95À\82×\82Ü\82·\81B<br />
+                    \8fÈ\97ª\8e\9e\82Í\89¡\95û\8cü\82Ö\95À\82×\82Ü\82·\81B
+                </dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>\83^\83C\83g\83\8b\97\93\82É\8bæ\90Ø\82è\95\8e\9a\81u;\81v\82ð\8ew\92è\82µ\82½\8fê\8d\87\81A\95¡\90\94\83`\83F\83b\83N\83{\83b\83N\83X\82ª\8dì\90¬\82³\82ê\82Ü\82·\81B</p>
+        <p>\95¡\90\94\83`\83F\83b\83N\83{\83b\83N\83X\82Í\81ua;b;c;d;e\81v\82Ì\82æ\82¤\82É\8ew\8e¦\82µ\82Ä\8dì\90¬\82µ\81Avalue\82Í\81A\82»\82ê\82¼\82ê\81u01100\81v\82Ì\82æ\82¤\82É\95\8e\9a\97ñ\82Å\8ew\92è\82µ\82Ü\82·\81B</p>
+        <p>\8d\82Ì\8c\85\82©\82ç\8dÅ\8f\89\82Ì\83{\83^\83\93\82Æ\82È\82è\82Ü\82·\81B</p>
+        <p>\82±\82Ì\97á\82Å\82ÍB\83{\83^\83\93\82ÆC\83{\83^\83\93\82ªON\82Æ\82È\82è\82Ü\82·\81B</p>
+
+        <p style="margin-top: 1em;">\91\80\8dì\82ª\94Ï\8eG\82É\82È\82é\82Ì\82Å\8fc\95û\8cü\82Ì\83`\83F\83b\83N\83{\83^\83\93\82Å\82 \82ê\82ÎDefineCheckButton\82ð\8cJ\82è\95Ô\82µ\82½\82Ù\82¤\82ª\82æ\82¢\82Å\82µ\82å\82¤\81B</p>
+
+        <h4>\83T\83\93\83v\83\8b1 (\89¡\95û\8cü)</h4>
+        <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineCheckButton("\83`\83F\83b\83N1;\83`\83F\83b\83N2;\83`\83F\83b\83N3", "001")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk=" &amp; frm.Value(chk1)
+End If
+</pre></code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_chkbutton1.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83`\83F\83b\83N\83{\83^\83\93\82Ì\97á(\89¡\95û\8cü)</span>
+        </div>
+
+        <h4>\83T\83\93\83v\83\8b2 (\8fc\95û\8cü)</h4>
+        <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineCheckButton("\83`\83F\83b\83N1;\83`\83F\83b\83N2;\83`\83F\83b\83N3", "001", 1)
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk=" &amp; frm.Value(chk1)
+End If
+</pre></code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_chkbutton2.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83`\83F\83b\83N\83{\83^\83\93\82Ì\97á(\8fc\95û\8cü)</span>
+        </div>
+
+        <h4>\83T\83\93\83v\83\8b3 (\8fc\95û\8cü\81E\83V\83\93\83v\83\8b)</h4>
+        <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineCheckButton("\83`\83F\83b\83N1", 0, 1)
+Dim chk2: chk2 = frm.DefineCheckButton("\83`\83F\83b\83N2", 0, 1)
+Dim chk3: chk3 = frm.DefineCheckButton("\83`\83F\83b\83N3", 1, 1)
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk=" &amp; frm.Value(chk1) &amp; frm.Value(chk2) &amp; frm.Value(chk3)
+End If
+</pre></code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_chkbutton3.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83`\83F\83b\83N\83{\83^\83\93\82Ì\97á(\8fc\95û\8cü\81E\83V\83\93\83v\83\8b)</span>
+        </div>
+
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineComboBox.html b/help/html/DefineComboBox.html
new file mode 100644 (file)
index 0000000..698e1e6
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineComboBox</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+        <h3><a name="DefineComboBox">Short DefineComboBox(Variant title, Variant value, Variant list)</a></h3>
+        <p>\83R\83\93\83{\83{\83b\83N\83X\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+        <p>\95Ò\8fW\89Â\94\\82È\83G\83f\83B\83b\83g\83{\83b\83N\83X\82Æ\81A\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\82Ì\91g\82Ý\8d\87\82í\82¹\82Å\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>title</dt>
+                <dd>\83^\83C\83g\83\8b\97\93\82Í\8fÈ\97ª\89Â\94\\82Å\81A\8ew\92è\82µ\82½\8fê\8d\87\82Í\8d\91¤\82É\83^\83C\83g\83\8b\82ª\8dì\90¬\82³\82ê\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>value</dt>
+                <dd>\83G\83f\83C\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\95\94\82É\82Ívalue\82ª\8f\89\8aú\92l\82Æ\82µ\82Ä\93ü\82è\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>list</dt>
+                <dd>\83h\83\8d\83b\83v\83_\83E\83\93\82É\82æ\82Á\82Ä\91I\91ð\82Å\82«\82é\83\8a\83X\83g\82Ílist\82É\8bæ\90Ø\82è\95\8e\9a\81u;\81v\82É\82æ\82Á\82Ä\8ew\92è\82µ\82Ü\82·\81B</dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\83T\83\93\83v\83\8b</h4>
+        <code>
+            <pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim cbo1: cbo1 = frm.DefineComboBox()
+Dim cbo2: cbo2 = frm.DefineComboBox(,"data2","data1;data2;data3")
+Dim cbo3: cbo3 = frm.DefineComboBox("label3",,"data1a;data2a;data3a")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "cbo1=" &amp; frm.Value(cbo1) &amp; vbCrLf & _
+        "cbo2=" &amp; frm.Value(cbo2) &amp; vbCrLf & _
+        "cbo3=" &amp; frm.Value(cbo3)
+End If
+</pre>
+        </code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_combo.png"><br />
+            <img src="sample_combo_B.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83R\83\93\83{\83{\83b\83N\83X\82Ì\97á</span>
+        </div>
+
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineDropdownList.html b/help/html/DefineDropdownList.html
new file mode 100644 (file)
index 0000000..7478e7a
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineDropdownList</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+        <h3><a name="DefineDropdownList">Short DefineDropdownList(Variant title, Variant value, Variant list)</a></h3>
+        <p>\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\83{\83b\83N\83X\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+        <p>\8ew\92è\95û\96@\82Í<a href="DefineComboBox.html">ComboBox</a>\82Æ\82Ù\82Ú\93¯\82\82Å\82·\82ª\81A\83G\83f\83B\83b\83g\83{\83b\83N\83X\82Í\95Ò\8fW\95s\89Â\94\\82Å\82 \82è\81A
+        value\82ª\91I\91ð\94Ô\8d\86\82Æ\82È\82è\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>title</dt>
+                <dd>\83^\83C\83g\83\8b\97\93\82Í\8fÈ\97ª\89Â\94\\82Å\81A\8ew\92è\82µ\82½\8fê\8d\87\82Í\8d\91¤\82É\83^\83C\83g\83\8b\82ª\8dì\90¬\82³\82ê\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>value</dt>
+                <dd>\83\8a\83X\83g\82Ì0\82æ\82è\8en\82Ü\82é\91I\91ð\94Ô\8d\86\82ð\90\94\92l\82Å\8ew\92è\82µ\82Ü\82·\81B<br />
+                \96¢\91I\91ð\82Ì\8fê\8d\87\82Í-1\82ð\8ew\92è\82µ\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>list</dt>
+                <dd>\83h\83\8d\83b\83v\83_\83E\83\93\82É\82æ\82Á\82Ä\91I\91ð\82Å\82«\82é\83\8a\83X\83g\82Ílist\82É\8bæ\90Ø\82è\95\8e\9a\81u;\81v\82É\82æ\82Á\82Ä\8ew\92è\82µ\82Ü\82·\81B</dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>\96¢\91I\91ð\82ð\95\\82·Value\92l\82Í-1\82Æ\82È\82è\82Ü\82·\81B</p>
+
+        <h4>\83T\83\93\83v\83\8b</h4>
+        <code>
+            <pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim cbo1: cbo1 = frm.DefineDropdownList(,1,"data1;data2;data3")
+Dim cbo2: cbo2 = frm.DefineDropdownList("label3",,"data1a;data2a;data3a")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "cbo1=" &amp; frm.Value(cbo1) &amp; vbCrLf &amp; _
+        "cbo2=" &amp; frm.Value(cbo2) &amp; vbCrLf
+End If
+</pre>
+        </code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_dropdownlist.png"><br />
+            <img src="sample_dropdownlist_B.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\82Ì\97á</span>
+        </div>
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineEdit.html b/help/html/DefineEdit.html
new file mode 100644 (file)
index 0000000..9b2aab4
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineEdit</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+        <h3><a name="DefineEdit">Short DefineEdit(VARIANT title, VARIANT value, VARIANT multiline)</a></h3>
+        <p>\83G\83f\83C\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>title</dt>
+                <dd>\83^\83C\83g\83\8b\82ð\8ew\92è\82·\82é\8fê\8d\87\81A\8d\91¤\82É\83^\83C\83g\83\8b\97\93\82ª\8dì\90¬\82³\82ê\82Ü\82·\81B<br />
+                \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\83^\83C\83g\83\8b\97\93\82Í\8dì\90¬\82³\82ê\82Ü\82¹\82ñ\81B</dd>
+            </dl>
+            <dl>
+                <dt>value</dt>
+                <dd>\8f\89\8aú\92l\82ð\8ew\92è\82µ\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>Multiline</dt>
+                <dd>\95¡\90\94\8ds\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\82É\82·\82é\8fê\8d\87\82É\81A\82»\82Ì\8ds\90\94\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                    Multiline\82Í\95¡\90\94\8ds\82É\82µ\82½\8fê\8d\87\81A\89ü\8ds\82ª\8b\96\89Â\82³\82ê\82Ü\82·\81B</dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h3>\83T\83\93\83v\83\8b</h3>
+        <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim edt1: edt1 = frm.DefineEdit(, "edt1-value")
+Dim edt2: edt2 = frm.DefineEdit("edt2-title", "edt2-value")
+Dim edt3: edt3 = frm.DefineEdit(,"xx" &amp; vbCrLf &amp; "yy", 5)
+Dim btn1: btn1 = frm.DefineButton("OK")
+If frm.ExecuteForm() = btn1 Then
+    MsgBox frm.Value(edt1) &amp; ":" &amp; frm.Value(edt2) &amp; ":" &amp; frm.Value(edt3)
+End If
+</pre></code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_editbox.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\97á</span>
+        </div>
+
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineEditButton.html b/help/html/DefineEditButton.html
new file mode 100644 (file)
index 0000000..f50cf4d
--- /dev/null
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineEditButton</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+      <div id="main">
+          <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+          <h3><a name="DefineEditButton">Short DefineEditButton(VARIANT title, VARIANT value, VARIANT btnTitle, VARIANT commandnumber)</a></h3>
+          <p>\83{\83^\83\93\95t\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+          <h4>\88ø\90\94</h4>
+          <div class="argsdesc">
+              <dl>
+                  <dt>title</dt>
+                  <dd>
+                      \83^\83C\83g\83\8b\82ð\8ew\92è\82·\82é\8fê\8d\87\81A\8d\91¤\82É\83^\83C\83g\83\8b\97\93\82ª\8dì\90¬\82³\82ê\82Ü\82·\81B<br />
+                      \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\83^\83C\83g\83\8b\97\93\82Í\8dì\90¬\82³\82ê\82Ü\82¹\82ñ\81B
+                  </dd>
+              </dl>
+              <dl>
+                  <dt>value</dt>
+                  <dd>\8f\89\8aú\92l\82ð\8ew\92è\82µ\82Ü\82·\81B</dd>
+              </dl>
+              <dl>
+                  <dt>btnTitle</dt>
+                  <dd>
+                      \89E\91¤\82É\8dì\90¬\82³\82ê\82é\83{\83^\83\93\97\93\82Ì\83^\83C\83g\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
+                  </dd>
+              </dl>
+              <dl>
+                  <dt>commandnumber</dt>
+                  <dd>
+                      \83{\83^\83\93\82ª\89\9f\82³\82ê\82½\82Æ\82«\82É\83C\83x\83\93\83g\82Æ\82µ\82Ä\95Ô\82³\82ê\82é\92l\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                      \8fÈ\97ª\82·\82é\82Æ\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82Æ\93¯\82\82Æ\82È\82è\82Ü\82·\81B<br />
+                  </dd>
+              </dl>
+          </div>
+
+          <h4>\96ß\82è\92l</h4>
+          <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+          <h4>\94õ\8dl</h4>
+          <p>
+              \83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82Í\92è\8b`\8f\87\82É1\82æ\82è\8a\84\82è\93\96\82Ä\82ç\82ê\82é\82½\82ß\81Acommandnumber\82ð\96¾\8e¦\93I\82É\8ew\92è\82·\82é\8fê\8d\87\82É\82Í\81A
+              \91¼\82Ì\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82Æ\8fÕ\93Ë\82µ\82È\82¢\82æ\82¤\82É\8f\\95ª\82É\91å\82«\82È\92l\82ð\90Ý\92è\82µ\82Ä\82­\82¾\82³\82¢\81B
+          </p>
+
+          <h4>\83T\83\93\83v\83\8b</h4>
+<code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim edt1: edt1 = frm.DefineEditButton(, "edt1-value", "\83{\83^\83\931")
+Dim edt2: edt2 = frm.DefineEditButton("edt2-label:", "edt2-value", "\83{\83^\83\932")
+Dim ret: ret = frm.ExecuteForm()
+If ret = edt1 Then
+    MsgBox frm.Value(edt1)
+ElseIf ret = edt2 Then
+    MsgBox frm.Value(edt2)
+End If
+</pre></code>
+
+          <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+              <img src="sample_editbtn.png"><br />
+              <span style="font-size: 80%; color: gray;">\97á: \83G\83f\83B\83b\83g\83{\83^\83\93\82Ì\97á</span>
+          </div>
+
+      </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineFileEdit.html b/help/html/DefineFileEdit.html
new file mode 100644 (file)
index 0000000..f567047
--- /dev/null
@@ -0,0 +1,94 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineFileEdit</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+      <div id="main">
+          <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+          <h3><a name="DefineFileEdit">Short DefineFileEdit(VARIANT title, VARIANT value, VARIANT btnTitle, VARIANT mode, VARIANT filter)</a></h3>
+          <p>\83t\83@\83C\83\8b\82ð\8aJ\82­\81E\96¼\91O\82ð\82Â\82¯\82Ä\95Û\91\83_\83C\83A\83\8d\83O\82Ì\83{\83^\83\93\82ð\82à\82Â\83G\83f\83C\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+          <p>\83\8c\83C\83A\83E\83g\82Í<a href="DefineEditButton.html">DefineEditButton</a>\82Æ\93¯\82\82Å\82·\82ª\81A\83{\83^\83\93\89\9f\89º\82É\82æ\82é\83R\83}\83\93\83h\83C\83x\83\93\83g\82Í\94­\90\82µ\82Ü\82¹\82ñ\81B</p>
+
+          <h4>\88ø\90\94</h4>
+          <div class="argsdesc">
+              <dl>
+                  <dt>title</dt>
+                  <dd>
+                      \83^\83C\83g\83\8b\82ð\8ew\92è\82·\82é\8fê\8d\87\81A\8d\91¤\82É\83^\83C\83g\83\8b\97\93\82ª\8dì\90¬\82³\82ê\82Ü\82·\81B<br />
+                      \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\83^\83C\83g\83\8b\97\93\82Í\8dì\90¬\82³\82ê\82Ü\82¹\82ñ\81B
+                  </dd>
+              </dl>
+              <dl>
+                  <dt>value</dt>
+                  <dd>\8f\89\8aú\92l\82ð\8ew\92è\82µ\82Ü\82·\81B</dd>
+              </dl>
+              <dl>
+                  <dt>btnTitle</dt>
+                  <dd>
+                      \89E\91¤\82É\8dì\90¬\82³\82ê\82é\83{\83^\83\93\97\93\82Ì\83^\83C\83g\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
+                  </dd>
+              </dl>
+              <dl>
+                  <dt>mode</dt>
+                  <dd>
+                      \83t\83@\83C\83\8b\83_\83C\83A\83\8d\83O\82Ì\8eí\97Þ\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                      0\82Å\81u\83t\83@\83C\83\8b\82ð\8aJ\82­\81v\83_\83C\83A\83\8d\83O\81A1\82Å\81u\83t\83@\83C\83\8b\82Ì\95Û\91\81v\83_\83C\83A\83\8d\83O\82Æ\82È\82è\82Ü\82·\81B<br />
+                      \8fÈ\97ª\8e\9e\82Í\81u\83t\83@\83C\83\8b\82ð\8aJ\82­\81v\83_\83C\83A\83\8d\83O\82Æ\82È\82è\82Ü\82·\81B
+                  </dd>
+              </dl>
+              <dl>
+                  <dt>filter</dt>
+                  <dd>
+                      \83t\83@\83C\83\8b\82Ì\8eí\97Þ\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                      \81u\83\8f\81[\83h|*.DOC;*.TXT|\83G\83N\83Z\83\8b|*.XLS;*.CSV\81v\82Ì\82æ\82¤\82É\8bæ\90Ø\82è\95\8e\9a\82Æ\82µ\82Ä\81u|\81v\82ð\8eg\82Á\82Ä\83t\83B\83\8b\83^\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                      \82Ü\82½\81u\91S\82Ä\82Ì\83t\83@\83C\83\8b\81v\82Í\8e©\93®\93I\82É\8dÅ\8cã\82É\8dì\82ç\82ê\82Ü\82·\81B<br />
+                      \8dÅ\8f\89\82Ì\83t\83B\83\8b\83^\82É\8ew\92è\82³\82ê\82½\8ag\92£\8eq\82ª\83f\83t\83H\83\8b\83g\82Ì\8ag\92£\8eq\82Æ\82È\82è\82Ü\82·\81B
+                  </dd>
+              </dl>
+          </div>
+
+          <h4>\96ß\82è\92l</h4>
+          <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+          <h4>\94õ\8dl</h4>
+          <p>\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\95\94\82Í\83t\83@\83C\83\8b\82Ì\83p\83X\82Ö\82Ì\83I\81[\83g\83R\83\93\83v\83\8a\81[\83g\82ª\97L\8cø\82Æ\82È\82è\82Ü\82·\81B</p>
+
+          <h4>\83T\83\93\83v\83\8b</h4>
+          <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim edt1: edt1 = frm.DefineFileEdit(, "edt1-value","\8aJ\82­", 0, "\83e\83L\83X\83g|*.txt")
+Dim edt2: edt2 = frm.DefineFileEdit("edt2-label:", "edt2-value", "\95Û\91¶", 1, "\83f\81[\83^|*.dat")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "Open=" &amp; frm.Value(edt1) &amp; vbCrLf &amp; "Save=" &amp; frm.Value(edt2)
+End If
+</pre></code>
+
+          <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+              <img src="sample_fileedit.png"><br />
+              <span style="font-size: 80%; color: gray;">\97á: \83t\83@\83C\83\8b\83G\83f\83B\83b\83g\82Ì\97á</span>
+          </div>
+
+      </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineLabel.html b/help/html/DefineLabel.html
new file mode 100644 (file)
index 0000000..da6861a
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineLabel</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+        <h3><a name="DefineLabel">Short DefineLabel(BSTR title)</a></h3>
+        <p>title\82Å\8ew\92è\82³\82ê\82½\95\8e\9a\82ð\82à\82Â\83\89\83x\83\8b\82ð\92è\8b`\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>title</dt>
+                <dd>\95\\8e¦\82·\82é\95\8e\9a\97ñ\82ð\8ew\92è\82µ\82Ü\82·\81B</dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>Value\83v\83\8d\83p\83e\83B\82ð\90Ý\92è\82·\82é\82±\82Æ\82Å\83v\83\8d\83O\83\89\83\80\93I\82É\95\\8e¦\93à\97e\82ð\95Ï\8dX\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B</p>
+
+        <h4>\83T\83\93\83v\83\8b</h4>
+        <code>
+            <pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+frm.DefineLabel "\96{\93ú\82Ì\93ú\95t:"
+Dim lbl2: lbl2 = frm.DefineLabel("")
+frm.Value(lbl2) = FormatDateTime(Now, vbLongDate)
+frm.Enable(lbl2) = False
+frm.ExecuteForm()
+</pre>
+        </code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_label.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83\89\83x\83\8b\82Ì\97á</span>
+        </div>
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineListBox.html b/help/html/DefineListBox.html
new file mode 100644 (file)
index 0000000..8d3d6e9
--- /dev/null
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineListBox</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+        <h3><a name="DefineEdit">Short DefineListBox(Variant list, Variant value, Variant line, Variant multi)</a></h3>
+        <p>\83\8a\83X\83g\83{\83b\83N\83X\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>list</dt>
+                <dd>\95\\8e¦\82·\82é\83\8a\83X\83g\8d\80\96Ú\82ð\83Z\83~\83R\83\8d\83\93\8bæ\90Ø\82è\82Å\92è\8b`\82µ\82Ü\82·\81B<br />
+                    \82½\82Æ\82¦\82Î\81uabc;def;xyz\81v\82Ì\82æ\82¤\82É\8ew\8e¦\82µ\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>value</dt>
+                <dd>\8f\89\8aú\91I\91ð\82Æ\82·\82é\83\8a\83X\83g\82Ì0\82©\82ç\8en\82Ü\82é\91I\91ð\94Ô\8d\86\82ð\90®\90\94\82Å\8ew\92è\82µ\82Ü\82·\81B<br />
+                \8fÈ\97ª\82·\82é\82Æ\96¢\91I\91ð\82Æ\82È\82è\82Ü\82·\81B<br />
+                multi\88ø\90\94\82ð1\82Æ\82µ\82½\8fê\8d\87\82Í\95¡\90\94\91I\91ð\89Â\94\\82Æ\82È\82è\81A\82»\82Ì\8fê\8d\87\82Í\83Z\83~\83R\83\8d\83\93\8bæ\90Ø\82è\82Å\95¡\90\94\82Ì\91I\91ð\94Ô\8d\86\82ð\95\8e\9a\97ñ\82Å\8ew\92è\82µ\82Ü\82·\81B<br />
+                \82½\82Æ\82¦\82Î\81u0;1\81v\82Ì\82æ\82¤\82É\8ew\92è\82µ\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>line</dt>
+                <dd>\83\8a\83X\83g\82Ì\95\\8e¦\8ds\90\94\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                \8fÈ\97ª\82·\82é\82©1\96¢\96\9e\82Ì\8fê\8d\87\82Í1\8ds\82ª\90Ý\92è\82³\82ê\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>multi</dt>
+                <dd>1\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\95¡\90\94\91I\91ð\89Â\94\\82Æ\82È\82è\82Ü\82·\81B<br />
+                    \8fÈ\97ª\82µ\82½\8fê\8d\87\81A\82à\82µ\82­\82Í0\82Ì\8fê\8d\87\82Í\92P\88ê\91I\91ð\82Æ\82È\82è\82Ü\82·\81B</dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>\96¢\91I\91ð\82Ì\8fê\8d\87\82ÌValue\92l\82Í-1\82Æ\82È\82è\82Ü\82·\81B</p>
+        <p>line\82Å\8ew\92è\82·\82é\8ds\90\94\82Í\81A\83R\83\93\83g\83\8d\81[\83\8b\82Ì\8ds\90\94\82ð\95\\82µ\82Ä\82¨\82è\81A\92\86\82Ì\83A\83C\83e\83\80\82Ì\8ds\90\94\82Æ\82Í\96³\8aÖ\8cW\82Å\82·\81B</p>
+        <p>\92Ê\8fí\81A\83R\83\93\83g\83\8d\81[\83\8b\82Ì\8d\82\82³\82Ì\82Ù\82¤\82ª\83A\83C\83e\83\80\82Ì\8d\82\82³\82æ\82è\82à\91å\82«\82¢\82±\82Æ\82É\92\8d\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+
+        <h4>\83T\83\93\83v\83\8b</h4>
+        <code>
+            <pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim lst1: lst1 = frm.DefineListBox("a;b;c")
+Dim lst2: lst2 = frm.DefineListBox("abc;def;xyz", 1, 3)
+Dim lst3: lst3 = frm.DefineListBox("\8c\8e;\89Î;\90\85;\96Ø;\8bà;\93y;\93ú", "0;1;2", 7, 1)
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "lst1=" &amp; frm.Value(lst1) &amp; vbCrLf _
+        &amp; "lst2=" &amp; frm.Value(lst2) &amp; vbCrLf _
+        &amp; "lst3=" &amp; frm.Value(lst3)
+End If
+</pre>
+        </code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_listbox.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83\8a\83X\83g\83{\83b\83N\83X\82Ì\97á</span>
+        </div>
+
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/DefineRadioButton.html b/help/html/DefineRadioButton.html
new file mode 100644 (file)
index 0000000..a65c368
--- /dev/null
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u/DefineRadioButton</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h2>
+
+        <h3><a name="DefineRadioButton">Short DefineRadioButton(BSTR title, Variant value, Variant mode)</a></h3>
+        <p>\83\89\83W\83I\83{\83^\83\93\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>title</dt>
+                <dd>\83^\83C\83g\83\8b\97\93\82ð\81u;\81v\82Å\8bæ\90Ø\82è\81A\81ua;b;c;d;e\81v\82Ì\82æ\82¤\82É\82µ\82Ä\95¡\90\94\83\89\83W\83I\83{\83^\83\93\82Ì\83O\83\8b\81[\83v\82ð\8dì\90¬\82µ\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>value</dt>
+                <dd>\83`\83F\83b\83N\82³\82ê\82Ä\82¢\82é\94Ô\8d\86\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                \8d\91¤\82æ\82è0\94Ô\82©\82ç\8en\82Ü\82é\90®\90\94\82Æ\82È\82è\82Ü\82·\81B</br>
+                \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\96¢\91I\91ð\82Æ\82È\82è\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>mode</dt>
+                <dd>
+                    1\82È\82ç\82Î\8fc\95û\8cü\81A0\82È\82ç\82Î\89¡\95û\8cü\82É\83{\83^\83\93\82ð\95À\82×\82Ü\82·\81B<br />
+                    \8fÈ\97ª\8e\9e\82Í\89¡\95û\8cü\82Ö\95À\82×\82Ü\82·\81B
+                </dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>\83\89\83W\83I\83{\83^\83\93\82Í\91I\91ð\82µ\82½\83{\83^\83\93\88Ê\92u(\90æ\93ª\82æ\82è0\82©\82ç\8en\82Ü\82é\90\94\92l)\82Æ\82È\82è\82Ü\82·\81B</p>
+        <p>\96¢\91I\91ð\82Ì\8fê\8d\87\82Í-1\82Æ\82È\82è\82Ü\82·\81B</p>
+
+        <h4>\83T\83\93\83v\83\8b1 (\89¡\95û\8cü)</h4>
+        <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineRadioButton("\83\89\83W\83I1;\83\89\83W\83I2;\83\89\83W\83I3", 0)
+Dim chk2: chk2 = frm.DefineRadioButton("\83\89\83W\83Ia;\83\89\83W\83Ib")
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk1=" &amp; frm.Value(chk1) &amp; vbCrLf &amp; "chk2=" &amp; frm.Value(chk2)
+End If
+</pre></code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_radiobutton1.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83\89\83W\83I\83{\83^\83\93\82Ì\97á(\89¡\95û\8cü)</span>
+        </div>
+
+        <h4>\83T\83\93\83v\83\8b2 (\8fc\95û\8cü)</h4>
+        <code>
+            <pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+Dim chk1: chk1 = frm.DefineRadioButton("\83\89\83W\83I1;\83\89\83W\83I2;\83\89\83W\83I3", 0, 1)
+frm.DefineLabel ""
+Dim chk2: chk2 = frm.DefineRadioButton("\83\89\83W\83Ia;\83\89\83W\83Ib",,1)
+Dim btn1: btn1 = frm.DefineButton("OK")
+Dim ret: ret = frm.ExecuteForm()
+If ret = btn1 Then
+    MsgBox "chk1=" &amp; frm.Value(chk1) &amp; vbCrLf &amp; "chk2=" &amp; frm.Value(chk2)
+End If
+</pre>
+        </code>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_radiobutton2.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83\89\83W\83I\83{\83^\83\93\82Ì\97á(\8fc\95û\8cü)</span>
+        </div>
+
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/EventMethod.html b/help/html/EventMethod.html
new file mode 100644 (file)
index 0000000..110381c
--- /dev/null
@@ -0,0 +1,249 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\83\81\83\\83b\83h\81^\83C\83x\83\93\83g\8aÖ\98A</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>SeraphyScriptDialog\83\81\83\\83b\83h\81^\83C\83x\83\93\83g\8aÖ\98A</h2>
+
+        <h3><a name="GetASyncKeyState">Short GetASyncKeyState(vk)</a></h3>
+        
+        <p>\94ñ\93¯\8aú\82Å\83L\81[\93ü\97Í\82ð\8c\9f\8d¸\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <p>vk\82ÍWin32\82Ì\89¼\91z\83L\81[\83R\81[\83h\82ð\8ew\92è\82·\82é\81B</p>
+        <p>\89¼\91z\83L\81[\83R\81[\83h\82Í\81A0-9\81Aa-z\82Å\82 \82ê\82ÎASCII\83R\81[\83h\82»\82Ì\82Ü\82Ü\82É\91Î\89\9e\82µ\82Ä\82¢\82Ü\82·\81B</p>
+        <p>\82»\82Ì\91¼\82Ì\92è\8b`\82Æ\82µ\82Ä\82Í\88È\89º\82Ì\82æ\82¤\82È\82à\82Ì\82ª\82 \82è\82Ü\82·\81B(\82·\82×\82Ä\82Ì\83R\81[\83h\82ª\96{\83\81\83\\83b\83h\82Å\8eg\82¦\82é\82Æ\82Í\8cÀ\82è\82Ü\82¹\82ñ\81B)</p>
+<pre>
+       const KEYCODE_LBUTTON = &h01 ' VK_LBUTTON
+       const KEYCODE_RBUTTON = &h02 ' VK_RBUTTON
+       const KEYCODE_CANCEL = &h03 ' VK_CANCEL
+       const KEYCODE_MBUTTON = &h04 ' VK_MBUTTON
+       const KEYCODE_XBUTTON1 = &h05 ' VK_XBUTTON1
+       const KEYCODE_XBUTTON2 = &h06 ' VK_XBUTTON2
+       const KEYCODE_BACK = &h08 ' VK_BACK
+       const KEYCODE_TAB = &h09 ' VK_TAB
+       const KEYCODE_CLEAR = &h0C ' VK_CLEAR
+       const KEYCODE_RETURN = &h0D ' VK_RETURN
+       const KEYCODE_SHIFT = &h10 ' VK_SHIFT
+       const KEYCODE_CONTROL = &h11 ' VK_CONTROL
+       const KEYCODE_MENU = &h12 ' VK_MENU
+       const KEYCODE_PAUSE = &h13 ' VK_PAUSE
+       const KEYCODE_CAPITAL = &h14 ' VK_CAPITAL
+       const KEYCODE_KANA = &h15 ' VK_KANA
+       const KEYCODE_HANGEUL = &h15 ' VK_HANGEUL
+       const KEYCODE_HANGUL = &h15 ' VK_HANGUL
+       const KEYCODE_JUNJA = &h17 ' VK_JUNJA
+       const KEYCODE_FINAL = &h18 ' VK_FINAL
+       const KEYCODE_HANJA = &h19 ' VK_HANJA
+       const KEYCODE_KANJI = &h19 ' VK_KANJI
+       const KEYCODE_ESCAPE = &h1B ' VK_ESCAPE
+       const KEYCODE_CONVERT = &h1C ' VK_CONVERT
+       const KEYCODE_NONCONVERT = &h1D ' VK_NONCONVERT
+       const KEYCODE_ACCEPT = &h1E ' VK_ACCEPT
+       const KEYCODE_MODECHANGE = &h1F ' VK_MODECHANGE
+       const KEYCODE_SPACE = &h20 ' VK_SPACE
+       const KEYCODE_PRIOR = &h21 ' VK_PRIOR
+       const KEYCODE_NEXT = &h22 ' VK_NEXT
+       const KEYCODE_END = &h23 ' VK_END
+       const KEYCODE_HOME = &h24 ' VK_HOME
+       const KEYCODE_LEFT = &h25 ' VK_LEFT
+       const KEYCODE_UP = &h26 ' VK_UP
+       const KEYCODE_RIGHT = &h27 ' VK_RIGHT
+       const KEYCODE_DOWN = &h28 ' VK_DOWN
+       const KEYCODE_SELECT = &h29 ' VK_SELECT
+       const KEYCODE_PRINT = &h2A ' VK_PRINT
+       const KEYCODE_EXECUTE = &h2B ' VK_EXECUTE
+       const KEYCODE_SNAPSHOT = &h2C ' VK_SNAPSHOT
+       const KEYCODE_INSERT = &h2D ' VK_INSERT
+       const KEYCODE_DELETE = &h2E ' VK_DELETE
+       const KEYCODE_HELP = &h2F ' VK_HELP
+       const KEYCODE_LWIN = &h5B ' VK_LWIN
+       const KEYCODE_RWIN = &h5C ' VK_RWIN
+       const KEYCODE_APPS = &h5D ' VK_APPS
+       const KEYCODE_SLEEP = &h5F ' VK_SLEEP
+       const KEYCODE_NUMPAD0 = &h60 ' VK_NUMPAD0
+       const KEYCODE_NUMPAD1 = &h61 ' VK_NUMPAD1
+       const KEYCODE_NUMPAD2 = &h62 ' VK_NUMPAD2
+       const KEYCODE_NUMPAD3 = &h63 ' VK_NUMPAD3
+       const KEYCODE_NUMPAD4 = &h64 ' VK_NUMPAD4
+       const KEYCODE_NUMPAD5 = &h65 ' VK_NUMPAD5
+       const KEYCODE_NUMPAD6 = &h66 ' VK_NUMPAD6
+       const KEYCODE_NUMPAD7 = &h67 ' VK_NUMPAD7
+       const KEYCODE_NUMPAD8 = &h68 ' VK_NUMPAD8
+       const KEYCODE_NUMPAD9 = &h69 ' VK_NUMPAD9
+       const KEYCODE_MULTIPLY = &h6A ' VK_MULTIPLY
+       const KEYCODE_ADD = &h6B ' VK_ADD
+       const KEYCODE_SEPARATOR = &h6C ' VK_SEPARATOR
+       const KEYCODE_SUBTRACT = &h6D ' VK_SUBTRACT
+       const KEYCODE_DECIMAL = &h6E ' VK_DECIMAL
+       const KEYCODE_DIVIDE = &h6F ' VK_DIVIDE
+       const KEYCODE_F1 = &h70 ' VK_F1
+       const KEYCODE_F2 = &h71 ' VK_F2
+       const KEYCODE_F3 = &h72 ' VK_F3
+       const KEYCODE_F4 = &h73 ' VK_F4
+       const KEYCODE_F5 = &h74 ' VK_F5
+       const KEYCODE_F6 = &h75 ' VK_F6
+       const KEYCODE_F7 = &h76 ' VK_F7
+       const KEYCODE_F8 = &h77 ' VK_F8
+       const KEYCODE_F9 = &h78 ' VK_F9
+       const KEYCODE_F10 = &h79 ' VK_F10
+       const KEYCODE_F11 = &h7A ' VK_F11
+       const KEYCODE_F12 = &h7B ' VK_F12
+       const KEYCODE_F13 = &h7C ' VK_F13
+       const KEYCODE_F14 = &h7D ' VK_F14
+       const KEYCODE_F15 = &h7E ' VK_F15
+       const KEYCODE_F16 = &h7F ' VK_F16
+       const KEYCODE_F17 = &h80 ' VK_F17
+       const KEYCODE_F18 = &h81 ' VK_F18
+       const KEYCODE_F19 = &h82 ' VK_F19
+       const KEYCODE_F20 = &h83 ' VK_F20
+       const KEYCODE_F21 = &h84 ' VK_F21
+       const KEYCODE_F22 = &h85 ' VK_F22
+       const KEYCODE_F23 = &h86 ' VK_F23
+       const KEYCODE_F24 = &h87 ' VK_F24
+       const KEYCODE_NUMLOCK = &h90 ' VK_NUMLOCK
+       const KEYCODE_SCROLL = &h91 ' VK_SCROLL
+       const KEYCODE_OEM_NEC_EQUAL = &h92 ' VK_OEM_NEC_EQUAL
+       const KEYCODE_OEM_FJ_JISHO = &h92 ' VK_OEM_FJ_JISHO
+       const KEYCODE_OEM_FJ_MASSHOU = &h93 ' VK_OEM_FJ_MASSHOU
+       const KEYCODE_OEM_FJ_TOUROKU = &h94 ' VK_OEM_FJ_TOUROKU
+       const KEYCODE_OEM_FJ_LOYA = &h95 ' VK_OEM_FJ_LOYA
+       const KEYCODE_OEM_FJ_ROYA = &h96 ' VK_OEM_FJ_ROYA
+       const KEYCODE_LSHIFT = &hA0 ' VK_LSHIFT
+       const KEYCODE_RSHIFT = &hA1 ' VK_RSHIFT
+       const KEYCODE_LCONTROL = &hA2 ' VK_LCONTROL
+       const KEYCODE_RCONTROL = &hA3 ' VK_RCONTROL
+       const KEYCODE_LMENU = &hA4 ' VK_LMENU
+       const KEYCODE_RMENU = &hA5 ' VK_RMENU
+       const KEYCODE_BROWSER_BACK = &hA6 ' VK_BROWSER_BACK
+       const KEYCODE_BROWSER_FORWARD = &hA7 ' VK_BROWSER_FORWARD
+       const KEYCODE_BROWSER_REFRESH = &hA8 ' VK_BROWSER_REFRESH
+       const KEYCODE_BROWSER_STOP = &hA9 ' VK_BROWSER_STOP
+       const KEYCODE_BROWSER_SEARCH = &hAA ' VK_BROWSER_SEARCH
+       const KEYCODE_BROWSER_FAVORITES = &hAB ' VK_BROWSER_FAVORITES
+       const KEYCODE_BROWSER_HOME = &hAC ' VK_BROWSER_HOME
+       const KEYCODE_VOLUME_MUTE = &hAD ' VK_VOLUME_MUTE
+       const KEYCODE_VOLUME_DOWN = &hAE ' VK_VOLUME_DOWN
+       const KEYCODE_VOLUME_UP = &hAF ' VK_VOLUME_UP
+       const KEYCODE_MEDIA_NEXT_TRACK = &hB0 ' VK_MEDIA_NEXT_TRACK
+       const KEYCODE_MEDIA_PREV_TRACK = &hB1 ' VK_MEDIA_PREV_TRACK
+       const KEYCODE_MEDIA_STOP = &hB2 ' VK_MEDIA_STOP
+       const KEYCODE_MEDIA_PLAY_PAUSE = &hB3 ' VK_MEDIA_PLAY_PAUSE
+       const KEYCODE_LAUNCH_MAIL = &hB4 ' VK_LAUNCH_MAIL
+       const KEYCODE_LAUNCH_MEDIA_SELECT = &hB5 ' VK_LAUNCH_MEDIA_SELECT
+       const KEYCODE_LAUNCH_APP1 = &hB6 ' VK_LAUNCH_APP1
+       const KEYCODE_LAUNCH_APP2 = &hB7 ' VK_LAUNCH_APP2
+       const KEYCODE_OEM_1 = &hBA ' VK_OEM_1
+       const KEYCODE_OEM_PLUS = &hBB ' VK_OEM_PLUS
+       const KEYCODE_OEM_COMMA = &hBC ' VK_OEM_COMMA
+       const KEYCODE_OEM_MINUS = &hBD ' VK_OEM_MINUS
+       const KEYCODE_OEM_PERIOD = &hBE ' VK_OEM_PERIOD
+       const KEYCODE_OEM_2 = &hBF ' VK_OEM_2
+       const KEYCODE_OEM_3 = &hC0 ' VK_OEM_3
+       const KEYCODE_OEM_4 = &hDB ' VK_OEM_4
+       const KEYCODE_OEM_5 = &hDC ' VK_OEM_5
+       const KEYCODE_OEM_6 = &hDD ' VK_OEM_6
+       const KEYCODE_OEM_7 = &hDE ' VK_OEM_7
+       const KEYCODE_OEM_8 = &hDF ' VK_OEM_8
+       const KEYCODE_OEM_AX = &hE1 ' VK_OEM_AX
+       const KEYCODE_OEM_102 = &hE2 ' VK_OEM_102
+       const KEYCODE_ICO_HELP = &hE3 ' VK_ICO_HELP
+       const KEYCODE_ICO_00 = &hE4 ' VK_ICO_00
+       const KEYCODE_PROCESSKEY = &hE5 ' VK_PROCESSKEY
+       const KEYCODE_ICO_CLEAR = &hE6 ' VK_ICO_CLEAR
+       const KEYCODE_PACKET = &hE7 ' VK_PACKET
+       const KEYCODE_OEM_RESET = &hE9 ' VK_OEM_RESET
+       const KEYCODE_OEM_JUMP = &hEA ' VK_OEM_JUMP
+       const KEYCODE_OEM_PA1 = &hEB ' VK_OEM_PA1
+       const KEYCODE_OEM_PA2 = &hEC ' VK_OEM_PA2
+       const KEYCODE_OEM_PA3 = &hED ' VK_OEM_PA3
+       const KEYCODE_OEM_WSCTRL = &hEE ' VK_OEM_WSCTRL
+       const KEYCODE_OEM_CUSEL = &hEF ' VK_OEM_CUSEL
+       const KEYCODE_OEM_ATTN = &hF0 ' VK_OEM_ATTN
+       const KEYCODE_OEM_FINISH = &hF1 ' VK_OEM_FINISH
+       const KEYCODE_OEM_COPY = &hF2 ' VK_OEM_COPY
+       const KEYCODE_OEM_AUTO = &hF3 ' VK_OEM_AUTO
+       const KEYCODE_OEM_ENLW = &hF4 ' VK_OEM_ENLW
+       const KEYCODE_OEM_BACKTAB = &hF5 ' VK_OEM_BACKTAB
+       const KEYCODE_ATTN = &hF6 ' VK_ATTN
+       const KEYCODE_CRSEL = &hF7 ' VK_CRSEL
+       const KEYCODE_EXSEL = &hF8 ' VK_EXSEL
+       const KEYCODE_EREOF = &hF9 ' VK_EREOF
+       const KEYCODE_PLAY = &hFA ' VK_PLAY
+       const KEYCODE_ZOOM = &hFB ' VK_ZOOM
+       const KEYCODE_NONAME = &hFC ' VK_NONAME
+       const KEYCODE_PA1 = &hFD ' VK_PA1
+       const KEYCODE_OEM_CLEAR = &hFE ' VK_OEM_CLEAR
+</pre>
+        <p>\81¦ wsf\83t\83@\83C\83\8b\82Å<a href="wsfref.html">reference\82É\82æ\82é\83^\83C\83v\83\89\83C\83u\83\8a\82ð\8ew\92è</a>\82µ\82Ä\82¢\82é\8fê\8d\87\82Í\81A\8fã\8bL\92è\90\94\96¼\82Å\92l\82ð\8eQ\8fÆ\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+
+        <h4>\96ß\82è\92l</h4>
+
+        <p>\91O\89ñ\88È\8d~\89\9f\82³\82ê\82Ä\82¢\82ê\82Î\83v\83\89\83X\81A</p>
+
+        <p>\8c»\8dÝ\89\9f\82³\82ê\82Ä\82¢\82ê\82Î\83}\83C\83i\83X\81A</p>
+
+        <p>\89\9f\82³\82ê\82Ä\82È\82¯\82ê\82Î0\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>\96ß\82è\92l\82ÍWin32API\82Æ\93¯\93\99\82Å\82 \82é\81B</p>
+
+        <p>Vk\82É\82Í0\82ð\8ew\92è\82·\82é\82ÆF10\81A-1\82ÅPAUSE\81A-2\82ÅSCROLL\82Å\82 \82é\81B</p>
+
+        <h3><a name="DoEvents">DoEvents(Variant waittime)</a></h3>
+        <p>\83C\83x\83\93\83g\83\8b\81[\83v\82Å\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82µ\82Ü\82·\81B</p>
+
+        <p>\83X\83N\83\8a\83v\83g\8eÀ\8ds\82É\82æ\82Á\82Ä\83X\83\8c\83b\83h\82ª\90è\97L\82³\82ê\82Ä\82¢\82Ä\82à\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82·\82é\95K\97v\82ª\82 \82é\8fê\8d\87\82É\8cÄ\82Ñ\8fo\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <p>waittime\82Í10mSec\92P\88Ê\82Å\91Ò\82¿\8e\9e\8aÔ\82ð\8ew\92è\82µ\81A\89½\82ç\82©\82Ì\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82·\82é\82©\81A\8ew\92è\8e\9e\8aÔ\8co\89ß\82·\82é\82Ü\82Å\91Ò\8b@\82µ\82Ü\82·\81B</p>
+        <p>\8fÈ\97ª\8e\9e\82Í\91Ò\8b@\8e\9e\8aÔ\82È\82µ\82Æ\82È\82è\82Ü\82·\81B</p>
+        <p style="margin-top: 1em;">waittime\82ÍVersion2.0\82©\82ç\83T\83|\81[\83g\82³\82ê\82Ü\82µ\82½\81B\8b\8cVersion1.0\82Å\82Í\91Ò\8b@\8e\9e\8aÔ\82Í0\82Å\82µ\82½\81B</p>
+
+        <h4>\92\8d\88Ó</h4>
+        
+        <p>\83X\83N\83\8a\83v\83g\82ª\8eÀ\8ds\82³\82ê\82Ä\82¢\82é\93¯\88ê\83X\83\8c\83b\83h\8fã\82Å\83X\83N\83\8a\83v\83g\88È\8aO\82É\82æ\82Á\82Ä\8aÇ\97\9d\82³\82ê\82Ä\82¢\82é\83E\83B\83\93\83h\83E\82ª\82 \82é\8fê\8d\87\81A
+        \96{\83\81\83\\83b\83h\82É\82æ\82è\81A\82»\82ê\82ç\82Ì\83X\83\8c\83b\83h\83\81\83b\83Z\81[\83W\82à\82Ü\82Æ\82ß\82Ä\8f\88\97\9d\82³\82ê\82Ü\82·\81B</p>
+        <p>\82»\82Ì\8c\8b\89Ê\82Æ\82µ\82Ä\81A\83X\83N\83\8a\83v\83g\82Ì\8a®\97¹\82ð\91Ò\82½\82¸\82É\83{\83^\83\93\82â\83\81\83j\83\85\81[\82È\82Ç\82ª\91\80\8dì\81A\8eÀ\8ds\82³\82ê\82¤\82é\82Ì\82Å\81A\8fó\8bµ\82É\82æ\82è\81A
+        \8b[\8e\97\93I\82È\83}\83\8b\83`\83X\83\8c\83b\83h\93I\82È\93®\8dì\82Æ\82È\82é\8fê\8d\87\82ª\82 \82è\81A\82»\82Ì\95\9b\8dì\97p\82É\82Í\92\8d\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+
+        <h3><a name="Sleep">Sleep(Short waittim)</a></h3>
+        <p>\83X\83\8c\83b\83h\82ð\8ew\92è\8e\9e\8aÔ\92â\8e~\82µ\82Ü\82·</p>
+
+        <h4>\88ø\90\94</h4>
+        <p>waittim\82Í\83~\83\8a\95b\82Å\8ew\92è\82µ\82Ü\82·\81B</p>
+
+        <h4>\92\8d\88Ó</h4>
+        <p>\83X\83\8c\83b\83h\82ª\92â\8e~\82·\82é\82½\82ß\83E\83B\83\93\83h\83E\82Ì\95`\89æ\82È\82Ç\82Ì\83\81\83b\83Z\81[\83W\8f\88\97\9d\82à\92â\8e~\82³\82ê\82é\82±\82Æ\82É\92\8d\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+
+        <h3><a name="WaitCursor">WaitCursor(Short sw)</a></h3>
+        <p>\8eÀ\8ds\92\86\82Ì\8d»\8e\9e\8cv\83J\81[\83\\83\8b\82ð\95\\8e¦\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        
+        <p>sw\82ª1\82Å\82 \82ê\82Î\8d»\8e\9e\8cv\82Æ\82µ\81A0\82É\82·\82é\82Æ\95W\8f\80\82Æ\82È\82è\82Ü\82·\81B</p>
+
+        <h4>\92\8d\88Ó</h4>
+
+        <p>\8c»\8dÝ\82Í\8cÄ\82Ñ\8fo\82µ\89ñ\90\94\82ð\83J\83E\83\93\83g\82µ\82Ä\82¢\82Ü\82¹\82ñ\82ª\81A\8f«\97\88\82É\82¨\82¢\82Ä\82Í\8cÄ\82Ñ\8fo\82µ\82ð\83J\83E\83\93\83g\82·\82é\89Â\94\\90«\82ª\82 \82é\82Ì\82Å\83t\83\89\83O\82ð\97§\82Ä\82é\82Ì\82Æ\89ð\8f\9c\82·\82é\82Ì\82Í\82P\91Î\82Æ\82È\82é\82æ\82¤\82É\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/ExecuteForm.html b/help/html/ExecuteForm.html
new file mode 100644 (file)
index 0000000..823afe0
--- /dev/null
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83\81\83\\83b\83h\81^\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>UserForm\83\81\83\\83b\83h\81^\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O</h2>
+        <h3><a name="ExecuteForm">Short ExecuteForm</a></h3>
+        <p>\83\82\81[\83_\83\8b\81E\83_\83C\83A\83\8d\83O\82Ì\8eÀ\8ds\82ð\8ds\82¢\82Ü\82·\81B</p>
+        <p>\83{\83^\83\93\82ª\89\9f\82³\82ê\82é\82©\81A\83E\83B\83\93\83h\83E\82ª\83N\83\8d\81[\83Y\82³\82ê\82é\82Ü\82Å\90§\8cä\82ð\95Ô\82µ\82Ü\82¹\82ñ\81B</p>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\89\9f\82³\82ê\82½\83{\83^\83\93\82Ìcommandnumber\82©\81A\82 \82é\82¢\82Í-1\82ª\95Ô\82è\82Ü\82·\81B</p>
+        <p>-1\82Í\83E\83B\83\93\83h\83E\82Ì\83N\83\8d\81[\83Y\82ð\88Ó\96¡\82µ\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <ul>
+            <li>\96{\83\81\83\\83b\83h\82ð\8eÀ\8ds\82·\82é\91O\82É\83t\83H\81[\83\80\82ª\82·\82Å\82É\95\\8e¦\82³\82ê\82Ä\82¢\82Ä\82Í\82È\82è\82Ü\82¹\82ñ\81B</li>
+            <li>ESC\83L\81[\89\9f\89º\82·\82é\82Æ\83E\83B\83\93\83h\83E\82Ì\83N\83\8d\81[\83Y\82Æ\82È\82è\82Ü\82·\81B</li>
+            <li>\96{\83\81\83\\83b\83h\82Ì\8eÀ\8ds\82É\82æ\82è\83t\83H\81[\83\80\82ª\95\\8e¦\82³\82ê\81A\83E\83B\83\93\83h\83E\82ð\95Â\82\82é\82©\83{\83^\83\93\82ð\89\9f\89º\82µ\90§\8cä\82ª\95Ô\82³\82ê\82é\82Æ\83t\83H\81[\83\80\82Í\94ñ\95\\8e¦\82Æ\82È\82è\82Ü\82·\81B</li>
+            <li>\94ñ\95\\8e¦\82É\82È\82Á\82½\83t\83H\81[\83\80\82Í\8dÄ\93x\96{\83\81\83\\83b\83h\82Å\95\\8e¦\82³\82¹\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</li>
+        </ul>
+
+        <h3>\83\82\81[\83_\83\8b\82Ì\97á</h3>
+
+        <h4>\83\\81[\83X\83R\81[\83h</h4>
+
+        <code><pre class="codeexample">
+Option Explicit
+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
+Dim frm: Set frm = obj.CreateForm()
+frm.FormTitle = "\83\86\81[\83U\81[\8fî\95ñ\82Ì\93ü\97Í"
+frm.FormWidth = 250
+
+frm.DefineLabel "\90©\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+Dim nEdit1: nEdit1 = frm.DefineEdit()
+
+frm.DefineLabel "\96¼\91O\82ð\93ü\82ê\82Ä\82­\82¾\82³\82¢"
+Dim nEdit2: nEdit2 = frm.DefineEdit()
+
+Dim btn1: btn1 = frm.DefineButton("\97¹\89ð;·¬Ý¾Ù")
+
+<b>Dim ret: ret = frm.ExecuteForm()</b>
+If ret = btn1 Then
+    MsgBox frm.Value(nEdit1) & frm.Value(nEdit2)
+End If
+</pre></code>
+
+        <h4>\8eÀ\8ds\8c\8b\89Ê</h4>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+            <img src="sample_modal.png"><br />
+            <span style="font-size: 80%; color: gray;">\97á: \83\82\81[\83_\83\8b\82Ì\97á</span>
+        </div>
+
+        <h4>\89ð\90à</h4>
+        <p>\83t\83H\81[\83\80\8fã\82ÉDefineButton\83\81\83\\83b\83h\82É\82æ\82è2\8cÂ\82Ì\83{\83^\83\93\82ð\92è\8b`\82µ\82Ä\82¢\82Ü\82·\81B</p>
+        <p>\96¾\8e¦\93I\82Écommandnumber\82ð\8ew\92è\82µ\82È\82¢\8fê\8d\87\81A\8dÅ\8f\89\82Ì\83{\83^\83\93\82Ìcommandnumber\82Í\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82Æ\93¯\82\82Å\82·\81B</p>
+        <p>\82»\82Ì\82½\82ß\81A\81u\97¹\89ð\81v\83{\83^\83\93\82ª\89\9f\82³\82ê\82½\8fê\8d\87\82Ì\82Ý\81A\83G\83f\83B\83b\83g\83{\83b\83N\83X1,2\82Ì\93à\97e\82ð\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82É\95\\8e¦\82µ\82Ä\82¢\82Ü\82·\81B</p>
+        <p style="margin-top: 1em;">ESC\83L\81[\81A\82 \82é\82¢\82Í\81~\83{\83^\83\93\82É\82æ\82è\83E\83B\83\93\83h\83E\82ð\95Â\82\82é\82©\81A\82 \82é\82¢\82Í\83L\83\83\83\93\83Z\83\8b\83{\83^\83\93\82ð\89\9f\89º\82µ\82½\8fê\8d\87\82Í\96³\8e\8b\82µ\82Ä\82¢\82Ü\82·\81B</p>
+        <p style="margin-top: 1em;">\82È\82¨\81A\83t\83H\81[\83\80\82Ì\95\9d\82ÍFormWidth\82Å\95W\8f\80\82æ\82è\8f­\82µ\8f¬\82³\82­\82µ\82Ä\82¢\82Ü\82·\81B</p>
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/FileMethod.html b/help/html/FileMethod.html
new file mode 100644 (file)
index 0000000..8d82a78
--- /dev/null
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\83\81\83\\83b\83h\81^\83t\83@\83C\83\8b\8aÖ\98A</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>SeraphyScriptDialog\83\81\83\\83b\83h\81^\83t\83@\83C\83\8b\8aÖ\98A</h2>
+
+        <h3><a name="GetSpecialFolderPath">VARIANT GetSpecialFolderPath(Short type)</a></h3>
+
+        <p>\93Á\92è\83t\83H\83\8b\83_\82ð\8eæ\93¾\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <p>type\82É\82Í\90®\90\94\82Å\83t\83H\83\8b\83_\8eí\95Ê\82ð\8ew\92è\82µ\82Ü\82·\81B<p>
+        <p>\88È\89º\82Ì\90\94\92l\82ð\8ew\92è\82Å\82«\82Ü\82·\81B</p>
+        <pre>
+    const FOLDERID_DESKTOP = &h0000 ' DESKTOP
+    const FOLDERID_INTERNET = &h0001 ' INTERNET
+    <b>const FOLDERID_PROGRAMS = &h0002 ' PROGRAMS \83v\83\8d\83O\83\89\83\80\83t\83@\83C\83\8b\83Y</b>
+    const FOLDERID_CONTROLS = &h0003 ' CONTROLS
+    const FOLDERID_PRINTERS = &h0004 ' PRINTERS
+    <b>const FOLDERID_PERSONAL = &h0005 ' PERSONAL \8cÂ\90l\83t\83H\83\8b\83_(\83}\83C\83h\83L\83\85\83\81\83\93\83g)</b>
+    <b>const FOLDERID_FAVORITES = &h0006 ' FAVORITES \82¨\8bC\82É\93ü\82è</b>
+    <b>const FOLDERID_STARTUP = &h0007 ' STARTUP \83X\83^\81[\83g\83A\83b\83v</b>
+    <b>const FOLDERID_RECENT = &h0008 ' RECENT \97\9a\97ð</b>
+    <b>const FOLDERID_SENDTO = &h0009 ' SENDTO \91\97\82é</b>
+    const FOLDERID_BITBUCKET = &h000a ' BITBUCKET
+    <b>const FOLDERID_STARTMENU = &h000b ' STARTMENU \83X\83^\81[\83g\83\81\83j\83\85\81[</b>
+    const FOLDERID_MYDOCUMENTS = &h0005 ' MYDOCUMENTS
+    const FOLDERID_MYMUSIC = &h000d ' MYMUSIC
+    const FOLDERID_MYVIDEO = &h000e ' MYVIDEO
+    <b>const FOLDERID_DESKTOPDIRECTORY = &h0010 ' DESKTOPDIRECTORY \83f\83X\83N\83g\83b\83v</b>
+    const FOLDERID_DRIVES = &h0011 ' DRIVES
+    const FOLDERID_NETWORK = &h0012 ' NETWORK
+    const FOLDERID_NETHOOD = &h0013 ' NETHOOD
+    <b>const FOLDERID_FONTS = &h0014 ' FONTS \83t\83H\83\93\83g</b>
+    <b>const FOLDERID_TEMPLATES = &h0015 ' TEMPLATES \83e\83\93\83v\83\8c\81[\83g</b>
+    const FOLDERID_COMMON_STARTMENU = &h0016 ' COMMON_STARTMENU
+    const FOLDERID_COMMON_PROGRAMS = &h0017 ' COMMON_PROGRAMS
+    const FOLDERID_COMMON_STARTUP = &h0018 ' COMMON_STARTUP
+    const FOLDERID_COMMON_DESKTOPDIRECTORY = &h0019 ' COMMON_DESKTOPDIRECTORY
+    <b>const FOLDERID_APPDATA = &h001a ' APPDATA \83A\83v\83\8a\83P\81[\83V\83\87\83\93\83f\81[\83^</b>
+    const FOLDERID_PRINTHOOD = &h001b ' PRINTHOOD
+    const FOLDERID_LOCAL_APPDATA = &h001c ' LOCAL_APPDATA
+    const FOLDERID_ALTSTARTUP = &h001d ' ALTSTARTUP
+    const FOLDERID_COMMON_ALTSTARTUP = &h001e ' COMMON_ALTSTARTUP
+    const FOLDERID_COMMON_FAVORITES = &h001f ' COMMON_FAVORITES
+    const FOLDERID_INTERNET_CACHE = &h0020 ' INTERNET_CACHE
+    const FOLDERID_COOKIES = &h0021 ' COOKIES
+    const FOLDERID_HISTORY = &h0022 ' HISTORY
+    const FOLDERID_COMMON_APPDATA = &h0023 ' COMMON_APPDATA
+    const FOLDERID_WINDOWS = &h0024 ' WINDOWS
+    const FOLDERID_SYSTEM = &h0025 ' SYSTEM
+    const FOLDERID_PROGRAM_FILES = &h0026 ' PROGRAM_FILES
+    const FOLDERID_MYPICTURES = &h0027 ' MYPICTURES
+    const FOLDERID_PROFILE = &h0028 ' PROFILE
+    const FOLDERID_SYSTEMX86 = &h0029 ' SYSTEMX86
+    const FOLDERID_PROGRAM_FILESX86 = &h002a ' PROGRAM_FILESX86
+    const FOLDERID_PROGRAM_FILES_COMMON = &h002b ' PROGRAM_FILES_COMMON
+    const FOLDERID_PROGRAM_FILES_COMMONX86 = &h002c ' PROGRAM_FILES_COMMONX86
+    const FOLDERID_COMMON_TEMPLATES = &h002d ' COMMON_TEMPLATES
+    const FOLDERID_COMMON_DOCUMENTS = &h002e ' COMMON_DOCUMENTS
+    const FOLDERID_COMMON_ADMINTOOLS = &h002f ' COMMON_ADMINTOOLS
+    const FOLDERID_ADMINTOOLS = &h0030 ' ADMINTOOLS
+    const FOLDERID_CONNECTIONS = &h0031 ' CONNECTIONS
+    const FOLDERID_COMMON_MUSIC = &h0035 ' COMMON_MUSIC
+    const FOLDERID_COMMON_PICTURES = &h0036 ' COMMON_PICTURES
+    const FOLDERID_COMMON_VIDEO = &h0037 ' COMMON_VIDEO
+    const FOLDERID_RESOURCES = &h0038 ' RESOURCES
+    const FOLDERID_RESOURCES_LOCALIZED = &h0039 ' RESOURCES_LOCALIZED
+    const FOLDERID_COMMON_OEM_LINKS = &h003a ' COMMON_OEM_LINKS
+    const FOLDERID_CDBURN_AREA = &h003b ' CDBURN_AREA
+    const FOLDERID_COMPUTERSNEARME = &h003d ' COMPUTERSNEARME
+</pre>
+        <p>\81¦ wsf\83t\83@\83C\83\8b\82Å<a href="wsfref.html">reference\82É\82æ\82é\83^\83C\83v\83\89\83C\83u\83\8a\82ð\8ew\92è</a>\82µ\82Ä\82¢\82é\8fê\8d\87\82Í\81A\8fã\8bL\92è\90\94\96¼\82Å\92l\82ð\8eQ\8fÆ\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+        <p>\81¦ \90\94\92l\82ÍWin32\82ÌSpecialFolderId\82Æ\93¯\82\82Å\82 \82è\81A\93¯\82\90\94\92l\82ð\93n\82·\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+        <p>\81¦ \91¾\8e\9a\82Í\8b\8cVersion1.0\82Ì\83w\83\8b\83v\82É\82à\8bL\8dÚ\82ª\82 \82Á\82½\90\94\92l\82Å\82·\81B</p>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\91\8dÝ\82µ\82È\82¢\8fê\8d\87\81A\8eæ\93¾\95s\89Â\94\\82¾\82Á\82½\8fê\8d\87\82ÍNULL\82ð\95Ô\82µ\82Ü\82·\81B</p>
+        <p>\82»\82¤\82Å\82È\82¯\82ê\82Î\83p\83X\82ð\95Ô\82µ\82Ü\82·\81B</p>
+
+
+        <h3><a name="CreateDirectory">BOOL CreateDirectory(BSTR path)</a></h3>
+
+        <p>\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬\82µ\82Ü\82·\81B</p>
+        <h4>\88ø\90\94</h4>
+        <p>\8dì\90¬\82·\82é\83f\83B\83\8c\83N\83g\83\8a\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
+        
+        <h4>\96ß\82è\92l</h4>
+        <p>\82·\82Å\82É\83f\83B\83\8c\83N\83g\83\8a\82ª\91\8dÝ\82·\82é\8fê\8d\87\82ÍTRUE\82ð\95Ô\82µ\82Ü\82·\81B</p>
+        <p>\91\8dÝ\82µ\82È\82¢\8fê\8d\87\82Í\83f\83B\83\8c\83N\83g\83\8a\82Ì\8dì\90¬\82ð\8ds\82¢\81A\90¬\8c÷\82µ\82½\82çTRUE\82ð\95Ô\82µ\82Ü\82·\81B</p>
+        <p>\83f\83B\83\8c\83N\83g\83\8a\82ª\8dì\90¬\82Å\82«\82È\82¯\82ê\82ÎFALSE\82ð\95Ô\82µ\82Ü\82·\81B</p>
+        
+        <h4>\94õ\8dl</h4>
+        <p>\8dì\90¬\82µ\82æ\82¤\82Æ\82·\82é\83f\83B\83\8c\83N\83g\83\8a\82Ì\90e\82ª\91\8dÝ\82µ\82È\82¢\8fê\8d\87\82Í\81A\90æ\82É\90e\82É\91k\82Á\82Ä\91½\91w\93I\82É\8dì\90¬\82µ\82Ü\82·\81B</p>
+        
+        <h3><a name="GetTempPath">BSTR GetTempPath()</a></h3>
+
+        <p>\83e\83\93\83|\83\89\83\8a\81E\83f\83B\83\8c\83N\83g\83\8a\82ð\8eæ\93¾\82µ\82Ü\82·\81B</p>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83V\83X\83e\83\80\82Ì\83T\83|\81[\83g\82·\82é\83e\83\93\83|\83\89\83\8a\83f\83B\83\8c\83N\83g\83\8a\82ð\8eæ\93¾\82µ\82Ü\82·\81B</p>
+        <p>\83V\83X\83e\83\80\82Å\90Ý\92è\82µ\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\83J\83\8c\83\93\83g\83f\83C\83\8c\83N\83g\83\8a\82Æ\82È\82è\82Ü\82·\81B</p>
+
+
+        <h3><a name="GetTempFileName">VARIANT GetTempFileName(Variant tempDir, Variant prefix)</a></h3>
+
+        <p>\83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\82ð\8dì\90¬\82µ\8eæ\93¾\82µ\82Ü\82·\81B</p>
+        <h4>\88ø\90\94</h4>
+        <p>\88ø\90\94\82Í\82·\82×\82Ä\8fÈ\97ª\89Â\94\\81B</p>
+        <div class="argsdesc">
+            <dl>
+                <dt>tempDir</dt>
+                <dd>\8dì\90¬\82·\82é\83f\83B\83\8c\83N\83g\83\8a\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                    \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82Æ\82È\82è\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>Prefix</dt>
+                <dd>\90æ\93ª\82R\95\8e\9a\82ª\83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\82Ì\93ª\82É\82Â\82¯\82ç\82ê\82Ü\82·\81B<br />
+                    \8fÈ\97ª\8e\9e\82Í\81utmp\81v\82Æ\82È\82è\82Ü\82·\81B</dd>
+            </dl>
+        </div>
+        
+        <h4>\96ß\82è\92l</h4>
+        <p>\90¬\8c÷\82·\82é\82Æ<u>\8eÀ\8dÛ\82É\8bó\82Ì\83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\82ª\8dì\90¬\82³\82ê</u>\81A\82»\82Ì\83p\83X\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+        <p>\8dì\90¬\82Å\82«\82È\82©\82Á\82½\8fê\8d\87\82ÍNULL\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+
+        <h3><a name="GetFileAttributes">Long GetFileAttributes(BSTR path)</a></h3>
+
+        <p>\83t\83@\83C\83\8b\82Ì\91®\90«\82ð\8eæ\93¾\82µ\82Ü\82·\81B</p>
+        <h4>\96ß\82è\92l</h4>
+        <p>\83t\83@\83C\83\8b\82ÌWin32\82Ì\83t\83@\83C\83\8b\91®\90«\83f\81[\83^\82»\82Ì\82Ü\82Ü\95Ô\82è\82Ü\82·\81B</p>
+        <p>\83t\83@\83C\83\8b\82ª\91\8dÝ\82µ\82È\82¢\81A\82Ü\82½\82Í\83A\83N\83Z\83X\82Å\82«\82È\82¢\8fê\8d\87\82Í-1\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+
+        <h3><a name="GetFileLastWriteTime">Date GetFileLastWriteTime(BSTR path)</a></h3>
+
+        <p>\83t\83@\83C\83\8b\82Ì\8dÅ\8fI\8dX\90V\93ú\95t\82ð\8eæ\93¾\82µ\82Ü\82·</p>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83t\83@\83C\83\8b\82Ì\8dÅ\8fI\8dX\90V\93ú\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+        <p>\8eæ\93¾\82Å\82«\82È\82¯\82ê\82ÎNULL\82ª\95Ô\82è\82Ü\82·\81B</p>
+
+        <h3><a name="GetFileCreationTime">Date GetFileCreationTime(BSTR path)</a></h3>
+
+        \83t\83@\83C\83\8b\82Ì\8dì\90¬\93ú\95t\82ð\8eæ\93¾\82·\82é
+        \8eæ\93¾\82Å\82«\82È\82¯\82ê\82ÎNULL\82ª\95Ô\82è\82Ü\82·\81B
+
+
+        <h3><a name="CopyFile">BOOL CopyFile(BSTR source, BSTR dist, Variant safemode)</a></h3>
+
+        <p>\83t\83@\83C\83\8b\82Ì\83R\83s\81[\82ð\8ds\82¢\82Ü\82·\81B</p>
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>source</dt>
+                <dd>\83R\83s\81[\8c³\82Ì\83t\83@\83C\83\8b\82Ì\83p\83X</dd>
+            </dl>
+            <dl>
+                <dt>dist</dt>
+                <dd>\83R\83s\81[\90æ\82Ì\83t\83@\83C\83\8b\82Ì\83p\83X</dd>
+            </dl>
+            <dl>
+                <dt>safemode</dt>
+                <dd>\8fã\8f\91\82«\8bÖ\8e~\83t\83\89\83O\81ATrue\82Ì\8fê\8d\87\82Í\8fã\8f\91\82«\82Å\82«\82Ü\82¹\82ñ\81B<br />
+                \8fÈ\97ª\8e\9e\82ÍFalse\82Å\82 \82è\81A\83R\83s\81[\90æ\82É\82·\82Å\82É\83t\83@\83C\83\8b\82ª\91\8dÝ\82·\82é\8fê\8d\87\82Í\8fã\8f\91\82«\82³\82ê\82Ü\82·\81B</dd>
+            </dl>
+        </div>
+        
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83s\81[\82É\90¬\8c÷\82·\82é\82ÆTRUE\82ª\95Ô\82è\82Ü\82·\81B</p>
+
+
+        <h3><a name="MoveFile">BOOL MoveFile(BSTR source, BSTR dist, Variant safemode)</a></h3>
+
+        <p>\83t\83@\83C\83\8b\82Ì\88Ú\93®\82ð\8ds\82¢\82Ü\82·\81B</p>
+        <p>\8eÀ\8dÛ\82É\82Í\81ASource\83t\83@\83C\83\8b\82ðdist\83t\83@\83C\83\8b\82É\83R\83s\81[\82µ\82½\82 \82Æ\81ASource\83t\83@\83C\83\8b\82ð\8dí\8f\9c\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <div class="argsdesc">
+            <dl>
+                <dt>source</dt>
+                <dd>\88Ú\93®\8c³\82Ì\83t\83@\83C\83\8b\82Ì\83p\83X</dd>
+            </dl>
+            <dl>
+                <dt>dist</dt>
+                <dd>\88Ú\93®\90æ\82Ì\83t\83@\83C\83\8b\82Ì\83p\83X</dd>
+            </dl>
+            <dl>
+                <dt>safemode</dt>
+                <dd>
+                    \8fã\8f\91\82«\8bÖ\8e~\83t\83\89\83O\81ATrue\82Ì\8fê\8d\87\82Í\8fã\8f\91\82«\82Å\82«\82Ü\82¹\82ñ\81B<br />
+                    \8fÈ\97ª\8e\9e\82ÍFalse\82Å\82 \82è\81A\88Ú\93®\90æ\82É\82·\82Å\82É\83t\83@\83C\83\8b\82ª\91\8dÝ\82·\82é\8fê\8d\87\82Í\8fã\8f\91\82«\82³\82ê\82Ü\82·\81B
+                </dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83R\83s\81[\82É\90¬\8c÷\82·\82é\82ÆTRUE\82ª\95Ô\82è\82Ü\82·\81B</p>
+        <p>\81¦ \83R\83s\81[\8cã\82ÉSource\82Ì\8dí\8f\9c\82É\8e¸\94s\82µ\82Ä\82àFALSE\82É\82Í\82È\82è\82Ü\82¹\82ñ\81B</p>
+
+        <h4>\92\8d\88Ó</h4>
+        <p>\83t\83@\83C\83\8b\82Í\83h\83\89\83C\83u\82ð\92´\82¦\82Ä\82Ì\88Ú\93®\82Í\82Å\82«\82È\82¢\82Æ\82¢\82¤\90«\8e¿\82ª\82 \82è\81A\96{\83\81\83\\83b\83h\82Å\82Í\8eÀ\91\95\82Ì\8aÈ\97ª\89»\82Ì\82½\82ß\81A
+        \88Ú\93®\82ª\82Å\82«\82é\93¯\88ê\83h\83\89\83C\83u\93à\82Å\82 \82Á\82Ä\82à\81A\8fí\82É\83R\83s\81[\82µ\82Ä\8dí\8f\9c\82Æ\82¢\82¤\93®\8dì\82ð\8ds\82¢\82Ü\82·\81B</p>
+
+        
+        <h3><a name="ChangeExtensionName">BSTR ChangeExtensionName(BSTR path, BSTR extname)</a></h3>
+
+        <p>\83t\83@\83C\83\8b\96¼\82Ì\8ag\92£\8eq\95\94\95ª\82ð\8ew\92è\8ag\92£\8eq\82É\95Ï\8dX\82µ\95Ô\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+
+        <div class="argsdesc">
+            <dl>
+                <dt>path</dt>
+                <dd>\83t\83@\83C\83\8b\96¼\82Ü\82½\82Í\83t\83@\83C\83\8b\82Ö\82Ì\83t\83\8b\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B</dd>
+            </dl>
+            <dl>
+                <dt>extname</dt>
+                <dd>\95Ï\8dX\82·\82é\8ag\92£\8eq\82ð\8ew\92è\82µ\82Ü\82·\81B(\83h\83b\83g\82Í\8aÜ\82Ý\82Ü\82¹\82ñ\81B)</dd>
+            </dl>
+        </div>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\8ag\92£\8eq\82ð\95Ï\8dX\82µ\82½\83p\83X\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+        <p>extname\82ª\8bó\82Ì\8fê\8d\87\82Í\8ag\92£\8eq\82ª\8f\9c\8b\8e\82³\82ê\82Ü\82·\81B</p>
+        <p>\8aù\91\82Ì\83t\83@\83C\83\8b\96¼\82É\8ag\92£\8eq\82ª\82È\82¢\8fê\8d\87\82Í\8ag\92£\8eq\82ª\92Ç\89Á\82³\82ê\82½\82Ì\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+
+        <h3><a name="GetLocalPathName">VARIANT GetLocalPathName(BSTR path)</a></h3>
+
+        <p>FILE\83v\83\8d\83g\83R\83\8b\8ew\92è\82Ì\83p\83X\82ð\83\8d\81[\83J\83\8b\81E\83p\83X\82É\95Ï\8a·\82µ\82Ü\82·\81B</p>
+        <h4>\88ø\90\94</h4>
+        <p>path\82É\82Í\95Ï\8a·\8c³\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\95Ï\8a·\8c\8b\89Ê\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+        <p>\83\8d\81[\83J\83\8b\83t\83@\83C\83\8b\82Æ\82µ\82Ä\95Ï\8a·\82à\82µ\82­\82Í\94»\95Ê\82Å\82«\82È\82¢\8fê\8d\87\82ÍNULL\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\92\8d\88Ó\93_</h4>
+        <p>\95Ï\8a·\89Â\94\\82È\82à\82Ì\82Í\81A</p>
+        <ul>
+            <li>file:///x:/\81\82Æ\82¢\82¤\83t\83@\83C\83\8b\83v\83\8d\83g\83R\83\8b\82Ì\82à\82Ì\81B</li>
+            <li>x:/\81\82Æ\82¢\82¤\90â\91Î\83p\83X\82Ì\82à\82Ì\81B</li>
+            <li>\\srv\... \82Æ\82¢\82¤UNC\8c`\8e®\82Ì\82à\82Ì\81B</li>
+        </ul>
+        <p>\8fã\8bL\88È\8aO\82ÍNULL\82ð\95Ô\82µ\82Ü\82·\81B</p>
+
+        <h3><a name="GetFileURL">VARIANT GetFileURL(BSTR path)</a></h3>
+
+        <p>\83\8d\81[\83J\83\8b\81E\83p\83X\82ÉFILE\83v\83\8d\83g\83R\83\8bURL\82É\95Ï\8a·\82µ\82Ü\82·\81B</p>
+        <h4>\88ø\90\94</h4>
+        <p>path\82É\82Í\95Ï\8a·\8c³\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\95Ï\8a·\8c\8b\89Ê\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+        <p>\83t\83@\83C\83\8bURL\82Æ\82µ\82Ä\95Ï\8a·\82à\82µ\82­\82Í\94»\95Ê\82Å\82«\82È\82¢\8fê\8d\87\82ÍNULL\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <p>Version2.0\82©\82ç\82Ì\83\81\83\\83b\83h\82Å\82·\81B</p>
+
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/ListObjSynop.html b/help/html/ListObjSynop.html
new file mode 100644 (file)
index 0000000..889ec2a
--- /dev/null
@@ -0,0 +1,184 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>List\83I\83u\83W\83F\83N\83\8aT\97v</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="ListObjSynop">
+
+<h2>List\83I\83u\83W\83F\83N\83\8aT\97v</h2>
+
+<p><code>List</code>\83I\83u\83W\83F\83N\83g\82Í\81A\83T\83C\83Y\89Â\95Ï\82È\95\8e\9a\97ñ\83\8a\83X\83g\82ð\8dì\90¬\82µ\81A\8a\8e\82Â\81A\8b[\8e\97\93I\82È\93ñ\8e\9f\8c³\94z\97ñ\82Æ\82µ\82Ä\83A\83N\83Z\83X\82Å\82«\82é\83I\83u\83W\83F\83N\83g\82Å\82·\81B</p>
+
+<p><code>SeraphyScriptDialog</code>\83I\83u\83W\83F\83N\83g\82©\82ç<code>CreateList</code>\83\81\83\\83b\83h\82É\82æ\82Á\82Ä\90\90¬\82µ\82Ü\82·\81B</p>
+
+
+<p style="margin-top: 1em;">\95\8e\9a\97ñ\83f\81[\83^\82ð\88ê\8e\9e\93I\82É\92~\90Ï\82·\82é\82æ\82¤\82È\97p\93r\82É\93Á\89»\82µ\82Ä\82¢\82Ü\82·\81B</p>
+
+<p>\83f\81[\83^\82Í\95\8e\9a\97ñ\82É\8cÀ\82è\81A\93Á\92è\82Ì\8bæ\90Ø\82è\95\8e\9a\82É\82æ\82Á\82Ä\95\8e\9a\97ñ\82ð\8bæ\90Ø\82è\81A\8ds\94Ô\8d\86\82Æ\97ñ\94Ô\8d\86\82É\82æ\82é\83A\83N\83Z\83X\82ª\89Â\94\\82Æ\82È\82Á\82Ä\82¢\82Ü\82·\81B</p>
+
+<p style="margin-top: 1em;">\81¦ \92Ê\8fí\82Ì\89Â\95Ï\92·\94z\97ñ\82Å\82 \82ê\82Î\81A\8c»\8dÝ\82Å\82Í\83V\83X\83e\83\80\95W\8f\80\82Ì<code>"Scripting.Dictionary"</code>\83I\83u\83W\83F\83N\83g\82â\81A
+DotNET\82Ì\83R\83\93\83|\81[\83l\83\93\83g\82ðCOM\8co\97R\82Å\97\98\97p\82·\82é<code>"System.Collections.ArrayList"</code>\83I\83u\83W\83F\83N\83g\82Ì\82æ\82¤\82È\95û\96@\82È\82Ç\81A
+\82³\82Ü\82´\82Ü\82È\94Ä\97p\93I\82È\8eè\92i\82ª\97p\88Ó\82³\82ê\82Ä\82¨\82è\81A\82»\82¿\82ç\82ð\8eg\82¤\82Ù\82¤\82ª\97Ç\82¢\82Å\82µ\82å\82¤\81B</p>
+
+<h3>\83v\83\8d\83p\83e\83B</h3>
+<table >
+<thead>
+<tr style="background-color: #ddddee;">
+<th>\83v\83\8d\83p\83e\83B</th>
+<th>\83f\81[\83^\8c^</th>
+<th>\90à\96¾</th>
+</tr>
+</thread>
+<tbody>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\90Ý\92è</td>
+</tr>
+
+<tr>
+<td>ColSeparateChar</td>
+<td>\90\94\92l</td>
+<td>\83T\83u\8d\80\96Ú\82Ì\8bæ\90Ø\82è\95\8e\9a\82ð\90Ý\92è\82·\82é\81B(\83f\83t\83H\83\8b\83g\82Í\83^\83u\82à\82µ\82­\82Í\8bó\94\92\82ð\8bæ\90Ø\82è\82Æ\82Ý\82È\82·.)</td>
+</tr>
+
+<tr>
+<td>ColSparateShortSpaceture</td>
+<td>Boolean</td>
+<td>\98A\91±\82·\82é\8bó\94\92\82ð1\82Â\82Ì\8bæ\90Ø\82è\82Æ\82Ý\82È\82·\82©\81H(\83f\83t\83H\83\8b\83g\82ÍTrue)</td>
+</tr>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\83f\81[\83^</td>
+</tr>
+
+<tr>
+<td>Count</td>
+<td>Long</td>
+<td>\83\8a\83X\83g\82Ì\97v\91f\90\94\82ð\95Ô\82·</td>
+</tr>
+
+<tr>
+<td>Value(idx)</td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83\8a\83X\83g\82Ì\8ew\92è\88Ê\92u\82Ì\83f\81[\83^\82ð\90Ý\92è\81E\8eæ\93¾</td>
+</tr>
+
+<tr>
+<td>LastValue</td>
+<td>\95\8e\9a\97ñ</td>
+<td>\96\96\94ö\82Ì\83f\81[\83^\82ð\90Ý\92è\81E\8eæ\93¾</td>
+</tr>
+
+<tr>
+<td>ColValue(idx,colidx)</td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83\8a\83X\83g\82Ì\8ew\92è\88Ê\92u\82Ì\8ew\92è\83T\83u\8d\80\96Ú\82ð\90Ý\92è\81E\8eæ\93¾</td>
+</tr>
+
+<tr>
+<td>ColCount(idx)</td>
+<td>Short</td>
+<td>\83\8a\83X\83g\82Ì\8ew\92è\88Ê\92u\82É\82 \82é\83T\83u\8d\80\96Ú\90\94\82ð\95Ô\82·</td>
+</tr>
+
+</tbody>
+</table>
+
+<h3>\83\81\83\\83b\83h</h3>
+<table >
+<thead>
+<tr style="background-color: #ddddee;">
+<th>\83\81\83\\83b\83h</th>
+<th>\90à\96¾</th>
+</tr>
+</thread>
+<tbody>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83\8a\83X\83g\91\80\8dì</td>
+</tr>
+
+<tr>
+<td>AddHead(BSTR mes)</td>
+<td>\83\8a\83X\83g\82Ì\90æ\93ª\82É\92Ç\89Á\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td>AddTail(BSTR mes)</td>
+<td>\83\8a\83X\83g\82Ì\96\96\94ö\82É\92Ç\89Á\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td>Insert(Long idx, BSTR mes)</td>
+<td>\8ew\92è\88Ê\92u\82Ì\92Ç\89Á\82É\92Ç\89Á\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td>RemoveHead</td>
+<td>\83\8a\83X\83g\82Ì\90æ\93ª\82ð\8dí\8f\9c\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td>RemoveTail</td>
+<td>\83\8a\83X\83g\82Ì\96\96\94ö\82ð\8dí\8f\9c\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td>Remove(Long idx)</td>
+<td>\8ew\92è\88Ê\92u\82ð\8dí\8f\9c\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td>RemoveAll</td>
+<td>\82·\82×\82Ä\8dí\8f\9c\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\8c\9f\8dõ</td>
+</tr>
+
+<tr>
+<td>long Find(Long start, Long end, BSTR strMatch, VARIANT type)</td>
+<td rowspan="2">\95\8e\9a\97ñ\82ð\8c\9f\8dõ\82µ\82Ü\82·\81B<br>
+Start\82Í-1\82ð\8ew\92è\82·\82é\82Æ\8dÅ\8f\89\82©\82ç\81BEnd\82Í-1\82ð\8ew\92è\82·\82é\82Æ\8dÅ\8cã\82Æ\82È\82è\82Ü\82·\81B<br>
+Start\81`End\8aÔ\82Å\8c\9f\8dõ\82ð\8ds\82¢\82Ü\82·\81B<br>
+Type\82Í\8fÈ\97ª\8e\9e0\82Æ\82È\82è\81A0\82Ì\8fê\8d\87\82Í\88ê\92v\82·\82é\95\8e\9a\82ª\8aÜ\82Ü\82ê\82Ä\82¢\82ê\82Î\90¬\97§\81A1\82È\82ç\82Î\90æ\93ª\82ª\88ê\92v\82·\82ê\82Î\90¬\97§\81A2\82Í\91S\82Ä\88ê\92v\82µ\82È\82¯\82ê\82Î\90¬\97§\82µ\82È\82¢\81B<br>
+Colidx\82Í\83T\83u\8d\80\96Ú\82ð\8ew\92è\82µ\82Ä\8c\9f\8dõ\82µ\82Ü\82·\81B</td>
+</tr>
+<tr>
+<td>long FindCol(Long start, Long end, Short colidx, BSTR strMatch, VARIANT type)</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\93Á\8eê</td>
+</tr>
+
+<tr>
+<td>ChangeTerminateChar(Long start, Long end, BSTR strNewSeparateChar, VARIANT md)</td>
+<td>\8bæ\90Ø\82è\95\8e\9a\82ð\95Ï\8a·\82µ\82Ü\82·\81B<br>
+\8c»\8dÝ\97L\8cø\82È\8bæ\90Ø\82è\95\8e\9a\82Å\8e¯\95Ê\82³\82ê\82é\83T\83u\8d\80\96Ú\82ð\81A\90V\82µ\82¢\8bæ\90Ø\82è\95\8e\9a\82Å\8bæ\90Ø\82è\82È\82¨\82µ\82Ü\82·\81B<br>
+Start\82Í-1\82Å\8dÅ\8f\89\82©\82ç\81BEnd\82à-1\82Å\96\96\94ö\82Ü\82Å\82Ì\94Í\88Í\82ð\8ew\92è\82µ\82Ü\82·\81B<br>
+Md\82Í\95Ï\8a·\8cã\82É\81AstrNewSeparateChar\82ð\90V\82µ\82¢\8bæ\90Ø\82è\95\8e\9a\82Æ\82µ\82Ä\94F\8e¯\82·\82é\82©\8ew\92è\82·\82é\81B\83f\83B\83t\83H\83\8b\83g\82Í\8bæ\90Ø\82è\95\8e\9a\82Æ\82µ\82Ä\8e¯\95Ê\82µ\82Ü\82¹\82ñ\81B</td>
+</tr>
+
+</tbody>
+</table>
+
+
+</div>
+</div>
+</body>
+</html>
diff --git a/help/html/OutputWindowSynop.html b/help/html/OutputWindowSynop.html
new file mode 100644 (file)
index 0000000..1742281
--- /dev/null
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>OutputWindow\83I\83u\83W\83F\83N\83\8aT\97v</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="OutputWindowSynop">
+
+<h2>OutputWindow\83I\83u\83W\83F\83N\83\8aT\97v</h2>
+
+<p><code>OutputWindow</code>\83I\83u\83W\83F\83N\83g\82Í\81A\83T\83C\83Y\95Ï\8dX\89Â\94\\82È\83e\83L\83X\83g\95\\8e¦\97p\82Ì\83E\83B\83\93\83h\83E\82Å\82·\81B</p>
+
+<p><code>SeraphyScriptDialog</code>\83I\83u\83W\83F\83N\83g\82Ì<code>CreateOutputWindow</code>\83\81\83\\83b\83h\82É\82æ\82Á\82Ä\90\90¬\82³\82ê\82Ü\82·\81B</p>
+
+<p style="margin-top: 1em;">\83X\83N\83\8a\83v\83g\82Ì\90i\8ds\8fó\91Ô\82È\82Ç\82ð\92\80\8e\9f\95\\8e¦\82·\82é\82È\82Ç\82Ì\97p\93r\82ð\91z\92è\82µ\82Ä\82¢\82Ü\82·\81B</p>
+
+<code><pre>
+    Dim obj, wnd, cnt
+    Set obj = CreateObject("SeraphyScriptDialog")
+    <b>Set wnd = obj.CreateOutputWindow()</b>
+    wnd.Visible = true
+    cnt = 0
+    Do While(cnt &lt; 100)
+        cnt = cnt + 1
+        wnd.Text = "\8f\88\97\9d\8dH\92ö\90\94 " &amp; cnt &amp; "/100"
+        <b>obj.DoEvents</b>
+        obj.Sleep(100)
+    Loop
+    MsgBox "ok"
+</pre></code>
+
+<div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+<img src="sample4.png"><br/>
+<span style="font-size: 80%; color: gray;">\97á: \83A\83E\83g\83v\83b\83g\83E\83B\83\93\83h\83E\82Ì\95\\8e¦</span>
+</div>
+
+<p>\83A\83E\83g\83v\83b\83g\83E\83B\83\93\83h\83E\82Í\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O\82Æ\8e\97\82Ä\82¢\82Ä\81A\83E\83B\83\93\83h\83E\82ð\95\\8e¦\82µ\82½\82 \82Æ\83X\83N\83\8a\83v\83g\82É\90§\8cä\82ð\95Ô\82·\82½\82ß\81A
+\83E\83B\83\93\83h\83E\82Ì\82³\82Ü\82´\82Ü\82È\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82·\82é\82½\82ß\82É\81A\83X\83N\83\8a\83v\83g\82ª\92è\8aú\93I\82É<code>DoEvents</code>\81A\82à\82µ\82­<code>WaitEvent</code>\82Í\83\81\83\\83b\83h\82ð\8cÄ\82Ñ\8fo\82³\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B</p>
+<p style="margin-top: 1em;"><u>\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O\82Æ\95¹\97p\82·\82é\8fê\8d\87\82Í\81A<code>WaitEvent</code>\82ð\8eg\97p\82·\82é\82±\82Æ\82Å\81A\83A\83E\83g\83v\83b\83g\83E\83B\83\93\83h\83E\82Ì\83\81\83b\83Z\81[\83W\8f\88\97\9d\82à\93¯\8e\9e\82É\8ds\82í\82ê\82Ü\82·\81B</u></p>
+<p>\83\82\81[\83h\83\8c\83X\83E\83B\83\93\83h\83E\82ª\82È\82¢\8fê\8d\87\82Í\81A<code>DoEvents</code>\82ð\97p\82¢\82Ä\82­\82¾\82³\82¢\81B</p>
+
+<h4>\92\8d\88Ó\93_</h4>
+
+<p>\83e\83L\83X\83g\82Í\83\86\81[\83U\81[\82É\82æ\82Á\82Ä\8f\91\82«\8a·\82¦\89Â\94\\82Å\82·\81B</p>
+
+<p>Text\83v\83\8d\83p\83e\83B\82ð\93Ç\82Ý\8eæ\82é\82Æ\81A\82»\82Ì\8e\9e\93_\82Ì\83E\83B\83\93\83h\83E\82Ì\93à\97e\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+
+<p style="margin-top: 1em;">\83E\83B\83\93\83h\83E\82ð\94j\8aü\82·\82é\82½\82ß\82Ì\83\81\83\\83b\83h\82Í\82 \82è\82Ü\82¹\82ñ\81B\83X\83R\81[\83v\82ð\94²\82¯\82é\82Æ\8e©\93®\93I\82É\94j\8aü\82³\82ê\82Ü\82·\81B</p>
+
+<p style="margin-top: 1em;">\81¦ \8f«\97\88\82Ì\83o\81[\83W\83\87\83\93\82É\82¨\82¢\82Ä\82Í\96{\83E\83B\83\93\83h\83E\82Í\95Ê\83X\83\8c\83b\83h\82Å\93®\8dì\82·\82é\89Â\94\\90«\82à\82 \82è\82Ü\82·\81B</p>
+
+<h3>\83v\83\8d\83p\83e\83B</h3>
+<table >
+<thead>
+<tr style="background-color: #ddddee;">
+<th>\83v\83\8d\83p\83e\83B</th>
+<th>\83f\81[\83^\8c^</th>
+<th>\90à\96¾</th>
+</tr>
+</thread>
+<tbody>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\95\\8e¦\90§\8cä</td>
+</tr>
+
+<tr>
+<td>Visible</td>
+<td>Boolean</td>
+<td>\83E\83B\83\93\83h\83E\82Ì\95\\8e¦\81E\94ñ\95\\8e¦</td>
+</tr>
+
+<tr>
+<td>Enable</td>
+<td>Boolean</td>
+<td>\83E\83B\83\93\83h\83E\82Ì\97L\8cø\81E\96³\8cø</td>
+</tr>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\88Ê\92u\81E\83T\83C\83Y</td>
+</tr>
+
+<tr>
+<td>PosX</td>
+<td>\90\94\92l</td>
+<td>\83E\83B\83\93\83h\83E\82Ì\8d\8fã\82Ì\82w\8dÀ\95W</td>
+</tr>
+
+<tr>
+<td>PosY</td>
+<td>\90\94\92l</td>
+<td>\83E\83B\83\93\83h\83E\82Ì\8d\8fã\82Ì\82x\8dÀ\95W</td>
+</tr>
+
+<tr>
+<td>Width</td>
+<td>\90\94\92l</td>
+<td>\83E\83B\83\93\83h\83E\82Ì\95\9d</td>
+</tr>
+
+<tr>
+<td>Height</td>
+<td>\90\94\92l</td>
+<td>\83E\83B\83\93\83h\83E\82Ì\8d\82\82³</td>
+</tr>
+
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\93à\97e</td>
+</tr>
+
+<tr>
+<td>Text</td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83E\83B\83\93\83h\83E\82É\95\\8e¦\82·\82é\83e\83L\83X\83g</td>
+</tr>
+
+<tr>
+<td>Title</td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83E\83B\83\93\83h\83E\82Ì\83L\83\83\83v\83V\83\87\83\93</td>
+</tr>
+
+</tbody>
+</table>
+
+</div>
+</div>
+</body>
+</html>
+
+
diff --git a/help/html/PreferencesProp.html b/help/html/PreferencesProp.html
new file mode 100644 (file)
index 0000000..5b452d7
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\83v\83\8d\83p\83e\83B\81^\90Ý\92è\8aÖ\98A</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+
+<h2>SeraphyScriptDialog\83v\83\8d\83p\83e\83B\81^\90Ý\92è\83t\83@\83C\83\8b\8aÖ\98A</h2>
+
+<h3><a name="ProfilePath">BSTR ProfilePath</a></h3>
+
+<p>\83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b(*.ini)\82Ì\83p\83X\82ð\83t\83\8b\83p\83X\82Å\90Ý\92è\82à\82µ\82­\82Í\8eæ\93¾\82µ\82Ü\82·\81B</p>
+
+<p>ProfileValue\82Å\8eg\97p\82³\82ê\82é\8f\89\8aú\89»\83t\83@\83C\83\8b\82Å\82·\81B</p>
+
+<p>\83t\83@\83C\83\8b\8c`\8e®\82ÍWindows\95W\8f\80\82Ìini\83t\83@\83C\83\8b\8c`\8e®\82Å\82·\81B</p>
+
+<p style="margin-top: 1em;">Version2.0\82æ\82è\81A\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\8fã\82Ì\81u<b>preference.ini</b>\81v\82ª\8f\89\8aú\90Ý\92è\82³\82ê\82Ü\82·\81B</p>
+
+<h4>(\95â\91«)</h4>
+<p>\92Ê\8fí\81Avbs\82È\82Ç\82ð\83_\83u\83\8b\83N\83\8a\83b\83N\82Å\8eÀ\8ds\82·\82é\82Æ\81A\82»\82Ìvbs\82ª\82 \82é\8fê\8f\8a\82ª\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82Æ\82È\82è\82Ü\82·\81B</p>
+
+<h3><a name="ProfileValue">BSTR ProfileValue(KeyName)</a></h3>
+
+<p>\83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b(*.ini)\82Ì\93à\97e\82ð\93Ç\82Ý\8f\91\82«\82µ\82Ü\82·\81B</p>
+
+<p>\92l\82Í\95\8e\9a\97ñ\82Å\82·\81B</p>
+
+<p>\83t\83@\83C\83\8b\82ª\91\8dÝ\82µ\82È\82¢\82©\81A\96¢\92è\8b`\82Ì\96¼\91O\82ð\8eQ\8fÆ\82·\82é\82Æ\8bó\82Ì\95\8e\9a\97ñ\82ª\95Ô\82è\82Ü\82·\81B</p>
+
+<code><pre>
+    Dim obj
+    Set obj = CreateObject("SeraphyScriptDialog")
+
+    Dim msg
+    msg = obj.ProfileValue("Message")
+
+    MsgBox msg
+
+    obj.ProfileValue("Message") = msg &amp; "@"
+</pre></code>
+
+<p>\82±\82Ì\83X\83N\83\8a\83v\83g\82ð\8eÀ\8ds\82·\82é\82½\82Ñ\82É\81u@\81v\82Ì\95\\8e¦\82ª\91\9d\82¦\82Ä\82ä\82«\82Ü\82·\81B</p>
+
+<p style="margin-top: 1em;">\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\8fã\82Ì\81upreference.ini\81v\82Í\81A\88È\89º\82Ì\82æ\82¤\82È\93à\97e\82Æ\82È\82è\82Ü\82·\81B</p>
+
+<div style="margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+<code><pre>
+[SeraphyScriptDialogData]
+Message=@@@@
+</code></pre>
+</div>
+
+</div>
+</div>
+</body>
+</html>
+
+
diff --git a/help/html/ScrDlgRootSynop.html b/help/html/ScrDlgRootSynop.html
new file mode 100644 (file)
index 0000000..2d050cd
--- /dev/null
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\8aT\97v</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="ScrDlgRootSynop">
+
+<h2>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\8aT\97v</h2>
+
+<p>\82±\82Ì\83I\83u\83W\83F\83N\83g\82ÍSeraphyScriptDialog\83I\83u\83W\83F\83N\83g\82Ì\8aî\92ê\83I\83u\83W\83F\83N\83g\82Å\82·\81B</p>
+
+<p>\82±\82Ì\83I\83u\83W\83F\83N\83g\82Í\81A\82»\82ê\8e©\90g\82ª\83\86\81[\83e\83\8a\83e\83B\81[\8b@\94\\82ð\82à\82Á\82Ä\82¢\82é\91¼\81A
+<ul>
+<li>\83\86\81[\83U\81[\92è\8b`\83_\83C\83A\83\8d\83O
+<li>\83\8a\83X\83g
+<li>\83A\83E\83g\83v\83b\83g\83E\83B\83\93\83h\83E
+</ul>
+<p>\82È\82Ç\82Ì\83I\83u\83W\83F\83N\83g\82Ì\8dì\90¬\82ð\92S\82Á\82Ä\82¢\82Ü\82·\81B</p>
+
+<h3>\83v\83\8d\83p\83e\83B </h3>
+<table >
+<thead>
+<tr style="background-color: #ddddee;">
+<th>\83v\83\8d\83p\83e\83B</th>
+<th>\83f\81[\83^\8c^</th>
+<th>\90à\96¾</th>
+</tr>
+</thread>
+<tbody>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\83f\81[\83^\95Ï\8a·\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="DataConvProp.html#DefaultIS">DefaultIS</a></td>
+<td>Short</td>
+<td>\95\8e\9a\97ñ\95Ï\8a·\82Ì\83f\83t\83H\83\8b\83g\8c\85\90\94</td>
+</tr>
+
+<tr>
+<td><a href="DataConvProp.html#DefaultFS">DefaultFS</a></td>
+<td>Short</td>
+<td>\95\8e\9a\97ñ\95Ï\8a·\82Ì\83f\83t\83H\83\8b\83g\97L\8cø\90¸\93x</td>
+</tr>
+
+<tr>
+<td><a href="DataConvProp.html#DefaultTolerance">DefaultTolerance</a></td>
+<td>Double</td>
+<td>\8eÀ\90\94\94ä\8ar\82Ì\83f\83t\83H\83\8b\83g\90¸\93x</td>
+</tr>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\90Ý\92è\83t\83@\83C\83\8b\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="PreferencesProp.html#ProfilePath">ProfilePath</a></td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b(*.ini)\82Ì\83p\83X</td>
+</tr>
+
+<tr>
+<td><a href="PreferencesProp.html#ProfileValue">ProfileValue(KeyName)</a></td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83\86\81[\83U\81[\92è\8b`\8f\89\8aú\89»\83t\83@\83C\83\8b(*.ini)\82Ì\92l\82Ö\82Ì\83A\83N\83Z\83X</td>
+</tr>
+</tbody>
+</table>
+
+<h3>\83\81\83\\83b\83h</h3>
+<table >
+<thead>
+<tr style="background-color: #ddddee;">
+<th>\83\81\83\\83b\83h</th>
+<th>\90à\96¾</th>
+</tr>
+</thread>
+<tbody>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\90f\92f</td>
+</tr>
+
+<tr>
+<td>About</td>
+<td>\83o\81[\83W\83\87\83\93\8fî\95ñ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83I\83u\83W\83F\83N\83g\8dì\90¬\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="UserFormSynop.html">CreateForm</a></td>
+<td>\83\86\81[\83U\81[\92è\8b`\83_\83C\83A\83\8d\83O\81E\83I\83u\83W\83F\83N\83g\82ð\8dì\90¬\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="OutputWindowSynop.html">CreateOutputWindow</a></td>
+<td>\83A\83E\83g\83v\83b\83g\83E\83B\83\93\83h\83E\82ð\8dì\90¬\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="ListObjSynop.html">CreateList</a></td>
+<td>\83\8a\83X\83g\81E\83I\83u\83W\83F\83N\83g\82ð\8dì\90¬\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83R\83\82\83\93\83_\83C\83A\83\8d\83O\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="CommonDlgMethod.html#GetOpenFileName">GetOpenFileName</a></td>
+<td>\81u\83t\83@\83C\83\8b\82ð\8aJ\82­\81v\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="CommonDlgMethod.html#GetSaveFileName">GetSaveFileName</a></td>
+<td>\81u\96¼\91O\82ð\82Â\82¯\82Ä\95Û\91\81v\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="CommonDlgMethod.html#BrowseForFolder">BrowseForFolder</a></td>
+<td>\81u\83t\83H\83\8b\83_\82ð\91I\91ð\81v\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="CommonDlgMethod.html#MessageBox">MessageBox</a></td>
+<td>\83\81\83b\83Z\81[\83W\83{\83b\83N\83X\82ð\95\\8e¦\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\8aO\95\94\83v\83\8d\83O\83\89\83\80\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="ShellMethod.html#ShellExecute">ShellExecute</a></td>
+<td>\83V\83F\83\8b\82Å\83t\83@\83C\83\8b\82ð\8aJ\82«\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="ShellMethod.html#VersionCheck">VersionCheck</a></td>
+<td>\83t\83@\83C\83\8b\82Ì\83o\81[\83W\83\87\83\93\82ð\83`\83F\83b\83N\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="ShellMethod.html#GetFileVersion">GetFileVersion</a></td>
+<td>\83t\83@\83C\83\8b\82Ì\83o\81[\83W\83\87\83\93\82ð\8eæ\93¾\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83V\83X\83e\83\80\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="SystemMethod.html#ExitWindows">ExitWindows</a></td>
+<td>\83E\83B\83\93\83h\83E\83Y\82ð\83V\83\83\83b\83g\83_\83E\83\93\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83t\83@\83C\83\8b\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#GetSpecialFolderPath">GetSpecialFolderPath</a></td>
+<td>\93Á\92è\83t\83H\83\8b\83_\82ð\8eæ\93¾\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#CreateDirectory">CreateDirectory</a></td>
+<td>\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#GetTempPath">GetTempPath</a></td>
+<td>\83e\83\93\83|\83\89\83\8a\81E\83f\83B\83\8c\83N\83g\83\8a\82ð\8eæ\93¾\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#GetTempFileName">GetTempFileName</a></td>
+<td>\83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\82ð\8eæ\93¾\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#GetFileAttributes">GetFileAttributes</a></td>
+<td>\83t\83@\83C\83\8b\82Ì\91®\90«\82ð\8eæ\93¾\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#GetFileLastWriteTime">GetFileLastWriteTime</a></td>
+<td>\83t\83@\83C\83\8b\82Ì\8dÅ\8fI\8dX\90V\93ú\95t\82ð\8eæ\93¾\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#GetFileCreationTime">GetFileCreationTime</a></td>
+<td>\83t\83@\83C\83\8b\82Ì\8dì\90¬\93ú\95t\82ð\8eæ\93¾\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#CopyFile">CopyFile</a></td>
+<td>\83t\83@\83C\83\8b\82ð\83R\83s\81[\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#MoveFile">MoveFile</a></td>
+<td>\83t\83@\83C\83\8b\82ð\88Ú\93®\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#ChangeExtensionName">ChangeExtensionName</a></td>
+<td>\83t\83@\83C\83\8b\96¼\82Ì\8ag\92£\8eq\95\94\95ª\82ð\8ew\92è\8ag\92£\8eq\82É\95Ï\8dX\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#GetLocalPathNameFILE">GetLocalPathNameFILE</a></td>
+<td>\83v\83\8d\83g\83R\83\8b\8ew\92è\82Ì\83p\83X\82ð\83\8d\81[\83J\83\8b\81E\83p\83X\82É\95Ï\8a·\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="FileMethod.html#GetFileURL">GetFileURL</a></td>
+<td>\83\8d\81[\83J\83\8b\81E\83p\83X\82ð\83t\83@\83C\83\8bURL\82É\95Ï\8a·\82µ\82Ü\82·\81B</td>
+</tr>
+    
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83C\83x\83\93\83g\8f\88\97\9d\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="EventMethod.html#GetASyncKeyState">GetASyncKeyState</a></td>
+<td>\94ñ\93¯\8aú\82Å\83L\81[\93ü\97Í\82ð\8c\9f\8d¸\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="EventMethod.html#DoEvents">DoEvents</a></td>
+<td>\83C\83x\83\93\83g\83\8b\81[\83v\82Å\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="EventMethod.html#Sleep">Sleep</a></td>
+<td>\83X\83\8c\83b\83h\82ð\8ew\92è\8e\9e\8aÔ\92â\8e~\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="EventMethod.html#WaitCursor">WaitCursor</a></td>
+<td>\8eÀ\8ds\92\86\82Ì\8d»\8e\9e\8cv\83J\81[\83\\83\8b\82ð\95\\8e¦\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83f\81[\83^\95Ï\8a·\8aÖ\98A</td>
+</tr>
+
+<tr>
+<td><a href="DataConvMethod.html#FloatS">FloatS</a></td>
+<td>\8eÀ\90\94\82ð\95\8e\9a\97ñ\82É\8ew\92è\90¸\93x\82Å\95Ï\8a·\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DataConvMethod.html#IntS">IntS</a></td>
+<td>\90®\90\94\82ð\95\8e\9a\97ñ\82É\8ew\92è\8c\85\90\94\82Å\95Ï\8a·\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DataConvMethod.html#IsEqual">IsEqual</a></td>
+<td>\8eÀ\90\94\82ð\8ew\92è\90¸\93x\88È\93à\82Å\88ê\92v\82·\82é\82©\8c\9f\8d¸\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DataConvMethod.html#IsPointEqual">IsPointEqual</a></td>
+<td>\82Q\93_\8aÔ\82Ì\8b\97\97£\82ª\8ew\92è\90¸\93x\88È\93à\82É\82 \82é\82©\8c\9f\8d¸\82µ\82Ü\82·\81B</td>
+</tr>
+
+</tbody>
+</table>
+
+<p style="margin-top: 1em;">\81¦\83t\83@\83C\83\8b\8aÖ\98A\82Í\8c»\8dÝ\82Í\83V\83X\83e\83\80\95W\8f\80\82ÌFileSystemObject\82ð\8eg\82¤\82Ù\82¤\82ª\94Ä\97p\93I\82Å\82·\81B</p>
+
+</div>
+</div>
+</body>
+</html>
diff --git a/help/html/ShellMethod.html b/help/html/ShellMethod.html
new file mode 100644 (file)
index 0000000..f2cf8b2
--- /dev/null
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\83\81\83\\83b\83h\81^\83V\83F\83\8b\8aÖ\98A</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>SeraphyScriptDialog\83\81\83\\83b\83h\81^\83V\83F\83\8b\8aÖ\98A</h2>
+
+    <h3><a name="ShellExecute">Short ShellExecute(Variant verb, Variant appname, Variant option, Variant initdir, Variant showmode, Variant waitcount)</a></h3>
+
+    <p>\83V\83F\83\8b\82Å\83t\83@\83C\83\8b\82ð\8aJ\82«\82Ü\82·\81B</p>
+
+    <h4>\88ø\90\94</h4>
+
+    <p>\82·\82×\82Ä\82Ì\88ø\90\94\82Í\8fÈ\97ª\89Â\94\\82Å\82·\81B</p>
+
+    <div class="argsdesc">
+        <dl>
+            <dt>verb</dt>
+            <dd>\83V\83F\83\8b\82É\82Ç\82Ì\82æ\82¤\82È\96Ú\93I\82Å\83t\83@\83C\83\8b\82ð\8aJ\82­\82©\8ew\92è\82µ\82Ü\82·\81B<br />
+                \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\81uOPEN\81v\82Æ\82È\82è\82Ü\82·\81B<br />
+                \82»\82Ì\91¼\82É\88ê\94Ê\93I\82É\82Í\81uEDIT\81v\81uPRINT\81v\82È\82Ç\82ª\82 \82è\82Ü\82·\82ª\81A\83t\83@\83C\83\8b\82Ì\8eí\97Þ\82É\82æ\82è\91Î\89\9e\82µ\82Ä\82¢\82éVerb\82Í\88Ù\82È\82è\82Ü\82·\81B
+            </dd>
+        </dl>
+        <dl>
+            <dt>appname</dt>
+            <dd>\8eÀ\8ds\82·\82é\83A\83v\83\8a\83P\81[\83V\83\87\83\93\96¼\81A\83t\83@\83C\83\8b\82Ü\82½\82Í\8aÖ\98A\82Ã\82¯\82ç\82ê\82Ä\82¢\82é\83h\83L\83\85\83\81\83\93\83g\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B</dd>
+        </dl>
+        <dl>
+            <dt>option</dt>
+            <dd>\8eÀ\8ds\82·\82é\83t\83@\83C\83\8b\82É\88ø\82«\93n\82·\83I\83v\83V\83\87\83\93\88ø\90\94\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+            \95s\97v\82Å\82 \82ê\82Î\8fÈ\97ª\82Å\82«\82Ü\82·\81B</dd>
+        </dl>
+        <dl>
+            <dt>initdir</dt>
+            <dd>
+                \8eÀ\8ds\82·\82é\83v\83\8d\83Z\83X\82Ì\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\8ew\92è\82µ\82Ü\82·\81B
+                \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ª\8ew\92è\82³\82ê\82½\82Æ\82Ý\82È\82µ\82Ü\82·\81B
+            </dd>
+        </dl>
+        <dl>
+            <dt>showmode</dt>
+            <dd>
+                \83E\83B\83\93\83h\83E\82Ì\8aJ\82«\95û\82ð\8e¦\82µ\82Ü\82·\81B<br />
+                \88È\89º\82Ì\90à\96¾\82Ì\90\94\92l\82Ì\82¢\82¸\82ê\82©\82ð\8ew\92è\82Å\82«\82Ü\82·\81B<br />
+                \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\81uShowNormal(0)\81v\82ª\8ew\92è\82³\82ê\82½\82Æ\82Ý\82È\82³\82ê\82Ü\82·\81B
+            </dd>
+        </dl>
+        <dl>
+            <dt>waitcount</dt>
+            <dd>
+                \83v\83\8d\83Z\83X\8fI\97¹\82Ü\82Å\82Ì\91Ò\8b@\8e\9e\8aÔ\82ð\8ew\92è\82µ\82Ü\82·\81B<br />
+                \8fI\97¹\91Ò\82¿\8e\9e\8aÔ\82ð0.1\95b\92P\88Ê\82Å\8ew\92è\82µ\82Ü\82·\81B<br />
+                \8fÈ\97ª\82µ\82½\8fê\8d\87\82Í\81u\82È\82µ\81v\82Æ\82È\82è\82Ü\82·\81B<br />
+                -1\82ð\8ew\92è\82·\82é\82Æ\8fI\97¹\82·\82é\82Ü\82Å\91Ò\8b@\82µ\82Ü\82·\81B<br />
+            </dd>
+        </dl>
+    </div>
+
+    <p>showmode\82Í\8e\9f\82Ì\8ew\92è\82ª\89Â\94\\82Å\82·\81B</p>
+    <pre>
+    const SHOWWINDOW_MODE_HIDE = 0 ' \95s\89Â\8e\8b
+    const SHOWWINDOW_MODE_NORMAL = 1 ' \95W\8f\80\83T\83C\83Y
+    const SHOWWINDOW_MODE_MAXIMIZED = 3 ' \8dÅ\91å\95\\8e¦
+    const SHOWWINDOW_MODE_MINIMIZED = 2 ' \8dÅ\8f¬\95\\8e¦
+    const SHOWWINDOW_MODE_MINNOACTIVE = 7 ' \8dÅ\8f¬\95\\8e¦\81E\94ñ\83A\83N\83e\83B\83u
+</pre>
+    <p>\81¦ wsf\83t\83@\83C\83\8b\82Å<a href="wsfref.html">reference\82É\82æ\82é\83^\83C\83v\83\89\83C\83u\83\8a\82ð\8ew\92è</a>\82µ\82Ä\82¢\82é\8fê\8d\87\82Í\81A\8fã\8bL\92è\90\94\96¼\82Å\92l\82ð\8eQ\8fÆ\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+
+
+    <h4>\96ß\82è\92l</h4>
+    <p>\96ß\82è\92l\82Í0\82Å\90³\8fí\8fI\97¹\81A1\82ª\83^\83C\83\80\83A\83E\83g\81A2\82ª\83v\83\8d\83Z\83X\8fI\97¹\95s\96¾\82ð\8e¦\82µ\82Ü\82·\81B</p>
+    <p>-1\82Ì\8fê\8d\87\82Í\83v\83\8d\83Z\83X\82ª\8bN\93®\82Å\82«\82È\82©\82Á\82½\82±\82Æ\82ð\8e¦\82µ\82Ü\82·\81B</p>
+
+    <h4>\92\8d\88Ó</h4>
+    <ul>
+        <li>\91Ò\8b@\92\86\82Í\83X\83\8c\83b\83h\82ª\92â\8e~\8fó\91Ô\82É\82È\82è\82Ü\82·\81B</li>
+        <li>MDI\83A\83v\83\8a\82È\82Ç\81A1\82Â\82Ì\83A\83v\83\8a\82Å\95¡\90\94\82Ì\83h\83L\83\85\83\81\83\93\83g\82ð\8aJ\82­\82±\82Æ\82Ì\82Å\82«\82é\83v\83\8d\83Z\83X\82Ì\8fê\8d\87\81A\83v\83\8d\83Z\83X\8fI\97¹\82ð\94»\92è\82Å\82«\82È\82¢\8fê\8d\87\82ª\82 \82é\82±\82Æ\82É\92\8d\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+    </ul>
+
+    <h3><a name="VersionCheck">BOOL VersionCheck(path, v1, v2, v3, v4)</a></h3>
+
+    <p>\83t\83@\83C\83\8b\82Ì\83o\81[\83W\83\87\83\93\82ð\83`\83F\83b\83N\82µ\82Ü\82·\81B</p>
+
+    <h4>\88ø\90\94</h4>
+
+    <p>\88ø\90\94\82Í\8fÈ\97ª\95s\89Â\94\\82Å\82·\81B</p>
+    <div class="argsdesc">
+        <dl>
+            <dt>path</dt>
+            <dd>\83o\81[\83W\83\87\83\93\83\8a\83\\81[\83X\82ð\82à\82Â\83t\83@\83C\83\8b\82Ö\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B</dd>
+        </dl>
+        <dl>
+            <dt>v1\81`v4</dt>
+            <dd>\83o\81[\83W\83\87\83\93\8fî\95ñ\82Ì\81u1.0.0.1\81v\82Ì\82æ\82¤\82È\95\\8bL\82É\82µ\82½\82ª\82Á\82Ä\90®\90\94\82Å\8ew\92è\82µ\82Ü\82·\81B</dd>
+        </dl>
+    </div>
+
+    <h4>\96ß\82è\92l</h4>
+    <p>\96ß\82è\92l\82Í\81A\83t\83@\83C\83\8b\82ª\91\8dÝ\82µ\82È\82¢\8fê\8d\87\81A\82à\82µ\82­\82Í\8cÃ\82¢\8fê\8d\87\82Í0\81B</p>
+    <p>\93¯\93\99\82©\81A\82·\82Å\82É\90V\82µ\82¢\83t\83@\83C\83\8b\82ª\82 \82é\8fê\8d\87\82Í1\81B</p>
+    <p>-1\82Ì\8fê\8d\87\82Í\83o\81[\83W\83\87\83\93\8fî\95ñ\82ª\8eæ\93¾\82Å\82«\82È\82¢\8fê\8d\87\81B</p>
+
+    <h3><a name="GetFileVersion">Long GetFileVersion(path)</a></h3>
+
+    <p>\83t\83@\83C\83\8b\82Ì\83o\81[\83W\83\87\83\93\82ð\8eæ\93¾\82·\82é\81B</p>
+    
+    <h4>\88ø\90\94</h4>
+
+    <p>\83o\81[\83W\83\87\83\93\83\8a\83\\81[\83X\82ð\82à\82Â\83t\83@\83C\83\8b\82Ö\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
+
+    <h4>\96ß\82è\92l</h4>
+
+    <p>\83t\83@\83C\83\8b\82Ì\83o\81[\83W\83\87\83\93\82ª\8eæ\93¾\82Å\82«\82È\82¢\8fê\8d\87\82Í0\82ð\95Ô\82µ\82Ü\82·\81B</p>
+
+    <p>\82»\82¤\82Å\82È\82¢\8fê\8d\87\82Ílong\90®\90\94\82ð\95Ô\82µ\82Ü\82·\81B</p>
+
+    <p>long\92l\82Í\83o\81[\83W\83\87\83\93\82Ì\83\81\83W\83\83\81[\82ð\8fã\88Ê16\83r\83b\83g\81A\83}\83C\83i\81[\82ð\89º\88Ê16\83r\83b\83g\82É\90Ý\92è\82µ\82½32\83r\83b\83g\90®\90\94\82Æ\82È\82è\82Ü\82·\81B</p>
+
+    </div>
+    </div>
+</body>
+</html>
+
+
diff --git a/help/html/SystemMethod.html b/help/html/SystemMethod.html
new file mode 100644 (file)
index 0000000..f32087b
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\83I\83u\83W\83F\83N\83\83\81\83\\83b\83h\81^\83V\83X\83e\83\80\8aÖ\98A</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+        <h2>SeraphyScriptDialog\83\81\83\\83b\83h\81^\83V\83X\83e\83\80\8aÖ\98A</h2>
+        <h3><a name="ExitWindows">BOOL ExitWindows(mode)</a></h3>
+        <p>\83E\83B\83\93\83h\83E\83Y\82ð\83V\83\83\83b\83g\83_\83E\83\93\82µ\82Ü\82·\81B</p>
+
+        <h4>\88ø\90\94</h4>
+        <p>mode\82Í\8e\9f\82Ì\82à\82Ì\82ª\8ew\92è\89Â\94\\82Å\82·\81B</p>
+        <pre>
+        const SHUTDOWNMODE_LOGOFF = 0 ' \83\8d\83O\83I\83t
+        const SHUTDOWNMODE_POWEROFF = 1 ' \83p\83\8f\81[\83I\83t
+        const SHUTDOWNMODE_REBOOT = 2 ' \83\8a\83u\81[\83g
+        const SHUTDOWNMODE_SHUTDOWN = 3 ' \83V\83\83\83b\83g\83_\83E\83\93
+</pre>
+        <p>\81¦ wsf\83t\83@\83C\83\8b\82Å<a href="wsfref.html">reference\82É\82æ\82é\83^\83C\83v\83\89\83C\83u\83\8a\82ð\8ew\92è</a>\82µ\82Ä\82¢\82é\8fê\8d\87\82Í\81A\8fã\8bL\92è\90\94\96¼\82Å\92l\82ð\8eQ\8fÆ\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+
+        <h4>\96ß\82è\92l</h4>
+        <p>\83I\83y\83\8c\81[\83e\83B\83\93\83O\83V\83X\83e\83\80\82É\97v\8b\81\82Å\82«\82½\8fê\8d\87\82Í\8fí\82ÉTrue\82ª\95Ô\82³\82ê\82Ü\82·\81B</p>
+        <p>\83V\83\83\83b\83g\83_\83E\83\93\93\99\82Ì\93Á\8c \82ª\82È\82¢\81A\82 \82é\82¢\82Í\97v\8b\81\82Å\82«\82È\82©\82Á\82½\8fê\8d\87\82Í\83G\83\89\81[\82ª\94­\90\82µ\82Ü\82·\81B</p>
+        <p>\81¦ \8b\8cVersion1.0\82Å\82Í\83G\83\89\81[\82Å\82Í\82È\82­False\82ª\95Ô\82³\82ê\82Ä\82¢\82Ü\82µ\82½\81B</p>
+
+        <h4>\94õ\8dl</h4>
+        <ul>
+            <li>\83\8d\83O\83I\83t\88È\8aO\82Ì\8fê\8d\87\82Ì\83p\83\8f\81[\83I\83t\81A\83\8a\83u\81[\83g\93\99\82Ì\8e\96\97R\82Æ\82µ\82Ä\81u\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82æ\82é\8cv\89æ\8dÏ\82Ý\83\81\83\93\83e\83i\83\93\83X\81v\82Æ\82µ\82Ä\8bL\98^\82³\82ê\82Ü\82·\81B</li>
+            <li>\83V\83\83\83b\83g\83_\83E\83\93\82Í\8c»\8dÝ\82Í\83p\83\8f\81[\83I\83t\82Æ\93¯\82\82Å\82·\81B(WindowsXP SP1\88È\91O\82Ì\83}\83V\83\93\82ª\8e©\97Í\82ÅPowerOff\82Å\82«\82È\82©\82Á\82½\8e\9e\91ã\82Ì\96¼\8ec)</li>
+        </ul>
+
+    </div>
+  </div>
+</body>
+</html>
+
+
diff --git a/help/html/UserFormProp.html b/help/html/UserFormProp.html
new file mode 100644 (file)
index 0000000..20c3c10
--- /dev/null
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83v\83\8d\83p\83e\83B</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+
+        <h2>UserForm\83v\83\8d\83p\83e\83B\81^\83_\83C\83A\83\8d\83O\91S\91Ì</h2>
+
+        <h3><a name="FormTitle">BSTR FormTitle</a></h3>
+        <p>\83t\83H\81[\83\80\82Ì\83^\83C\83g\83\8b\82ð\8eæ\93¾\81E\90Ý\92è\82µ\82Ü\82·\81B</p>
+
+        <h3><a name="FormPos">BSTR FormPos</a></h3>
+        <p>\83t\83H\81[\83\80\82Ì\95\\8e¦\88Ê\92u\82ð"X,Y"\8c`\8e®\82Ì\95\8e\9a\97ñ\82Å\8eæ\93¾\81E\90Ý\92è\82µ\82Ü\82·\81B</p>
+        <p>\8ew\92è\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\8bó\95\8e\9a\82Æ\82È\82è\82Ü\82·\81B</p>
+        <p style="margin-top: 1em;">FormPos\82ÍVersion2.0\82©\82ç\83T\83|\81[\83g\82³\82ê\82Ü\82µ\82½\81B</p>
+
+        <h3><a name="FormWidth">Short FormWidth</a></h3>
+        <p>\83t\83H\81[\83\80\82Ì\95\\8e¦\95\9d\82ð\8eæ\93¾\81E\90Ý\92è\82µ\82Ü\82·\81B</p>
+        <p>0\96¢\96\9e\82Í\96¾\8e¦\93I\82È\8ew\92è\82È\82µ\82ð\88Ó\96¡\82µ\82Ü\82·\81B</p>
+        <p>\81¦ \8dÅ\92á50\82Í\95K\97v\82Å\82·\81B</p>
+
+        <h3><a name="EnableForm">BOOL EnableForm</a></h3>
+        <p>\83t\83H\81[\83\80\91S\91Ì\82Ì\97L\8cø\81E\96³\8cø\82ð\8eæ\93¾\81E\90Ý\92è\82µ\82Ü\82·\81B</p>
+
+        <h4>\89ð\90à</h4>
+        <p>\8bï\91Ì\93I\82É\82Í\83\82\81[\83h\83\8c\83X\81E\83_\83C\83A\83\8d\83O\82ð\82Â\82­\82è\81A\82 \82é\83C\83x\83\93\83g\82É\91Î\89\9e\82µ\82Ä\83T\83u\81E\83t\83H\81[\83\80\82ð\95\\8e¦\82·\82é\82Æ\82«\82É\90e\82ð\96³\8cø\82É\82µ\82Ä\82¨\82­\95K\97v\82ª\82 \82è\82Ü\82·\81B</p>
+
+        <p>\83t\83H\81[\83\80\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\82Æ\8eg\82¦\82Ü\82¹\82ñ\81B</p>
+
+        <h2>UserForm\83v\83\8d\83p\83e\83B\81^\83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v</h2>
+
+        <h3><a name="AcceptDropFiles">SHORT AcceptDropFiles</a></h3>
+        <p>\83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\82ð\8b\96\89Â\81E\95s\8b\96\89Â\82ð\8eæ\93¾\81E\90Ý\92è\82µ\82Ü\82·\81B</p>
+
+        <pre>
+    0 = \83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\82ð\8bÖ\8e~\82·\82é
+    1 = \83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\82ð\8b\96\89Â\82·\82é\81B
+</pre>
+
+        <p>\8b\96\89Â\82³\82ê\82Ä\82¢\82é\8fê\8d\87\82É\83t\83@\83C\83\8b\82ª\83h\83\8d\83b\83v\82³\82ê\82é\82Æ\81A\83C\83x\83\93\83g\94Ô\8d\869000\82Å\83C\83x\83\93\83g\82ª\94­\90\82µ\82Ü\82·\81B</p>
+
+        <p>\81¦ \83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O\82È\82ç\81A\83h\83\8d\83b\83v\82É\82æ\82Á\82Ä\83_\83C\83A\83\8d\83O\82ª\8fI\97¹\82µ\82Ü\82·\81B</p>
+
+        <h3><a name="DropFiles">BSTR DropFiles</a></h3>
+
+        <p>\83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b\88ê\97\97\82Ì\95\8e\9a\97ñ\82ð\8eæ\93¾\82µ\82Ü\82·\81B</p>
+
+        <p>\93Ç\82Ý\8d\9e\82Ý\90ê\97p\82Å\82·\81B</p>
+        
+        <p>\83h\83\8d\83b\83v\82³\82ê\82½\8fê\8d\87\81A\82»\82Ì\83t\83@\83C\83\8b\96¼\82Ì\83\8a\83X\83g\82ª\8bæ\90Ø\82è\95\8e\9a\81u;\81v\82Å\8bæ\90Ø\82ç\82ê\82Ä\93ü\82è\82Ü\82·\81B</p>
+
+        <p>\83t\83H\83\8b\83_\82Ì\8fê\8d\87\82à\81A\82»\82Ì\82Ü\82Ü\82Ì\83p\83X\82ª\93ü\82è\82Ü\82·\81B</p>
+
+        <h2>UserForm\83v\83\8d\83p\83e\83B\81^\83R\83\93\83g\83\8d\81[\83\8b\82Ö\82Ì\83A\83N\83Z\83X</h2>
+
+        <h3><a name="Value">BSTR Value(Short n)</a></h3>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86n\82ð\8ew\92è\82µ\82Ä\81A\82»\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82Ì\92l\82ð\93Ç\82Ý\8f\91\82«\82·\82é\82½\82ß\82Ì\83v\83\8d\83p\83e\83B\82Å\82·\81B</p>
+
+        <p>\83t\83H\81[\83\80\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Ì\8f\91\82«\8d\9e\82Ý\82Í\95\\8e¦\82³\82ê\82½\82Æ\82«\82É\94½\89f\82³\82ê\82Ü\82·\81B</p>
+
+        <p style="margin-top: 1em;">\91\8dÝ\82µ\82È\82¢\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\8fí\82É\8bó\82ð\93Ç\82Ý\8d\9e\82Ý\81A\8f\91\82«\8d\9e\82Ý\82Í\96³\8e\8b\82³\82ê\82Ü\82·\81B</p>
+
+        <h3><a name="Enable">BOOL Enable(Short n)</a></h3>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86n\82ð\8ew\92è\82µ\82Ä\81A\82»\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82Ì\82Ì\95\\8e¦\8fó\91Ô\82ð\93Ç\82Ý\8f\91\82«\82·\82é\82½\82ß\82Ì\83v\83\8d\83p\83e\83B\82Å\82·\81B</p>
+
+        <p>\83t\83H\81[\83\80\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Ì\8f\91\82«\8d\9e\82Ý\82Í\95\\8e¦\82³\82ê\82½\82Æ\82«\82É\94½\89f\82³\82ê\82Ü\82·\81B</p>
+
+        <p style="margin-top: 1em;">\91\8dÝ\82µ\82È\82¢\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\8fí\82ÉTrue\82ð\95Ô\82µ\81A\8f\91\82«\8d\9e\82Ý\82Í\96³\8e\8b\82³\82ê\82Ü\82·\81B</p>
+
+        <h3><a name="IsModify">BOOL IsModify(Short n)</a></h3>
+        <p>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86n\82ð\8ew\92è\82µ\82Ä\81A\82»\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82ª\93ü\97Í\82É\82æ\82Á\82Ä\95Ï\8dX\82³\82ê\82Ä\82¢\82é\82©\82ð\8c\9f\8d¸\82·\82é\83v\83\8d\83p\83e\83B\82Å\82·\81B</p>
+
+        <p>\93Ç\82Ý\8d\9e\82Ý\90ê\97p\82Å\82·\81B</p>
+
+        <p>\83t\83H\81[\83\80\82ª<u>\95\\8e¦\82³\82ê\82Ä\82¢\82È\82­\82Ä\82à</u>\8eg\82¦\82Ü\82·\81B</p>
+
+        <p style="margin-top: 1em;">\91\8dÝ\82µ\82È\82¢\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\8fí\82ÉFALSE\82ð\95Ô\82µ\82Ü\82·\81B</p>
+</div>
+</div>
+</body>
+</html>
+
+
diff --git a/help/html/UserFormSynop.html b/help/html/UserFormSynop.html
new file mode 100644 (file)
index 0000000..6708e06
--- /dev/null
@@ -0,0 +1,273 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>UserForm\83I\83u\83W\83F\83N\83\8aT\97v</title>
+  <style>
+  table, td, th {
+    border-collapse: collapse;
+    border:1px solid #333;
+    padding: 5px;
+  }
+  </style>
+</head>
+<body>
+  <div id="container">
+    <div id="ScrDlgRootSynop">
+
+<h2>UserForm\83I\83u\83W\83F\83N\83\8aT\97v</h2>
+
+<p>\83X\83N\83\8a\83v\83g\82É\82æ\82Á\82Ä\83_\83C\83A\83\8d\83O\82ð\8dì\90¬\82·\82é\83I\83u\83W\83F\83N\83g\82Å\82·\81B</p>
+
+<p><code>SeraphyScriptDialog</code>\83I\83u\83W\83F\83N\83g\82Ì\81u<code>CreateForm</code>\83\81\83\\83b\83h\81v\82É\82æ\82Á\82Ä\90\90¬\82³\82ê\82Ü\82·\81B</p>
+
+<code><pre>
+    dim obj
+    set obj = CreateObject("SeraphyScriptDialog")
+
+    dim frm
+    <b>set frm = obj.CreateForm()</b>
+
+    frm.FormTitle = "\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O\82Ì\83e\83X\83g"
+    frm.DefineLabel("\83_\83C\83A\83\8d\83O\82Ì\83e\83X\83g")
+
+    frm.ExecuteForm()
+</pre></code>
+
+<div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+<img src="sample3.png"><br/>
+<span style="font-size: 80%; color: gray;">\97á: \83V\83\93\83v\83\8b\82È\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O</span>
+</div>
+
+<p>\83_\83C\83A\83\8d\83O\82Í\83\82\81[\83_\83\8b\82à\82µ\82­\82Í\83\82\81[\83h\83\8c\83X\82Æ\82µ\82Ä\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+
+<p style="margin-top: 1em;">\81¦ \83\82\81[\83_\83\8b\82Í\81A\82»\82Ì\83_\83C\83A\83\8d\83O\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82é\8aÔ\82Í\90e\83E\83B\83\93\83h\83E\93\99\82Í\91\80\8dì\95s\89Â\82Æ\82È\82è\81A\8a\8e\82Â\81A\82È\82ñ\82ç\82©\82Ì\83A\83N\83V\83\87\83\93\82ª\82 \82é\82Ü\82Å\83X\83N\83\8a\83v\83g\82É\90§\8cä\82ð\95Ô\82µ\82Ü\82¹\82ñ\81B\8f_\93î\90«\82ª\82 \82è\82Ü\82¹\82ñ\82ª\81A\88µ\82¢\82â\82·\82¢\83\82\81[\83h\82Å\82·\81B</p>
+<p>\83\82\81[\83h\83\8c\83X\82Í\81A\83E\83B\83\93\83h\83E\82ð\95\\8e¦\82µ\82½\8fó\91Ô\82Ì\82Ü\82Ü\83X\83N\83\8a\83v\83g\82É\90§\8cä\82ð\95Ô\82·\82é\82½\82ß\81A\8f_\93î\82È\8f\88\97\9d\82ª\82Å\82«\82Ü\82·\82ª\81A\90§\8cä\82·\82é\82Ì\82Í\93ï\82µ\82­\82È\82è\82Ü\82·\81B</p>
+
+
+<h3>\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u\81E\97\98\97p\95û\96@</h3>
+
+<h4>\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</h4>
+
+<p><code>CreateForm</code>\82Å\83I\83u\83W\83F\83N\83g\82ð\8dì\90¬\82µ\82½\82 \82Æ\81A
+<code>DefineXXXXX</code>\8cn\83\81\83\\83b\83h\82Å\83R\83\93\83g\83\8d\81[\83\8b\82ð\94z\92u\82µ\82Ü\82·\81B</p>
+
+<p>\83R\83\93\83g\83\8d\81[\83\8b\82Í<u>\92è\8b`\82µ\82½\8f\87\82É\8fã\82©\82ç\95À\82×\82ç\82ê\82Ü\82·\81B</u></p>
+
+<p>\8eg\97p\82Å\82«\82é\83R\83\93\83g\83\8d\81[\83\8b\82Í\88È\89º\82Ì\82à\82Ì\82ª\82 \82è\82Ü\82·\81B</p>
+
+<ul>
+<li>\83\89\83x\83\8b
+<li>\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b
+<li>\83{\83^\83\93\95t\82«\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b
+<li>\83t\83@\83C\83\8b\8eQ\8fÆ\83{\83^\83\93\95t\82«\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b
+<li>\83{\83^\83\93
+<li>\83`\83F\83b\83N\83{\83b\83N\83X
+<li>\83\89\83W\83I\83{\83^\83\93
+<li>\83R\83\93\83{\83{\83b\83N\83X
+<li>\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g
+<li>\83\8a\83X\83g\83{\83b\83N\83X
+</ul>
+
+<p>\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u\82ª\8fI\82í\82Á\82½\82ç\81A<code>ExecuteForm</code>\82à\82µ\82­\82Í<code>ComposeForm</code>\83\81\83\\83b\83h\82É\82æ\82è
+\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82µ\82Ü\82·\81B</p>
+
+<p style="margin-top: 1em;">\81¦ \95\\8e¦\92\86\82Ì\83_\83C\83A\83\8d\83O\82É\91Î\82µ\82Ä\83R\83\93\83g\83\8d\81[\83\8b\82Ì\92Ç\89Á\8dí\8f\9c\82Í\82Å\82«\82Ü\82¹\82ñ\81B</p>
+
+<h4>\83R\83\93\83g\83\8d\81[\83\8b\82Ö\82Ì\83A\83N\83Z\83X</h4>
+
+<p>\83R\83\93\83g\83\8d\81[\83\8b\82ð\94z\92u\82·\82é\81u<code>DefineXXXXX</code>\8cn\83\81\83\\83b\83h\81v\82Í\81A
+<u>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86</u>\82ð\95Ô\82µ\82Ü\82·\81B</p>
+
+<p>\82±\82Ì\94Ô\8d\86\82ð\8eg\82Á\82Ä\83R\83\93\83|\81[\83l\83\93\83g\82Ì\8fó\91Ô\82É\83A\83N\83Z\83X\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+
+<h3>\83v\83\8d\83p\83e\83B</h3>
+<table >
+<thead>
+<tr style="background-color: #ddddee;">
+<th>\83v\83\8d\83p\83e\83B</th>
+<th>\83f\81[\83^\8c^</th>
+<th>\90à\96¾</th>
+</tr>
+</thread>
+<tbody>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\83_\83C\83A\83\8d\83O\91S\91Ì</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#FormTitle">FormTitle</a></td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83t\83H\81[\83\80\82Ì\83^\83C\83g\83\8b</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#FormPos">FormPos</a></td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83t\83H\81[\83\80\82Ì\95\\8e¦\88Ê\92u</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#FormWidth">FormWidth</a></td>
+<td>Short</td>
+<td>\83t\83H\81[\83\80\82Ì\95\\8e¦\95\9d</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#EnableForm">EnableForm</a></td>
+<td>Boolean</td>
+<td>\83t\83H\81[\83\80\91S\91Ì\82Ì\97L\8cø\81E\96³\8cø</td>
+</tr>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#AcceptDropFiles">AcceptDropFiles</a></td>
+<td>Boolean</td>
+<td>\83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\82ð\8b\96\89Â</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#DropFiles">DropFiles</a></td>
+<td>\95\8e\9a\97ñ</td>
+<td>\83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b\88ê\97\97<br />(\93Ç\82Ý\8d\9e\82Ý\90ê\97p)</td>
+</tr>
+
+<tr>
+<td colspan="3" style="background-color: #eeeeee; font-weight: bold;">\83R\83\93\83g\83\8d\81[\83\8b\82Ö\82Ì\83A\83N\83Z\83X</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#Value">Value(n)</a></td>
+<td>Variant</td>
+<td>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86n\82Ì\92l</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#Enable">Enable(n)</a></td>
+<td>Boolean</td>
+<td>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86n\82Ì\97L\8cø\96³\8cø\82Ì\8fó\91Ô</td>
+</tr>
+
+<tr>
+<td><a href="UserFormProp.html#IsModify">IsModify(n)</a></td>
+<td>Variant</td>
+<td>\83R\83\93\83g\83\8d\81[\83\8b\94Ô\8d\86n\82ª\93ü\97Í\82É\82æ\82Á\82Ä\95Ï\8dX\82³\82ê\82Ä\82¢\82é\82©\81H<br />(\93Ç\82Ý\8d\9e\82Ý\90ê\97p)</td>
+</tr>
+
+</tbody>
+</table>
+
+<h3>\83\81\83\\83b\83h</h3>
+<table >
+<thead>
+<tr style="background-color: #ddddee;">
+<th>\83\81\83\\83b\83h</th>
+<th>\90à\96¾</th>
+</tr>
+</thead>
+<tbody>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u</td>
+</tr>
+
+<tr>
+<td><a href="ClearAllControls.html">ClearAllControls</a></td>
+<td>\83_\83C\83A\83\8d\83O\82Ì\82·\82×\82Ä\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82Ì\92è\8b`\82ð\83N\83\8a\83A\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineLabel.html">DefineLabel</a></td>
+<td>\83\89\83x\83\8b\81E\83R\83\93\83g\83\8d\81[\83\8b\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineEdit.html">DefineEdit</a></td>
+<td>\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineEditButton.html">DefineEditButton</a></td>
+<td>\83{\83^\83\93\95t\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineFileEdit.html">DefineFileEdit</a></td>
+<td>\83t\83@\83C\83\8b\93ü\97Í\97\93\97p\83R\83\93\83g\83\8d\81[\83\8b\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineButton.html">DefineButton</a></td>
+<td>\83{\83^\83\93\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineCheckButton.html">DefineCheckButton</a></td>
+<td>\83`\83F\83b\83N\83{\83b\83N\83X\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+
+<tr>
+<td><a href="DefineRadioButton.html">DefineRadioButton</a></td>
+<td>\83\89\83W\83I\83{\83^\83\93\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineComboBox.html">DefineComboBox</a></td>
+<td>\83R\83\93\83{\83{\83b\83N\83X\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineDropdownList.html">DefineDropdownList</a></td>
+<td>\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="DefineListBox.html">DefineListBox</a></td>
+<td>\83\8a\83X\83g\83{\83b\83N\83X\82ð\92è\8b`\82µ\82Ü\82·\81B</td>
+</tr>
+
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O</td>
+</tr>
+
+<tr>
+<td><a href="ExecuteForm.html">ExecuteForm</a></td>
+<td>\83\82\81[\83_\83\8b\81E\83_\83C\83A\83\8d\83O\82ð\8eÀ\8ds\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td colspan="2" style="background-color: #eeeeee; font-weight: bold;">\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O</td>
+</tr>
+
+<tr>
+<td><a href="ComposeForm.html#ComposeForm">ComposeForm</a></td>
+<td>\83\82\81[\83h\83\8c\83X\81E\83_\83C\83A\83\8d\83O\82ð\8d\\92z\82µ\95\\8e¦\8aJ\8en\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="ComposeForm.html#DestroyForm">DestroyForm</a></td>
+<td>\83\82\81[\83h\83\8c\83X\81E\83_\83C\83A\83\8d\83O\82ð\8fI\97¹\82µ\82Ü\82·\81B</td>
+</tr>
+
+<tr>
+<td><a href="ComposeForm.html#WaitEvent">WaitEvent</td>
+<td>\83\82\81[\83h\83\8c\83X\81E\83_\83C\83A\83\8d\83O\82Ì\83\81\83b\83Z\81[\83W\83\8b\81[\83v\8f\88\97\9d</td>
+</tr>
+
+</tbody>
+</table>
+
+</div>
+</div>
+</body>
+</html>
+
diff --git a/help/html/bugs.html b/help/html/bugs.html
new file mode 100644 (file)
index 0000000..d7b71e0
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>\8aù\92m\82Ì\83o\83O</title>
+</head>
+<body>
+  <div id="container">
+    <div id="history">
+      <h2>\8aù\92m\82Ì\83o\83O</h2>
+      
+      <h3>GetOpenFileName, GetSaveFileName</h3>
+      <p>\88ø\90\94\82ÌInitdir\82ª\96³\8e\8b\82³\82ê\82é\81B</p>
+      <p>Version2.0\82Ì\95s\8bï\8d\87\81B</p>
+
+      <h3>WaitEvent</h3>
+      <p>\83`\83F\83b\83N\83{\83b\83N\83X\81A\83\89\83W\83I\83{\83^\83\93\81A\83\8a\83X\83g\83{\83b\83N\83X\82È\82Ç\82Ì\95Ï\8dX\83C\83x\83\93\83g\82ª\92Ê\92m\82³\82ê\82È\82¢\81B</p>
+      <p>Version2.0\82Ì\95s\8bï\8d\87\81B</p>
+    </div>
+  </div>
+</body>
+</html>
+
+
+
diff --git a/help/html/devstyle.css b/help/html/devstyle.css
new file mode 100644 (file)
index 0000000..bc46b8c
--- /dev/null
@@ -0,0 +1,117 @@
+@charset "utf-8";
+
+body {
+  margin-top: 0px;
+  margin-bottom: 2em;
+  margin-left: 0.5em;
+  margin-right: 0.5em;
+  font-family: "メイリオ", "MS P明朝", "MS 明朝", "細明朝体", "Osaka", serif;
+  background-color: #FDFFFD;
+}
+
+li {
+  margin: 0.5em;
+}
+
+a:link, a:active, a:visited {
+  color: #807010;
+}
+a:hover {
+  color: #00dd33;
+}
+
+h1 {
+  font-size: 140%;
+  margin-bottom: 1.5em;
+  margin-top: 1em;
+  padding: 0.5em;
+  color: #006600;
+  text-align: center;
+}
+
+h2 {
+  font-size: 120%;
+  margin-bottom: 0.5em;
+  margin-top: 1em;
+  padding: 0.3em;
+  border-color: #0066FF;
+  border-left-style: solid;
+  border-left-width: 0.5em;
+  border-bottom-style: solid;
+  border-bottom-width: thin;
+}
+
+h3 {
+  font-size: 120%;
+  margin-bottom: 0.5em;
+  margin-top: 1em;
+  padding: 0.3em;
+  text-decoration: none;
+  border-bottom: 3px solid #0066FF;
+}
+
+h4 {
+  font-size: 100%;
+  margin-left: 1em;
+  margin-bottom: 0.5em;
+  margin-top: 1em;
+  padding: 0.3em;
+}
+
+p {
+  text-indent: 1em;
+  margin-bottom: 0ex;
+  margin-top: 0ex;
+  line-height: 1.2em;
+}
+
+.code {
+  margin: 0.5em;
+  padding: 0.5em;
+  border-style: solid;
+  border-width: thin;
+  border-color: #ff8022;
+}
+
+.localVerion {
+  text-align: right;
+  color: red;
+  font-weight: bold;
+}
+.warning {
+  color: red;
+  font-weight: bold;
+}
+
+#footer {
+  margin-top: 2em;
+  padding: 0.5em;
+  font-size: 80%;
+  color: gray;
+  border-width: thin;
+  border-top-color: #99ee88;
+  border-style: dashed none none none;
+}
+
+#lastModified {
+  margin: 0.5em;
+  text-align: left;
+}
+
+div.argsdesc {
+    margin-left: 2em;
+    padding-left: 1em;
+    border-left-style: double;
+}
+
+div.argsdesc dl dt {
+    font-weight: bold;
+}
+
+.codeexample {
+    margin-left: 2em;
+    padding: 1em;
+    border-left-style: solid;
+    border-left-width: thick;
+    border-left-color: lightblue;
+}
\ No newline at end of file
diff --git a/help/html/history.html b/help/html/history.html
new file mode 100644 (file)
index 0000000..d9112c4
--- /dev/null
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>\8dX\90V\97\9a\97ð</title>
+</head>
+<body>
+  <div id="container">
+    <div id="history">
+      <h2>\8dX\90V\97\9a\97ð\81E\97ð\8ej</h2>
+      
+      <h3>Version1.1 (2000/2)</h3>
+      <p>ver1.1\82Í2000\94N2\8c\8e\82ÉVector\82É\8cö\8aJ\82³\82ê\82Ü\82µ\82½\81B</p>
+      <p>\8b@\94\\93I\82É\82Í\8c»\8dÝ\82Ì\82à\82Ì\82Æ\82Ù\82Ú\93¯\88ê\82Å\82·\81B</p>
+      <p>Windows NT4.0, 2000, Windows 95, 98\82Å\82Ì\93®\8dì\82ð\91z\92è\82µ\82Ä\82¢\82Ü\82µ\82½\81B</p>
+      <p style="margin-top: 1em;">\82È\82¨\81A\96{\83R\83\93\83|\81[\83l\83\93\83g\82É\81u2\93_\8aÔ\82Ì\8dÀ\95W\82ª\93¯\88ê\82Å\82 \82é\82©\81H\81v\82â
+        \81u\95\8e\9a\97ñ\83\8a\83X\83g\82ð\8bæ\90Ø\82è\95\8e\9a\82Å\95ª\8a\84\82µ\94z\97ñ\82Æ\82µ\82Ä\83A\83N\83Z\83X\82·\82é\8b@\94\\81v\82È\82Ç\82ª\82 \82é\82Ì\82Í\81A
+        \96{\83R\83\93\83|\81[\83l\83\93\83g\82ª\81A\82à\82Æ\82à\82Æ\82ÍCAD/CAM\82Ì\95â\8f\95\83c\81[\83\8b\82Æ\82µ\82Ä\8dì\90¬\82³\82ê\82½\97R\97\88\82É\82æ\82è\82Ü\82·\81B</p>
+      
+      <h3>Version2.0Pre (2010/1)</h3>
+      <p>\82»\82Ì\8cã\81A\92·\82ç\82­\8dX\90V\82µ\82Ä\82¢\82Ü\82¹\82ñ\82Å\82µ\82½\82ª\81AVista/Windows7\94­\94\84\82É\82Æ\82à\82È\82Á\82Äx64\94Å\82Ì\96â\82¢\8d\87\82í\82¹\82ª\89½\8c\8f\82©\82 \82Á\82½\82½\82ß\81AVer2.0Pre\82ð2010/1/1\82É\8dì\90¬\81A\8cö\8aJ\82µ\82Ü\82µ\82½\81B</p>
+      <p>Ver2\82Å\82Í\88È\89º\82Ì\93_\82ª\95Ï\8dX\82³\82ê\82Ä\82¢\82Ü\82·\81B</p>
+      <ul>
+        <li>x86/x64\82Ì\97¼\91Î\89\9e\82Æ\82µ\82Ü\82µ\82½\81B\82»\82ê\82¼\82ê\95Ê\82ÌDLL\82Å\82·\82ª\81A\8eg\97p\95û\96@\82Í\82©\82í\82è\82Ü\82¹\82ñ\81B<br>
+            x64\82ÌOS\82É\82¨\82¢\82Ä\81A\97¼\95û\82ð\83C\83\93\83X\83g\81[\83\8b\82µ\82½\8fê\8d\87\81A\8bN\93®\82·\82é\83X\83N\83\8a\83v\83g\83z\83X\83g(WSH\93\99)\82ª64\83r\83b\83g\94Å\82Å\82 \82é\82©\81AWow64\8fã\82Å\93®\8dì\82·\82éx86\94Å\82Å\82 \82é\82©\82É\82æ\82è\8e©\93®\93I\82É\90Ø\82è\91Ö\82í\82è\82Ü\82·\81B</li>
+        <li>UNICODE\82É\91Î\89\9e\82µ\82Ü\82µ\82½\81B\83V\83t\83gJIS\82Å\82Í\95\\8c»\82Å\82«\82È\82¢\95\8e\9a\82ð\8aÜ\82Þ\83t\83@\83C\83\8b\96¼\82â\83e\83L\83X\83g\82È\82Ç\82ð\8f\88\97\9d\82·\82é\82±\82Æ\82ª\89Â\94\\82Æ\82È\82è\82Ü\82µ\82½\81B(\82½\82¾\82µ\81A\8c»\8dÝ\82Ì\82Æ\82±\82ë\83T\83\8d\83Q\81[\83g\83y\83A\82Ì\88µ\82¢\82Í\8cÀ\92è\93I\82Å\82·\81B\95\81\92Ê\82Ì\97p\93r\82Å\82Í\96â\91è\82È\82¢\82Æ\8ev\82¢\82Ü\82·\81B)</li>
+        <li>WindowsXP\88È\8d~\82ÌVisualStyle\82É\91Î\89\9e\82µ\82Ü\82µ\82½\81B</li>
+        <li>\83_\83C\83A\83\8d\83O\82Ì\95\\8e¦\88Ê\92u\82â\95\\8e¦\95\9d\82ð\95Ï\8dX\82Å\82«\82é\82æ\82¤\82É\82µ\82Ü\82µ\82½\81B</li>
+        <li>\83t\83@\83C\83\8b\93ü\97Í\97p\82Ì\83G\83f\83B\83b\83g\83{\83b\83N\83X\93\99\82É\82Í\83I\81[\83g\83R\83\93\83v\83\8a\81[\83g\82Ì\8b@\94\\82ð\8e\9d\82½\82¹\82Ü\82µ\82½\81B</li>
+        <li>\90Ý\92è\83t\83@\83C\83\8b(ini)\82ð\8eg\97p\82·\82é\8fê\8d\87\81A\83t\83@\83C\83\8b\96¼\82ð\8ew\92è\82µ\82È\82¢\82Æ\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\8fã\82Ì\81upreference.ini\81v\82Æ\82µ\82Ä\8eg\97p\82µ\82Ü\82·\81B</li>
+        <li>ExitWindows\82È\82Ç\81AWindowsXP\88È\8d~\82Å\88µ\82¢\82ª\95Ï\82í\82Á\82½API\82É\82Â\82¢\82Ä\82ÍWindowsXP\88È\8d~\82Ì\97¬\8bV\82É\89ü\82ß\82Ü\82µ\82½\81B</li>
+        <li>\93à\95\94\93I\82É\82ÍMFC(VC6)\82Ì\8eÀ\91\95\82©\82çATL(Visual Studio 2008 SP1\82ÌVC)\82Ì\8eÀ\91\95\82É\91S\96Ê\93I\82É\8f\91\82«\8a·\82¦\82Ü\82µ\82½\81B</li>
+        <li>WSH2\88È\8d~\82Å\97\98\97p\89Â\94\\82È\83^\83C\83v\83\89\83C\83u\83\89\83\8a\82Ì\8eQ\8fÆ(wsf\8c`\8e®\82É\82¨\82¯\82éreference\83^\83O)\82ª\8eg\97p\89Â\94\\82Æ\82È\82è\82Ü\82µ\82½\81B\82±\82ê\82É\82æ\82è\92è\90\94\82ð\83V\83\93\83{\83\8b\82Å\8eQ\8fÆ\82Å\82«\82é\82æ\82¤\82É\82È\82Á\82Ä\82¢\82Ü\82·\81B</li>
+        <li>UNICOD\83r\83\8b\83h\94Å\82µ\82©\82 \82è\82Ü\82¹\82ñ\81B\82Â\82Ü\82è\81A<b>Windows9x/ME\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B</b></li>
+      </ul>
+      
+      <h3>Version2.0 (2015/3)</h3>
+      <p>2.0Pre\82Å\82Í\83C\83\93\83X\83g\81[\83\89\82ª\82È\82­\81A\82Ü\82½\83w\83\8b\83v\83t\83@\83C\83\8b\82àWindows7\82Å\82Í\95W\8f\80\82Å\82Í\8aJ\82­\82±\82Æ\82Ì\82Å\82«\82È\82¢\8cÃ\82¢WinHelp\82Ì\82Ü\82Ü\82Å\82 \82è\81A
+      Windows7 x64\8aÂ\8b«\82Å\82Í\83C\83\93\83X\83g\81[\83\8b\8dì\8bÆ\82â\97\98\97p\82ª\94Ï\8eG\82È\82à\82Ì\82Å\82µ\82½\81B</p>
+      <p>2015/3\82É\81A\83C\83\93\83X\83g\81[\83\89\82ÆHtmlHelp\91Î\89\9e\82ð\8ds\82¢\81AVersion2.0\82Æ\82µ\82Ä\8cö\8aJ\82µ\82Ü\82µ\82½\81B</p>
+      <p>Ver2.0\82ÆVer2.0Pre\82Í\93¯\88ê\82ÌDLL\82Å\82 \82è\81A\8b@\94\\93I\82È\95Ï\8dX\82Í\82 \82è\82Ü\82¹\82ñ\81B</p>
+    </div>
+  </div>
+</body>
+</html>
+
+
+
diff --git a/help/html/howtoinstall.html b/help/html/howtoinstall.html
new file mode 100644 (file)
index 0000000..e0f8a8e
--- /dev/null
@@ -0,0 +1,247 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>\83C\83\93\83X\83g\81[\83\8b\82É\82Â\82¢\82Ä</title>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+      <div id="autosetup">
+        <h2>\83C\83\93\83X\83g\81[\83\89\82É\82æ\82é\83C\83\93\83X\83g\81[\83\8b\82Æ\83A\83\93\83C\83\93\83X\83g\81[\83\8b</h2>
+        <p>SeraphyScriptDialog Ver2.0\82Í\83Z\83b\83g\83A\83b\83v\83v\83\8d\83O\83\89\83\80\82É\82æ\82Á\82Ä\83Z\83b\83g\83A\83b\83v\82ð\8ds\82¤\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+        <p style="margin-top: 1em;">\82±\82Ì\8fê\8d\87\81A\88È\89º\82Ì\8f\88\97\9d\82ª\8e©\93®\93I\82É\8ds\82í\82ê\82Ü\82·\81B</p>
+        <ul>
+          <li>DLL\82Í\83V\83X\83e\83\80\95W\8f\80\82Ì\8b¤\92Ê\83v\83\8d\83O\83\89\83\80\83t\83H\83\8b\83_(\82½\82Æ\82¦\82Î\81A<code>C:\Program Files\Common Files\SeraphyScriptDialog\2.0</code>)\82É<u>\88Ã\96Ù\82Å</u>\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ü\82·\81B
+          <li>\83w\83\8b\83v\81A\83T\83\93\83v\83\8b\93\99\82Ì\83C\83\93\83X\83g\81[\83\8b\82ð\91I\91ð\82µ\82½\8fê\8d\87\82à\8fã\8bL\83t\83H\83\8b\83_\82É\8ai\94[\82³\82ê\82Ü\82·\81B(64\83r\83b\83g\94Å\82Ì\8fê\8d\87\82Í64\83r\83b\83g\94Å\91¤\82Ì\82Ý\95Û\91\82³\82ê\82Ü\82·\81B)
+          <li>\83w\83\8b\83v\82Ü\82½\82Í\83T\83\93\83v\83\8b\82ð\83C\83\93\83X\83g\81[\83\8b\82µ\82½\8fê\8d\87\82É\82Í\83X\83^\81[\83g\83\81\83j\83\85\81[\82É\82à\83V\83\87\81[\83g\83J\83b\83g\82ª\92Ç\89Á\82³\82ê\82Ü\82·\81B
+          <li>64\83r\83b\83g\94ÅOS\82Å\82Í\81A64\83r\83b\83g\94Å\83R\83\93\83|\81[\83l\83\93\83g\82Æ32\83r\83b\83g\94Å\83R\83\93\83|\81[\83l\83\93\83g\82Ì\97¼\95û\82ª\88Ã\96Ù\82Å\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ü\82·\81B
+          <li>\8b\8cVersion1.0\82ÌSeraphyScriptDialog\82ª\83C\83\93\83X\83g\81[\83\8b\8dÏ\82Ý\82Ì\8fê\8d\87\82Í\81A"SeraphyScriptDialog.1"\82Æ\82¢\82¤ProgID\82Å\8b\8c\94Å\82ª\97\98\97p\82Å\82«\82é\82æ\82¤\82É\83\8c\83W\83X\83g\83\8a\82ª\95â\90³\82³\82ê\82Ü\82·\81B(\83A\83\93\83C\83\93\83X\83g\81[\83\8b\82Í\82µ\82Ü\82¹\82ñ\81B)
+          <li>\83R\83\93\83g\83\8d\81[\83\8b\83p\83l\83\8b\82Ì\83v\83\8d\83O\83\89\83\80\82©\82ç\81A\83A\83\93\83C\83\93\83X\83g\81[\83\8b\82ð\8ds\82¦\82é\82æ\82¤\82É\90Ý\92è\82³\82ê\82Ü\82·\81B
+        </ul>
+        <p><b>\8aî\96{\93I\82É\82Í\81A\83C\83\93\83X\83g\81[\83\89\82É\82æ\82é\83Z\83b\83g\83A\83b\83v\82ª\82¨\8a©\82ß\82Å\82·\81B</b></p>
+        <p>\82µ\82©\82µ\81A\94C\88Ó\82Ì\83t\83H\83\8b\83_\82É\91g\82Ý\8d\9e\82Ý\82½\82¢\81A\82È\82Ç\82Ì\8fê\8d\87\82É\82Í\81A\88È\89º\82É\90à\96¾\82·\82é\8eè\93®\82É\82æ\82é\83C\83\93\83X\83g\81[\83\8b\82Æ\83A\83\93\83C\83\93\83X\83g\81[\83\8b\82à\89Â\94\\82Å\82·\81B</p>
+      </div>
+
+      <div id="selfsetup">
+        <h2>\8eè\93®\82É\82æ\82é\83C\83\93\83X\83g\81[\83\8b\82Æ\83A\83\93\83C\83\93\83X\83g\81[\83\8b</h2>
+        <h3>SeraphyScriptDialog\82Ì\83C\83\93\83X\83g\81[\83\8b\95û\96@</h3>
+        <p>SeraphyScriptDialog\82Í\83Z\83\8b\83t\83\8c\83W\83X\83g\83\89\82É\82È\82Á\82Ä\82¢\82Ü\82·\82Ì\82Å\81A\94C\88Ó\82Ì\83t\83H\83\8b\83_\82Édll\82ð\83R\83s\81[\82µ\82½\82 \82Æ\81Aregsvr32\83c\81[\83\8b\82ð\8eg\82Á\82Ä\93o\98^\82Å\82«\82Ü\82·\81B</p>
+        <p>\82½\82¾\82µ\81A\83C\83\93\83X\83g\81[\83\8b\95û\96@\82ÍX86/X64\94Å\82Å\8eá\8a±\88Ù\82È\82è\82Ü\82·\82Ì\82Å\81A\8eg\97p\8aÂ\8b«\81A\8eg\97p\95û\96@\82É\89\9e\82\82Ä\88È\89º\82ð\8eQ\8dl\82É\83\8c\83W\83X\83g\83\8a\82É\93o\98^\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+        <p>\82à\82µ\82­\82Í\8bZ\8fp\8fî\95ñ\82ð\8eQ\8dl\82É\82µ\82Ä\8e©\95ª\82Å\83\8c\83W\83X\83g\83\8a\82É\93o\98^\82µ\82Ä\82à\82©\82Ü\82¢\82Ü\82¹\82ñ\81B</p>
+        <p>regsvr32\82Ì\8eÀ\8ds\82É\82Í\8aÇ\97\9d\8eÒ\8c \8cÀ\82ª\95K\97v\82Å\82·\81BVista\88È\8d~\82Ì\8fê\8d\87\81A<span class="warning">\83R\83}\83\93\83h\83v\83\8d\83\93\83v\83g\82©\82çregsvr32\82ð\8eÀ\8ds\82·\82é\8fê\8d\87\82É\82Í\83R\83}\83\93\83h\83v\83\8d\83\93\83v\83g\82ð\8aÇ\97\9d\8eÒ\8c \8cÀ\82Å\8aJ\82¢\82Ä\82­\82¾\82³\82¢\81B</span></p>
+        <ul>
+          <li>32\83r\83b\83g\94ÅOS\82Ì\8fê\8d\87(Windows2000/XP/2003/Vista/2008/Windows7)
+            <ul>
+              <li>\89ß\8b\8e\83o\81[\83W\83\87\83\93(Version1.1)\82ª\91\8dÝ\82·\82é\8fê\8d\87\82É\82Â\82¢\82Ä
+                <ol>
+                  <li>SeraphyScriptDialog.dll\82Ì\93o\98^\82É\90æ\97§\82¿\81A\82Ü\82¸\81A\8cÃ\82¢\83o\81[\83W\83\87\83\93(SCRDLG.dll)\82ð\83\8c\83W\83X\83g\83\8a\82æ\82è\93o\98^\89ð\8f\9c\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+                  <li>regsvr32.exe /u SCRDLG.DLL \82Å\83\8c\83W\83X\83g\83\8a\82©\82ç\89ð\8f\9c\82Å\82«\82Ü\82·\81B(\83p\83X\82Í\94z\92u\82µ\82½\8fê\8f\8a\82ð\93K\8bX\82É\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B)</li>
+                  <li>\89ð\8f\9c\8cã\81ASCRDLG.DLL\82Í\94C\88Ó\82Å\83S\83~\94 \82É\93ü\82ê\82Ä\82­\82¾\82³\82¢\81B</li>
+                </ol>
+              </li>
+              <li>Ver2.0\82Ì\83\8c\83W\83X\83g\83\8a\82Ö\82Ì\93o\98^\95û\96@
+                <ol>
+                  <li>regsvr32.exe SeraphyScriptDialog.dll \82Æ\82µ\82Ä\83\8c\83W\83X\83g\83\8a\82É\93o\98^\82µ\82Ä\82­\82¾\82³\82¢\81B(\83p\83X\82Í\94z\92u\82µ\82½\8fê\8f\8a\82ð\93K\8bX\82É\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B)</li>
+                  <li>\82±\82ê\82É\82æ\82è\83\8c\83W\83X\83g\83\8a\82ÉCOM\83I\83u\83W\83F\83N\83g\82ª\93o\98^\82³\82ê\81A\83X\83N\83\8a\83v\83g\8fã\82©\82ç\8eg\82¦\82é\82æ\82¤\82É\82È\82è\82Ü\82·\81B</li>
+                  <li>\93o\98^\82³\82ê\82é\93à\97e\82É\82Â\82¢\82Ä\82Í\8bZ\8fp\8fî\95ñ\82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+                </ol>
+              </li>
+            </ul>
+          </li>
+          <li>64\83r\83b\83g\94ÅOS\82Ì\8fê\8d\87(WindowsXP/2003/Vista/2008/Windows7)
+            <ul>
+              <li>\82±\82ê\82ç\82Ì64\83r\83b\83g\94ÅOS\82É\82Í\81AWow64\82É\82æ\82è\81A32\83r\83b\83g\8aÂ\8b«\82Æ64\83r\83b\83g\8aÂ\8b«\82Ì2\82Â\82Ì\83\82\81[\83h\82ª\82 \82è\82Ü\82·\81B</li>
+              <li>\92Ê\8fí\81AVBScript/JScript\82ð\83z\83X\83g\82·\82éWSH\82Í64\83r\83b\83g\94Å\82É\82È\82Á\82Ä\82¨\82è\81A64\83r\83b\83g\94ÅWSH\82©\82ç\8dì\90¬\82Å\82«\82é\83I\83u\83W\83F\83N\83g\82Í64\83r\83b\83g\94ÅDLL\82Å\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B</li>
+              <li>\82à\82µ\81A64\83r\83b\83g\94ÅWSH\82©\82çSeraphyScriptDialog\82ð\8eg\97p\82·\82é\8fê\8d\87\82Í\81A64\83r\83b\83g\94Å\82ÌSeraphyScriptDialogX64.dll\82ð\93o\98^\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+              <li>\82à\82µ\81A\8f]\97\88\82Ì32\83r\83b\83g\94Å\82ÌWSH\82©\82çSeraphyScriptDialog\82ð\8eg\97p\82·\82é\8fê\8d\87\82Í\81A32\83r\83b\83g\94Å\82ÌSeraphyScriptDialog.dll\82ð\93o\98^\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+              <li>\89ß\8b\8e\83o\81[\83W\83\87\83\93(Version1.1)\82ª\91\8dÝ\82·\82é\8fê\8d\87\82É\82Â\82¢\82Ä
+                <ol>
+                  <li>SeraphyScriptDialog.dll/SeraphyScriptDialogX64.dll\82Ì\93o\98^\82É\90æ\97§\82¿\81A\82Ü\82¸\81A\8cÃ\82¢\83o\81[\83W\83\87\83\93(SCRDLG.dll)\82ð\83\8c\83W\83X\83g\83\8a\82æ\82è\93o\98^\89ð\8f\9c\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+                  <li>C:\Windows\SysWow64\regsvr32.exe /u SCRDLG.DLL (Windows7\82Ì\97á\81B\83p\83X\82Í\94z\92u\82µ\82½\8fê\8f\8a\82ð\93K\8bX\82É\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B)</li>
+                  <li>\89ð\8f\9c\8cã\81ASCRDLG.DLL\82Í\94C\88Ó\82Å\83S\83~\94 \82É\93ü\82ê\82Ä\82­\82¾\82³\82¢\81B</li>
+                </ol>
+              </li>
+              <li>x64\94Å(64\83r\83b\83g\94Å)\82Ì\83\8c\83W\83X\83g\83\8a\82Ö\82Ì\93o\98^\95û\96@
+                <ol>
+                  <li>regsvr32.exe SeraphyScriptDialogX64.dll \82Å\93o\98^\82Å\82«\82Ü\82·\81B(\83p\83X\82Í\94z\92u\82µ\82½\8fê\8f\8a\82ð\93K\8bX\82É\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B)<br>
+                  (Wow64\8fã\82Å\93®\8dì\82·\82é32\83r\83b\83g\94Å\82Ìregsvr32.exe\82Å\82Í\82È\82¢\82±\82Æ\82É\92\8d\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B)</li>
+                  <li>\82±\82ê\82É\82æ\82è\83\8c\83W\83X\83g\83\8a\82ÉCOM\83I\83u\83W\83F\83N\83g\82ª\93o\98^\82³\82ê\81A64\83r\83b\83g\94Å\82ÌWSH\82©\82ç\82Ì\83X\83N\83\8a\83v\83g\8fã\82Å\97\98\97p\89Â\94\\82Æ\82È\82è\82Ü\82·\81B</li>
+                  <li>\93o\98^\82³\82ê\82é\93à\97e\82É\82Â\82¢\82Ä\82Í\8bZ\8fp\8fî\95ñ\82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+                </ol>
+              </li>
+              <li>x86\94Å(32\83r\83b\83g\94Å)\82Ì\83\8c\83W\83X\83g\83\8a\82Ö\82Ì\93o\98^\95û\96@
+                <ol>
+                  <li>C:\Windows\SysWow64\regsvr32.exe SeraphyScriptDialog.dll \82Å\93o\98^\82Å\82«\82Ü\82·\81B(\83p\83X\82Í\94z\92u\82µ\82½\8fê\8f\8a\82ð\93K\8bX\82É\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B)<br>
+                  (Wow64\8fã\82Å\93®\8dì\82·\82é32\83r\83b\83g\94Å\82Ìregsvr32.exe\82Å\82 \82é\82±\82Æ\82É\92\8d\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B)</li>
+                  <li>\82±\82ê\82É\82æ\82è\83\8c\83W\83X\83g\83\8a\82ÉCOM\83I\83u\83W\83F\83N\83g\82ª\93o\98^\82³\82ê\81A32\83r\83b\83g\94Å\82ÌWSH\82©\82ç\82Ì\83X\83N\83\8a\83v\83g\8fã\82Å\97\98\97p\89Â\94\\82Æ\82È\82è\82Ü\82·\81B</li>
+                  <li>\93o\98^\82³\82ê\82é\93à\97e\82É\82Â\82¢\82Ä\82Í\8bZ\8fp\8fî\95ñ\82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+                </ol>
+              </li>
+              <li>x64\82Æx86\82Ì\97¼\95û\82Ì\82Ý\93o\98^\82É\82Â\82¢\82Ä
+                <ul>
+                  <li>64\83r\83b\83g\8aÂ\8b«\82Å\82Í\81ASeraphyScriptDialog.dll/SeraphyScriptDialogX64.dll\82Ì\91o\95û\82ð\93o\98^\82µ\82Ä\82à\96â\91è\82 \82è\82Ü\82¹\82ñ\81B</li>
+                  <li>\83\8c\83W\83X\83g\83\8a\8fã\82É\93o\98^\82³\82ê\82éProgID\81ACLSID\81ALIBID\93\99\82Í64/32\94Å\82Æ\82à\82É\91S\82­\93¯\82\82Å\82·\82ª\81A
+                  Wow64\82Å\82Í\83\8c\83W\83X\83g\83\8a\82Ì\83\8a\83_\83C\83\8c\83N\83g\82ª\8ds\82í\82ê\82é\82½\82ß\81A\8eÀ\8dÛ\82É\8eg\97p\82³\82ê\82éDLL\82Í\8bN\93®\82µ\82Ä\82¢\82éWSH\82ª32/64\83r\83b\83g\94Å\82Å\82 \82é\82©\82É\82æ\82Á\82Ä\8e©\93®\93I\82É\90Ø\82è\91Ö\82¦\82ç\82ê\82é\82±\82Æ\82É\82È\82è\82Ü\82·\81B</li>
+                </ul>
+              </li>
+            </ul>
+          </li>
+          <li>version1.1(SCRDLG.DLL)\82Æ\82Ì\8b¤\91\82É\82Â\82¢\82Ä(\8eQ\8dl\82Ü\82Å\82É)
+            <ul>
+              <li>SCRDLG.DLL\82Í\8aù\92è\82ÌProgID\82µ\82©\82à\82Á\82Ä\82¨\82ç\82¸\81A\83o\81[\83W\83\87\83\93\95t\82«ProgID\82ð\82à\82Á\82Ä\82¢\82È\82¢\82½\82ß\81A\82»\82Ì\82Ü\82Ü\82Å\82Í\8b¤\91\82Å\82«\82Ü\82¹\82ñ\81B</li>
+              <li>\82µ\82©\82µ\81ASeraphyScriptDialog.dll/SeraphyScriptDialogX64.dll\82Å\82Í\83o\81[\83W\83\87\83\93\82Â\82«ProgID\82Æ\82µ\82Ä\81uSeraphyScriptDialog.2\81v\82Æ\82¢\82¤\83V\83O\83l\83`\83\83\82ð\82à\82Á\82Ä\82¢\82é\82½\82ß\81A
+              SeraphyScriptDialog.dll/SeraphyScriptDialogX64.dll\82ð\83\8c\83W\83X\83g\83\8a\82É\93o\98^\8cã\81A<span class="warning">SCRDLG.DLL\82ð\8eè\93®\82Å\83\8c\83W\83X\83g\83\8a\82É\93o\98^\82µ\81A\81uSeraphyScriptDialog.1\81v\82ÌProgID\82Æ\82·\82é</span>\82±\82Æ\82Å\81A
+              \82½\82Æ\82¦\82Î\81uCreateObject("SeraphyScriptDialog.1")\81v\82Ì\82æ\82¤\82É\82µ\82Ä\83o\81[\83W\83\87\83\93\82Â\82«\82Å\8eg\97p\82·\82é\82æ\82¤\82É\82Å\82«\82Ü\82·\81B</li>
+              <li>\82±\82ê\82ç\82Ì\83\8c\83W\83X\83g\83\8a\82Ö\82Ì\93o\98^\82Í\8bZ\8fp\8fî\95ñ\82ð\8eQ\8dl\82É\81u\95K\82¸\8eè\93®\82Å\81v\8ds\82Á\82Ä\82­\82¾\82³\82¢\81B</li>
+              <li><span class="warning">regsvr32\83c\81[\83\8b\82Å\93o\98^\82µ\82Ü\82·\82Æ\81A\83\8c\83W\83X\83g\83\8a\82Ì\8c»\8dÝ\82Ì\93o\98^\82ª\8fã\8f\91\82«\82³\82ê\82Ä\82µ\82Ü\82¤\82½\82ßSeraphyScriptDialog\82ª\93®\8dì\82µ\82È\82­\82È\82è\82Ü\82·\81B</span></li>
+              <li>\82È\82¨\81ASCRDLG.DLL\82Í32\83r\83b\83g\8a\8e\82ÂMBCS\94Å(\94ñUNICODE)\82Å\82·\82Ì\82Å\81A64\83r\83b\83g\8aÂ\8b«\82Å\93®\8dì\82³\82¹\82é\82É\82ÍWow64\8fã\82ÌWSH\82ð\8eg\97p\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B</li>
+            </ul>
+          </li>
+        </ul>
+        <h3>SeraphyScriptDialog\82Ì\83A\83\93\83C\83\93\83X\83g\81[\83\8b\95û\96@</h3>
+        <p>SeraphyScriptDialog.dll/SeraphyScriptDialogX64.dll\82ðregsvr32\83c\81[\83\8b\82Å\93o\98^\82µ\82½\8fê\8d\87\81Aregsvr32\82Ì\83I\83v\83V\83\87\83\93/u \82ð\8ew\92è\82·\82é\82±\82Æ\82Å\93o\98^\89ð\8f\9c\82Å\82«\82Ü\82·\81B</p>
+        <p>\83\8c\83W\83X\83g\83\8a\82Ö\82Ì\93o\98^\82ð\8eè\93®\82Å\8ds\82Á\82Ä\82¢\82é\8fê\8d\87\82Í\81A\8eè\93®\82Å\8dí\8f\9c\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+        <p>\83\8c\83W\83X\83g\83\8a\82©\82ç\89ð\8f\9c\82µ\82½\82 \82Æ\82Í\81Adll\82Í\8dí\8f\9c\82µ\82Ä\82©\82Ü\82¢\82Ü\82¹\82ñ\81B</p>
+      </div>
+
+      <div id="teqInfo">
+        <h2>\8bZ\8fp\8fî\95ñ</h2>
+        <p>\83J\83X\83^\83}\83C\83Y\82â\83C\83\93\83X\83g\81[\83\8b\8cã\82Ì\83g\83\89\83u\83\8b\82ð\89ð\90Í\82·\82é\82½\82ß\82É\95K\97v\82Æ\82È\82é\82©\82à\82µ\82ê\82È\82¢\81A\82¢\82­\82Â\82©\82Ì\8bZ\8fp\8fî\95ñ\82É\82Â\82¢\82Ä\8bL\8fq\82µ\82Ü\82·\81B</p>
+
+        <h3>SeraphyScriptDialog.2.reg(Windows7\82Å\82Ì\88ê\97á\82Å\82·\81B)</h3>
+        <div class="code"><pre><code>Windows Registry Editor Version 5.00
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SeraphyScriptDialog]
+@="SeraphyScriptDialog Class"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SeraphyScriptDialog\CLSID]
+@="{4019FCE4-1A3B-4BFF-BF84-C036195842EF}"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SeraphyScriptDialog\CurVer]
+@="SeraphyScriptDialog.2"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SeraphyScriptDialog.2]
+@="SeraphyScriptDialog Class"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SeraphyScriptDialog.2\CLSID]
+@="{4019FCE4-1A3B-4BFF-BF84-C036195842EF}"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}]
+@="SeraphyScriptDialog Class"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\InprocServer32]
+@="D:\\Media\\MyDocuments\\Visual Studio 2008\\Projects\\SeraphyScriptDialog\\SeraphyScriptDialog\\x64\\Debug\\SeraphyScriptDialogX64.dll"
+"ThreadingModel"="Apartment"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\ProgID]
+@="SeraphyScriptDialog.2"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\Programmable]
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\TypeLib]
+@="{8C5ED098-A33E-4B09-8E44-638CCF6307A8}"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\Version]
+@="2.0"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\VersionIndependentProgID]
+@="SeraphyScriptDialog"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}]
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0]
+@="SeraphyScriptDialog 2.0 \83^\83C\83\83\89\83C\83u\83\89\83\8a"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\0]
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\0\win64]
+@="D:\\Media\\MyDocuments\\Visual Studio 2008\\Projects\\SeraphyScriptDialog\\SeraphyScriptDialog\\x64\\Debug\\SeraphyScriptDialogX64.dll"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\FLAGS]
+@="0"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\HELPDIR]
+@="D:\\Media\\MyDocuments\\Visual Studio 2008\\Projects\\SeraphyScriptDialog\\SeraphyScriptDialog\\x64\\Debug"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\SeraphyScriptDialog.DLL]
+"AppID"="{C781EBBC-836D-4DB3-B100-16A2BEE5F503}"
+        </code></pre></div>
+
+        <h3>SeraphyScriptDialog.2.wow64.reg(Windows7\82Å\82Ì\88ê\97á\82Å\82·\81B)</h3>
+        <div class="code"><pre><code>Windows Registry Editor Version 5.00
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\AppID\SeraphyScriptDialog.DLL]
+"AppID"="{C781EBBC-836D-4DB3-B100-16A2BEE5F503}"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}]
+@="SeraphyScriptDialog Class"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\InprocServer32]
+@="D:\\Media\\MyDocuments\\Visual Studio 2008\\Projects\\SeraphyScriptDialog\\SeraphyScriptDialog\\Win32\\Debug\\SeraphyScriptDialog.dll"
+"ThreadingModel"="Apartment"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\ProgID]
+@="SeraphyScriptDialog.2"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\Programmable]
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\TypeLib]
+@="{8C5ED098-A33E-4B09-8E44-638CCF6307A8}"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\Version]
+@="2.0"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{4019FCE4-1A3B-4BFF-BF84-C036195842EF}\VersionIndependentProgID]
+@="SeraphyScriptDialog"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}]
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0]
+@="SeraphyScriptDialog 2.0 \83^\83C\83\83\89\83C\83u\83\89\83\8a"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\0]
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\0\win32]
+@="D:\\Media\\MyDocuments\\Visual Studio 2008\\Projects\\SeraphyScriptDialog\\SeraphyScriptDialog\\Win32\\Debug\\SeraphyScriptDialog.dll"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\0\win64]
+@="D:\\Media\\MyDocuments\\Visual Studio 2008\\Projects\\SeraphyScriptDialog\\SeraphyScriptDialog\\x64\\Debug\\SeraphyScriptDialogX64.dll"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\FLAGS]
+@="0"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{8C5ED098-A33E-4B09-8E44-638CCF6307A8}\2.0\HELPDIR]
+@="D:\\Media\\MyDocuments\\Visual Studio 2008\\Projects\\SeraphyScriptDialog\\SeraphyScriptDialog\\x64\\Debug"
+        </code></pre></div>
+
+        <h3>SeraphyScriptDialog.1.wow64.reg(ver1.1\82Æ\82Ì\8b¤\91\81AWindows7\82Å\82Ì\88ê\97á\82Å\82·\81B)</h3>
+        <div class="code"><pre><code>Windows Registry Editor Version 5.00
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SeraphyScriptDialog.1]
+@="SeraphyScriptDialog Class"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SeraphyScriptDialog.1\CLSID]
+@="{86893BFE-A779-4685-8FC9-D63C8827C4C9}"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{86893BFE-A779-4685-8FC9-D63C8827C4C9}]
+@="SeraphyScriptDialog"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{86893BFE-A779-4685-8FC9-D63C8827C4C9}\InProcServer32]
+@="D:\\Media\\MYDOCU~1\\VISUAL~2\\Projects\\SCRDLG\\RELEASED\\scrdlg.dll"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{86893BFE-A779-4685-8FC9-D63C8827C4C9}\ProgID]
+@="SeraphyScriptDialog.1"
+
+        </code></pre></div>
+      </div>
+    </div>
+  </div>
+</body>
+</html>
+
+
+
diff --git a/help/html/howtouse.html b/help/html/howtouse.html
new file mode 100644 (file)
index 0000000..7ef3ffe
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>\8eg\82¢\95û</title>
+</head>
+<body>
+  <div id="container">
+
+<h2>SeraphyScriptDialog\82Ì\8eg\82¢\95û</h2>
+
+<div>
+<p>SeraphyScriptDialog\82ÍCOM\83I\83u\83W\83F\83N\83g\82Å\82·\82Ì\82Å\81A\97\98\97p\95û\96@\82Í\8aÈ\92P\82Å\82·\81B
+<p>VBScript\82ð\8eg\82¤\8fê\8d\87\82È\82ç\81u<code>CreateObject</code>\8aÖ\90\94\81v\82ð\8eg\82¢\82Ü\82·\81B
+<p>JavaScript\82È\82ç\81u<code>AvtiveXObject</code>\8aÖ\90\94\81v\82ð\8eg\82¢\82Ü\82·\81B
+<p>wsf\83t\83@\83C\83\8b\82ð\8eg\82¤\8fê\8d\87\82Í\81u<code>object</code>\83^\83O\81v\82ð\8eg\82¢\82Ü\82·\81B
+</div>
+
+<div style="margin-top: 1em;">
+<p>\8fã\8bL\82Ì\95û\96@\82É\82æ\82Á\82Ä\8dì\90¬\82³\82ê\82½\81uSeraphyScriptDialog\81v\83I\83u\83W\83F\83N\83g\82ð\83x\81[\83X\82É\82µ\82Ä\81A</p>
+<ul>
+<li>UserForm\83I\83u\83W\83F\83N\83g
+<li>OutputWindow\83I\83u\83W\83F\83N\83g
+<li>List\83I\83u\83W\83F\83N\83g
+</ul>
+<p>\82È\82Ç\82ð\8dì\90¬\82·\82é\82±\82Æ\82Å\97l\81X\82È\8b@\94\\82ð\8eÀ\8c»\82µ\82Ä\82ä\82«\82Ü\82·\81B
+</div>
+
+<h4>\81m\83q\83\93\83g\81n</h4>
+<p>SeraphyScriptDialog\83I\83u\83W\83F\83N\83g\82Í1\82Â\8dì\90¬\82µ\82Ä\82 \82ê\82Î\8f\\95ª\82Å\82·\81B
+<p>\82»\82Ì\82½\82ß\81A\83O\83\8d\81[\83o\83\8b\83I\83u\83W\83F\83N\83g\82Æ\82µ\82Ä\8dì\90¬\82µ\82Ä\82¨\82¢\82½\82Ù\82¤\82ª\95Ö\97\98\82Å\82µ\82å\82¤\81B
+
+<h3>VBScript\82ð\8eg\82¤\8fê\8d\87</h3>
+<code><pre>
+    Dim obj
+    Set obj = <b>CreateObject("SeraphyScriptDialog")</b>
+    obj.About
+</pre></code>
+
+<h3>JScript\82ð\8eg\82¤\8fê\8d\87</h3>
+<code><pre>
+    var obj = <b>new ActiveXObject("SeraphyScriptDialog");</b>
+    obj.About();
+</pre></code>
+
+
+<h3>wsf\83t\83@\83C\83\8b\82ð\8eg\82¤\8fê\8d\87</h3>
+<code><pre>
+&lt;?xml version="1.0" encoding="UTF-8" ?>
+&lt;job>
+   <b>&lt;object id="dlg" progid="SeraphyScriptDialog" /></b>
+   &lt;script language="VBScript">
+   &lt;![CDATA[
+      Option Explicit
+      dim ver
+      ver = dlg.About
+      WScript.Echo "version=" &amp; ver
+   ]]>
+   &lt;/script>
+&lt;/job>
+</pre></code>
+
+<div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+<img src="sample2.png"><br/>
+<span style="font-size: 80%; color: gray;">\97á: \83o\81[\83W\83\87\83\93\8fî\95ñ\83_\83C\83A\83\8d\83O</span>
+</div>
+
+  </div>
+</body>
+</html>
diff --git a/help/html/license.html b/help/html/license.html
new file mode 100644 (file)
index 0000000..1273276
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>\83\89\83C\83Z\83\93\83X</title>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+      <div id="lisence">
+        <h2>\83\89\83C\83Z\83\93\83X\82Æ\8eg\97p\8b\96\91ø\8fð\8c\8f</h2>
+        <p>\83\89\83C\83Z\83\93\83X\82Í\81AApache License 2.0 \8f\80\8b\92\82Æ\82µ\82Ü\82·\81B</p>
+        <p>\8f¤\97p\81E\94ñ\8f¤\97p\82ð\96â\82í\82¸\92N\82Å\82à\8e©\97R\82É\82²\97\98\97p\82¢\82½\82¾\82¯\82Ü\82·\81B</p>
+        <div style="margin: 1em; padding: 1em; border-style: solid; border-color: red;">
+        <p><span class="warning">\96{\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Í\8a®\91S\82É\96³\95Û\8fØ\82Å\82·\81B
+            \96{\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ð\8eg\97p\82µ\82½\81A\82¢\82©\82È\82é\8c\8b\89Ê\82É\82Â\82¢\82Ä\82à\8dì\8eÒ\82¨\82æ\82Ñ\8dÄ\94z\95z\8eÒ\82Í\90Ó\94C\82ð\95\89\82¢\82Ü\82¹\82ñ\81B</span></p>
+        </div>
+        <p>\8dÅ\8fI\97\98\97p\8eÒ\8e©\90g\82Ì\90Ó\94C\82Ì\94Í\88Í\82É\82¨\82¢\82Ä\82²\97\98\97p\82­\82¾\82³\82¢\81B</p>
+        
+        <h3>\96{\83R\83\93\83|\81[\83l\83\93\83g\82Ì\8dÄ\94z\95z\82É\82Â\82¢\82Ä</h3>
+        <p>\96{\83R\83\93\83|\81[\83l\83\93\83g\82ð\8eg\97p\82·\82é\83X\83N\83\8a\83v\83g\82ð\8dì\90¬\82³\82ê\81A\82»\82ê\82ð\94z\95z\82µ\82½\82¢\8fê\8d\87\82É\82Í\81A
+          SeraphyScriptDialog\82Ì\83Z\83b\83g\83A\83b\83v\82ð\83X\83N\83\8a\83v\83g\82É\93¯\8d«\82·\82é\82Æ\97Ç\82¢\82Å\82µ\82å\82¤\81B</p>
+        <p>\82Ü\82½\81A\96{\83Z\83b\83g\83A\83b\83v\82ÍInno Setup\82É\82æ\82Á\82Ä\8dì\90¬\82³\82ê\82Ä\82¨\82è\81A\83I\83v\83V\83\87\83\93\82Æ\82µ\82Ä<b>\81u/silent\81v</b>\82Æ\8ew\92è\82·\82é\82±\82Æ\82É\82æ\82è\81A
+          \83\86\81[\83U\82Ö\82Ì\96â\82¢\8d\87\82í\82¹\82È\82µ\82É\83C\83\93\83X\83g\81[\83\8b\82ð\8a®\97¹\82³\82¹\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+        <p>\93Æ\8e©\82Ì\83C\83\93\83X\83g\81[\83\89\82Ì\8dì\90¬\81A\82Ü\82½\82Í\95¡\90\94\82Ì\83}\83V\83\93\82Ö\82Ì\88ê\8a\87\94z\95z\82È\82Ç\82Ì\8fê\8d\87\82É\82²\97\98\97p\82¢\82½\82¾\82¯\82é\82Æ\8ev\82¢\82Ü\82·\81B</p>
+
+        <h3>\83\\83t\83g\83E\83F\83A\82Ì\89ü\95Ï\82Æ\8dÄ\94z\95z\82Ì\92\8d\88Ó\93_</h3>
+        <p>\83\\83t\83g\83E\83F\83A\82Ì\89ü\95Ï\82Æ\8dÄ\94z\95z\82à\8e©\97R\82Å\82·\81B</p>
+        <p>\82½\82¾\82µ\81A\96{\83\\83t\83g\83E\83F\83A\82ªCOM\83I\83u\83W\83F\83N\83g\82Å\82 \82é\82Æ\82¢\82¤\90«\8e¿\82©\82ç\81A\83o\81[\83W\83\87\83\93\8aÇ\97\9d\82Ì\95K\97v\82ª\82 \82é\82½\82ß\81A
+        <span class="warning">\89ü\95Ï\82µ\82½\82à\82Ì\82ð\94z\95z\82·\82é\8fê\8d\87\82É\82Í\81ACOM\82ÌProgID\81ACLSID\81ALIBID\93\99\82ÌGUID\82ªSeraphyScriptDialog\82Æ\8fd\82È\82ç\82È\82¢\83\86\83j\81[\83N\82È\82à\82Ì\82É\95Ï\82¦\82Ä\82­\82¾\82³\82¢\81B</span></p>
+
+          <h4>\83q\83\93\83g</h4>
+          <p>GUID\82ÍVisual Studio\82Ì\83c\81[\83\8b\83\81\83j\83\85\81[\82Ì\81uGUID\82Ì\8dì\90¬\81v\82©\82ç\81A\82¢\82Â\82Å\82à\83\89\83\93\83_\83\80\82ÈGUID\82ð\8eæ\93¾\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+          <p>\93¾\82ç\82ê\82½\90V\82µ\82¢GUID\82Å\8aù\91\82ÌGUID\82ð\92u\8a·\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
+        
+        <h3>\89ü\91P\82Ì\92ñ\88Ä\82Ü\82½\82Í\83p\83b\83`\82Ì\92ñ\8b\9f\82É\82Â\82¢\82Ä</h3>
+        <p>SeraphyScriptDialog\82Ì\8fC\90³\82É\89Á\82¦\82½\95û\82ª\82æ\82¢\82Æ\8ev\82í\82ê\82é\8bï\91Ì\93I\82È\89ü\91P\88Ä\81A\82 \82é\82¢\82Í\83p\83b\83`\82ð\8dì\90¬\82³\82ê\82½\8fê\8d\87\82Í\81A
+        \82º\82Ð\83v\83\8d\83W\83F\83N\83g\83z\81[\83\80\8fã\82Å\82²\98A\97\8d\82à\82µ\82­\82Í\93\8a\8de\82¢\82½\82¾\82¯\82é\82Æ\8dK\82¢\82Å\82·\81B</p>
+
+      </div>
+    </div>
+  </div>
+</body>
+</html>
+
+
+
diff --git a/help/html/sample1.png b/help/html/sample1.png
new file mode 100644 (file)
index 0000000..ef3e2e1
Binary files /dev/null and b/help/html/sample1.png differ
diff --git a/help/html/sample2.png b/help/html/sample2.png
new file mode 100644 (file)
index 0000000..276d553
Binary files /dev/null and b/help/html/sample2.png differ
diff --git a/help/html/sample3.png b/help/html/sample3.png
new file mode 100644 (file)
index 0000000..d535744
Binary files /dev/null and b/help/html/sample3.png differ
diff --git a/help/html/sample4.png b/help/html/sample4.png
new file mode 100644 (file)
index 0000000..8a848f1
Binary files /dev/null and b/help/html/sample4.png differ
diff --git a/help/html/sample_button.png b/help/html/sample_button.png
new file mode 100644 (file)
index 0000000..a404dda
Binary files /dev/null and b/help/html/sample_button.png differ
diff --git a/help/html/sample_chkbutton1.png b/help/html/sample_chkbutton1.png
new file mode 100644 (file)
index 0000000..3d5fabb
Binary files /dev/null and b/help/html/sample_chkbutton1.png differ
diff --git a/help/html/sample_chkbutton2.png b/help/html/sample_chkbutton2.png
new file mode 100644 (file)
index 0000000..a5d17c7
Binary files /dev/null and b/help/html/sample_chkbutton2.png differ
diff --git a/help/html/sample_chkbutton3.png b/help/html/sample_chkbutton3.png
new file mode 100644 (file)
index 0000000..98be38b
Binary files /dev/null and b/help/html/sample_chkbutton3.png differ
diff --git a/help/html/sample_combo.png b/help/html/sample_combo.png
new file mode 100644 (file)
index 0000000..0505877
Binary files /dev/null and b/help/html/sample_combo.png differ
diff --git a/help/html/sample_combo_B.png b/help/html/sample_combo_B.png
new file mode 100644 (file)
index 0000000..8e4eb9a
Binary files /dev/null and b/help/html/sample_combo_B.png differ
diff --git a/help/html/sample_dropdownlist.png b/help/html/sample_dropdownlist.png
new file mode 100644 (file)
index 0000000..5fac271
Binary files /dev/null and b/help/html/sample_dropdownlist.png differ
diff --git a/help/html/sample_dropdownlist_B.png b/help/html/sample_dropdownlist_B.png
new file mode 100644 (file)
index 0000000..2f3529b
Binary files /dev/null and b/help/html/sample_dropdownlist_B.png differ
diff --git a/help/html/sample_editbox.png b/help/html/sample_editbox.png
new file mode 100644 (file)
index 0000000..8f3f8fe
Binary files /dev/null and b/help/html/sample_editbox.png differ
diff --git a/help/html/sample_editbtn.png b/help/html/sample_editbtn.png
new file mode 100644 (file)
index 0000000..64c4441
Binary files /dev/null and b/help/html/sample_editbtn.png differ
diff --git a/help/html/sample_fileedit.png b/help/html/sample_fileedit.png
new file mode 100644 (file)
index 0000000..1df2f11
Binary files /dev/null and b/help/html/sample_fileedit.png differ
diff --git a/help/html/sample_label.png b/help/html/sample_label.png
new file mode 100644 (file)
index 0000000..c87ba22
Binary files /dev/null and b/help/html/sample_label.png differ
diff --git a/help/html/sample_listbox.png b/help/html/sample_listbox.png
new file mode 100644 (file)
index 0000000..e2725db
Binary files /dev/null and b/help/html/sample_listbox.png differ
diff --git a/help/html/sample_modal.png b/help/html/sample_modal.png
new file mode 100644 (file)
index 0000000..f5caf1d
Binary files /dev/null and b/help/html/sample_modal.png differ
diff --git a/help/html/sample_modaless.png b/help/html/sample_modaless.png
new file mode 100644 (file)
index 0000000..90d5d41
Binary files /dev/null and b/help/html/sample_modaless.png differ
diff --git a/help/html/sample_modaless2.png b/help/html/sample_modaless2.png
new file mode 100644 (file)
index 0000000..bbd5f17
Binary files /dev/null and b/help/html/sample_modaless2.png differ
diff --git a/help/html/sample_radiobutton1.png b/help/html/sample_radiobutton1.png
new file mode 100644 (file)
index 0000000..51638ae
Binary files /dev/null and b/help/html/sample_radiobutton1.png differ
diff --git a/help/html/sample_radiobutton2.png b/help/html/sample_radiobutton2.png
new file mode 100644 (file)
index 0000000..8007c01
Binary files /dev/null and b/help/html/sample_radiobutton2.png differ
diff --git a/help/html/technote.html b/help/html/technote.html
new file mode 100644 (file)
index 0000000..48b3565
--- /dev/null
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>\8bZ\8fp\93I\82È\92\8d\88Ó\8e\96\8d\80</title>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+      <div id="technote">
+        <h2>\8bZ\8fp\93I\82È\92\8d\88Ó\8e\96\8d\80</h2>
+           <h3>\83X\83\8c\83b\83h\82Ì\90§\96ñ\82É\82Â\82¢\82Ä</h3>
+            <ul>
+              <li>SeraphyScriptDialog\82ÍUI\97p\83R\83\93\83|\81[\83l\83\93\83g\82Å\82Ì\95W\8f\80\82Å\82 \82éSTA(\83V\83\93\83O\83\8b\83X\83\8c\83b\83h\83A\83p\81[\83g\83\81\83\93\83g)\82Å\93®\8dì\82·\82éCOM\83I\83u\83W\83F\83N\83g\82Æ\82µ\82Ä\8dì\90¬\82³\82ê\82Ä\82¢\82Ü\82·\81B</li>
+              <li>\83}\83\8b\83`\83X\83\8c\83b\83h\82©\82ç\82Ì\8cÄ\82Ñ\8fo\82µ\82É\82Í\8eg\97p\82Å\82«\82Ü\82¹\82ñ\81B</li>
+              <li>\82Ü\82½\81AWindows\82ÌWin32\82Ì\8c´\91¥\82Æ\82µ\82Ä\81A\83E\83B\83\93\83h\83E\82ð\8dì\90¬\82µ\82½\83X\83\8c\83b\83h\82ª\83\81\83b\83Z\81[\83W\83|\83\93\83v\82Å\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82·\82é\95K\97v\82ª\82 \82é\82½\82ß\81A
+              \83X\83N\83\8a\83v\83g\8fã\82Å\83E\83B\83\93\83h\83E\82ð\8dì\90¬\82µ\82½\8fê\8d\87\81A\82»\82Ì\83E\83B\83\93\83h\83E\82Í\81A\83X\83N\83\8a\83v\83g\93à(\82à\82µ\82­\82Í\81A\83X\83N\83\8a\83v\83g\82Æ\93¯\82\83X\83\8c\83b\83h\93à)\82Å\8f\88\97\9d\82µ\82È\82¯\82ê\82Î\82È\82ç\82È\82¢\82±\82Æ\82É\92\8d\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B</li>
+            </ul>
+
+            <h3>\83\82\81[\83h\83\8c\83X\95\\8e¦\81A\83\81\83b\83Z\81[\83W\83\8b\81[\83v\82É\82Â\82¢\82Ä</h3>
+            <ul>
+              <li>SeraphyScriptDialog\82ÌDoEvents\83\81\83\\83b\83h\81A\82¨\82æ\82ÑWaitEvent\83\81\83\\83b\83h\82Í<u>\82»\82Ì\83X\83\8c\83b\83h\82Ì\83\81\83b\83Z\81[\83W\83L\83\85\81[</u>\82ðWindows\82Ì\95W\8f\80\93I\82È\95û\96@\82Å\8f\88\97\9d\82µ\82Ü\82·\81B</li>
+              <li>\82±\82Ì\82Æ\82«\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\93¯\88ê\83X\83\8c\83b\83h\8fã\82É\91¼\82ÌUI\97v\91f\82ª\82 \82é\8fê\8d\87\82É\82Í\81A\82»\82ÌUI\82Ì\83\81\83b\83Z\81[\83W\82àWindows\82Ì\95W\8f\80\93I\82È\95û\96@\82Å\82Ü\82Æ\82ß\82Ä\8f\88\97\9d\82³\82ê\82Ü\82·\81B</li>
+              <li>\82±\82Ì\82Æ\82«\81A\82à\82µ\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\83\81\83b\83Z\81[\83W\8f\88\97\9d\82É\93Æ\8e©\8f\88\97\9d\82ð\8ds\82Á\82Ä\82¢\82½\8fê\8d\87\82É\82Í\81A\82»\82ê\82ç\82Ì\8f\88\97\9d\82ª\8ds\82í\82ê\82¸\81A\97\\8aú\82¹\82Ê\8c\8b\89Ê\82É\82È\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B</li>
+              <li>\82Ü\82½\81A\82±\82Ì\82æ\82¤\82È\8fê\8d\87\82É\82Í\81A\83X\83N\83\8a\83v\83g\82ð\93®\8dì\82³\82¹\82È\82ª\82ç\81A\82Ù\82©\82ÌUI\97v\91f\82à\94½\89\9e\82Å\82«\82é\82½\82ß\81A\8b[\8e\97\93I\82É\83}\83\8b\83`\83X\83\8c\83b\83h\93I\82É\8c©\82¦\82é\82©\82à\82µ\82ê\82Ü\82¹\82ñ\82ª\81A\82¨\82»\82ç\82­\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\8dÄ\93ü\89Â\94\\82É\82È\82Á\82Ä\82¢\82È\82¢\95\94\95ª\82ª\82 \82é\8fê\8d\87\82É\82Í\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\91z\92è\82µ\82Ä\82¢\82È\82¢\93®\8dì\82Æ\82È\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B</li>
+              <li>\82±\82ê\82Í\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\96â\91è\82Å\82Í\82È\82­(\82Ü\82½\81ASeraphyScriptDialog\82Ì\96â\91è\82Å\82à\82È\82­)\83\81\83J\83j\83Y\83\80\93I\82É\81A\82»\82Ì\82æ\82¤\82È\82à\82Ì\82¾\82Æ\82²\97\9d\89ð\82­\82¾\82³\82¢\81B</li>
+              <li>\82È\82¨\81ADoEvents, WaitEvent\82ð\8eg\82í\82È\82¢\81A\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O\82Ì\8fê\8d\87\81A\90e\83E\83B\83\93\83h\83E\82Í\83f\83B\83Z\81[\83u\83\8b\8fó\91Ô\82Æ\82È\82è\91\80\8dì\95s\89Â\94\\82Æ\82È\82é\82½\82ß\81A\96â\91è\82Æ\82È\82é\89Â\94\\90«\82Í\92á\82¢\82Æ\8dl\82¦\82ç\82ê\82Ü\82·\81B</li>
+              <li>WSH\82©\82ç\8eg\82¤\8fê\8d\87\82É\82Í\81AWSH\82Í\83V\83\93\83O\83\8b\83X\83\8c\83b\83h\82Å\93®\8dì\82µ\82Ä\82¨\82è\81A\82©\82Â\81A\91¼\82Ì\83E\83B\83\93\83h\83E\82Í\82 \82è\82Ü\82¹\82ñ\82Ì\82Å\81A\82±\82Ì\96â\91è\82Í\90\82\82Ü\82¹\82ñ\81B</li>
+            </ul>
+
+            <h3>\83\82\81[\83_\83\8b\95\\8e¦\82É\82Â\82¢\82Ä</h3>
+            <ul>
+              <li>\8b\8c\83o\81[\83W\83\87\83\93Version1.0\82Ì\83\82\81[\83_\83\8b\95\\8e¦\82Í\81AMFC\82ÌCDialog::DoModal\83\81\83\\83b\83h\82ð\92P\8f\83\82É\8cÄ\82Ñ\8fo\82µ\82Ä\82¢\82Ü\82µ\82½\81B</li>
+              <li>Version2.0\82Å\82Í\81A\8eÀ\8e¿\93I\82É\83\82\81[\83_\83\8b\82à\83\82\81[\83h\83\8c\83X\82Æ\93¯\82\82æ\82¤\82É\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82µ\82Ä\82¢\82Ü\82·\81B</li>
+              <li>\83\82\81[\83_\83\8b\82ª\83\82\81[\83h\83\8c\83X\82Æ\88á\82È\82é\93_\82Í\81A
+                <ul>
+                  <li>\83C\83x\83\93\83g\82ª\94­\90\82·\82é\82Ü\82Å\83X\83N\83\8a\83v\83g\91¤\82É\90§\8cä\82ð\96ß\82³\82È\82¢</li>
+                  <li>\8c»\8dÝ\83A\83N\83e\83B\83u\82È\83E\83B\83\93\83h\83E\82ð\83f\83B\83Z\81[\83u\83\8b\82É\82µ\82Ä\82©\82ç\83t\83H\81[\83\80\82ð\8d\\92z\82·\82é</li>
+                </ul>
+              \82Æ\82È\82è\82Ü\82·\81B</li>
+            </ul>
+        </div>
+      </div>
+  </div>
+</body>
+</html>
+
+
+
diff --git a/help/html/top.html b/help/html/top.html
new file mode 100644 (file)
index 0000000..b02407d
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>SeraphyScriptDialog\82É\82Â\82¢\82Ä</title>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+      <div id="header">
+        <h1>SeraphyScriptDialog\82É\82Â\82¢\82Ä</h1>
+        <p style="text-align: right;">Version 2.0 (2015/3)</p>
+      </div>
+      <div id="preface">
+        <h2>\8aT\97v\90à\96¾</h2>
+        <p style="margin-bottom: 0.5em;">SeraphyScriptDialog\82Í\81AVBScript/JScript\82È\82Ç\82Ì\83X\83N\83\8a\83v\83g\8fã\82Å<u>\83\86\81[\83U\81[\92è\8b`\82Ì\8aÈ\88Õ\8c^\83_\83C\83A\83\8d\83O\82ð\8dì\90¬\82Å\82«\82é\82æ\82¤\82É\82·\82é</u>\82½\82ß\82Ì\81A
+        COM\83I\83u\83W\83F\83N\83g\82É\82æ\82é\83\\83t\83g\83E\83F\83A\83R\83\93\83|\81[\83l\83\93\83g\82Å\82·\81B</p>
+        <p style="margin-bottom: 0.5em;">\96{\83R\83\93\83|\81[\83l\83\93\83g\82Ì\8c´\97\9d\82Í\81A\92Ê\8fí\82Ì\83E\83B\83\93\83h\83E\83A\83v\83\8a\83P\81[\83V\83\87\83\93(Exe)\82ª\8cÄ\82Ñ\8fo\82µ\82Ä\82¢\82é\8ae\8eíWin32 API\82ð\81AVBScript/JScript\82È\82Ç\82Ì\83X\83N\83\8a\83v\83g\8c¾\8cê\82©\82ç\96{COM\83R\83\93\83|\81[\83l\83\93\83g\8co\97R\82Å\8cÄ\82Ñ\8fo\82·\82±\82Æ\82É\82æ\82è\81A
+        Win32\83E\83B\83\93\83h\83E\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ð\8aÈ\88Õ\93I\82É\8eÀ\8c»\82·\82é\82à\82Ì\82Å\82·\81B</p>
+        <p style="margin-bottom: 0.5em;">\83_\83C\83A\83\8d\83O\82Ì\8d\\90¬\82Í\94ñ\8fí\82É\8cÀ\92è\93I\82Å\94z\92u\82È\82Ç\82Ì\8d×\82©\82¢\8ew\92è\82Í\82Å\82«\82Ü\82¹\82ñ\82ª\81A\83X\83N\83\8a\83v\83g\8fã\82Å\8aÈ\92P\82É\83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82ð\92è\8b`\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+        <p style="margin-bottom: 0.5em;">\83_\83C\83A\83\8d\83O\82Í\83\82\81[\83_\83\8b\82¾\82¯\82Å\82È\82­\81A\83\82\81[\83h\83\8c\83X\82Æ\82µ\82Ä\82à\8b@\94\\82³\82¹\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+        <p style="margin-bottom: 0.5em;">\96{\83R\83\93\83|\81[\83l\83\93\83g\82ð\8eg\82¤\82±\82Æ\82É\82æ\82è\81AWSH\82È\82Ç\82Ì\83X\83N\83\8a\83v\83g\82É\91Î\98b\93I\82È\8b@\94\\82ð\82Â\82¯\82é\82±\82Æ\82ª\82Å\82«\81A\8e©\8dì\83\86\81[\83e\83\8a\83e\83B\83c\81[\83\8b\82Ì\8b@\94\\90«\8cü\8fã\82ð\90}\82é\82±\82Æ\82ª\82Å\82«\82é\82Æ\8ev\82¢\82Ü\82·\81B</p>
+        <p style="margin-bottom: 0.5em;">\82Ü\82½\95â\8f\95\93I\82È\8b@\94\\82Æ\82µ\82Ä\81A\83A\83E\83g\83v\83b\83g\83E\83B\83\93\83h\83E\82â\81A\83t\83@\83C\83\8b\91\80\8dì\82É\8aÖ\82·\82é\81A\82¢\82­\82Â\82©\82Ì\8b@\94\\82à\8e\9d\82Á\82Ä\82¢\82Ü\82·\81B</p>
+
+        <div style="text-align: center; margin: 1em; padding: 1em; border-style: dotted; border-width: 1px; border-color: gray;">
+        <img src="sample1.png"><br/>
+        <span style="font-size: 80%; color: gray;">\97á: \83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O</span>
+        </div>
+      </div>
+
+      <div>
+        <h3>\93Á\92¥</h3>
+        <ul>
+          <li>\8aÈ\92P\82ÈUI\82Ì\90Ý\92è\82ª\89Â\94\\81B
+            <ul>
+              <li>\83t\83H\81[\83\80\82Ì\83\8c\83C\83A\83E\83g\82Í\94ñ\8fí\82É\8cÀ\92è\93I\82Å\8fã\82©\82ç\8f\87\82É\97v\91f\82ð\95À\82×\82é\82±\82Æ\82µ\82©\82Å\82«\82Ü\82¹\82ñ\82ª\81A\82»\82Ì\82©\82í\82è\92è\8b`\82·\82é\82Ì\82Í\94ñ\8fí\82É\8aÈ\92P\82Å\82·\81B</li>
+              <li>\83G\83f\83B\83b\83g\83{\83b\83N\83X\82â\83t\83@\83C\83\8b\96¼\93ü\97Í\81A\83`\83F\83b\83N\83{\83^\83\93\81A\83\89\83W\83I\83{\83^\83\93\81A\83\8a\83X\83g\83{\83b\83N\83X\81A\83v\83b\83V\83\85\83{\83^\83\93\82È\82Ç\82ð\92è\8b`\82Å\82«\82Ü\82·\81B</li>
+            </ul>
+          </li>
+          <li>\83_\83C\83A\83\8d\83O\82Ö\82Ì\83t\83@\83C\83\8b\82Ì\83h\83\8d\83b\83v\82ª\89Â\94\</li>
+          <li>\83\82\81[\83_\83\8b\81E\83\82\81[\83h\83\8c\83X\82Å\82Ì\83t\83H\81[\83\80\82Ì\93®\8dì\82ª\89Â\94\
+            <ul>
+              <li>\83\82\81[\83_\83\8b\82Ì\8fê\8d\87\81A\90e\83E\83B\83\93\83h\83E\82ª\82 \82ê\82Î\90e\83E\83B\83\93\83h\83E\82ð\83f\83B\83Z\81[\83u\83\8b\82Æ\82µ\8e©\83t\83H\81[\83\80\82¾\82¯\82ª\91\80\8dì\89Â\94\\82Æ\82È\82è\81A\89½\82ç\82©\82Ì\83A\83N\83V\83\87\83\93\82ª\94­\90\82·\82é\82Ü\82Å\90§\8cä\82ð\96ß\82µ\82Ü\82¹\82ñ\81B</li>
+              <li>\83\82\81[\83h\83\8c\83X\82Ì\8fê\8d\87\81A\90e\83E\83B\83\93\83h\83E\82ð\83f\83B\83Z\81[\83u\83\8b\82É\82·\82é\82±\82Æ\82Í\82È\82­\81A\95¡\90\94\82Ì\83t\83H\81[\83\80\82ð\93¯\8e\9e\82É\8aJ\82¢\82Ä\91\80\8dì\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\82ª\81A\83A\83N\83V\83\87\83\93\82Ì\97L\96³\82É\82©\82©\82í\82ç\82¸\90§\8cä\82ª\96ß\82é\82½\82ß\83\8b\81[\83v\82Å\8f\88\97\9d\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B</li>
+            </ul>
+          </li>
+          <li>\95â\8f\95\8b@\94\
+            <ul>
+              <li>\83t\83@\83C\83\8b\91\80\8dì\93\99\82É\8aÖ\82·\82é\95â\8f\95\8b@\94\\82ª\82 \82è\82Ü\82·\81B</li>
+              <li>\95\8e\9a\97ñ\94z\97ñ\82É\8aÖ\82·\82é\95â\8f\95\8b@\94\\82ª\82 \82è\82Ü\82·\81B</li>
+              <li>\90i\8ds\8fó\91Ô\82È\82Ç\82Ì\8am\94F\82Ì\82½\82ß\82É\8eg\82¦\82é\83A\83E\83g\83v\83b\83g\83E\83B\83\93\83h\83E\82ª\82 \82è\82Ü\82·\81B</li>
+            </ul>
+          </li>
+        </ul>
+      </div>
+
+      <div id="requirement">
+        <h2>\93®\8dì\8aÂ\8b«</h2>
+        <p>\88È\89º\82Ì\8aÂ\8b«\82Å\82Ì\93®\8dì\82ð\91z\92è\82µ\82Ä\82¢\82Ü\82·\81B</p>
+
+        <h3>OS</h3>
+        <p>\88È\89º\82Ì\82¢\82¸\82ê\82©\82ÌOS\82Å\93®\8dì\82ð\91z\92è\82µ\82Ä\82¢\82Ü\82·\81B</p>
+        <ul>
+          <li>Windows Vista</li>
+          <li>Windows Vista x64</li>
+          <li>Windows 7</li>
+          <li>Windows 7 x64</li>
+          <li>Windows 8/8.1</li>
+          <li>Windows 8/8.1 x64</li>
+          <li>Windows Server 2008/R2</li>
+          <li>Windows Server 2008/R2 x64</li>
+        </ul>
+        <p>\81¦ \82¨\82»\82ç\82­\81AWindows XP\82Å\82à\93®\8dì\82·\82é\82Æ\8dl\82¦\82ç\82ê\82Ü\82·\81B</p>
+        <p>\81¦ \82¢\82¸\82ê\82ÌOS\82Å\82à\81AVBScript, JScript\82È\82ÇActiveScript\82ª\96³\8cø\82É\82³\82ê\82Ä\82¢\82È\82¢\82±\82Æ\81B(\95W\8f\80\82Å\97L\8cø\82É\82È\82Á\82Ä\82¢\82Ü\82·\81B)</p>
+
+          <h3>64\83r\83b\83g\94ÅOS\8fã\82Å\82Ì\92\8d\88Ó</h3>
+          <p>64\83r\83b\83gOS\82Å\96{\83R\83\93\83|\81[\83l\83\93\83g\82ð\83Z\83b\83g\83A\83b\83v\82·\82é\82Æ\81Ax64\97p\82Æx86\97p\82Ì\97¼\95û\82Ì\83R\83\93\83|\81[\83l\83\93\83g\82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ü\82·\81B</p>
+          <p style="margin-top: 1em;">64\83r\83b\83g\83R\83\93\83|\81[\83l\83\93\83g\82Í64\83r\83b\83gEXE\97p\81Ax86(32\83r\83b\83g)\83R\83\93\83|\81[\83l\83\93\83g\82Í32\83r\83b\83gEXE\97p\82Å\82·\81B</p>
+          <p>64\83r\83b\83g\8aÂ\8b«\82Å\83X\83N\83\8a\83v\83g\82ð\83_\83u\83\8b\83N\83\8a\83b\83N\82·\82é\82È\82Ç\82ÅWSH\82ð\8bN\93®\82·\82é\82Æ\81A64\83r\83b\83g\94Å\82ÌWSH\82ª\8bN\93®\82·\82é\82½\82ß\81A64\83r\83b\83g\94Å\82Ì\83R\83\93\83|\81[\83l\83\93\83g\82ª\8eg\97p\82³\82ê\82Ü\82·\81B</p>
+          <p style="margin-top: 1em;">32\83r\83b\83g\97p\82ÌWSH\82ð\8bN\93®\82µ\82½\82¢\8fê\8d\87\82Í\81A\97á\82¦\82Î<code>C:\Windows\SysWow64\wscript.exe</code>\82Ì\82æ\82¤\82É\96¾\8e¦\93I\82É32\83r\83b\83gEXE\82ð\8bN\93®\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B</p>
+          <p>32\83r\83b\83g\97p\82ÌWSH\82ð\8bN\93®\82µ\82½\8fê\8d\87\82Í\81A32\83r\83b\83g\94Å\82Ì\83R\83\93\83|\81[\83l\83\93\83g\82ª\8eg\97p\82³\82ê\82Ü\82·\81B</p>
+          <p style="margin-top: 1em;">
+              \96{\83R\83\93\83|\81[\83l\83\93\83g\82»\82Ì\82à\82Ì\82Í64/32\82Æ\82à\82É\93®\8dì\82µ\82Ü\82·\82ª\81A\8eg\97p\82·\82éCOM\82É\82æ\82Á\82Ä\82Í32\83r\83b\83g\94Å\82µ\82©\97p\88Ó\82³\82ê\82Ä\82¢\82È\82¢\82à\82Ì\82È\82Ç\82ª\82 \82è\82Ü\82·\82Ì\82Å\81A
+              WSH\82ð\8eg\82¤\8fê\8d\87\82É\82Í\81A\82Ç\82¿\82ç\82ð\97p\82¢\82é\82Ì\82©\81A\82æ\82­\8am\94F\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
+          </p>
+      </div>
+
+      <div id="projecthome">
+        <h2><a name="projecthome">\82±\82Ì\83\\83t\83g\83E\83F\83A\83v\83\8d\83W\83F\83N\83g\82É\82Â\82¢\82Ä</a></h2>
+        <p>\96{\83\\83t\83g\83E\83F\83A\82Í\83I\81[\83v\83\93\83\\81[\83X\83v\83\8d\83W\83F\83N\83g\82Å\82·\81B</p>
+        <p>\83v\83\8d\83W\83F\83N\83g\83z\81[\83\80\82ÍSourceforge.JP\8fã\82É\82 \82è\82Ü\82·\81B</p>
+        <p><b>http://sourceforge.jp/projects/seraphyscrtools/</b></p>
+        <p style="margin-top:1em;">\82Ç\82È\82½\82Å\82à\82²\8e©\97R\82É\82²\97\98\97p\82¢\82½\82¾\82¯\82Ü\82·\81B</p>
+        <p>\8fÚ\82µ\82­\82Í\81A<a href="license.html">\83\89\83C\83Z\83\93\83X\82¨\82æ\82Ñ\8eg\97p\8b\96\91ø\8fð\8c\8f</a>\82ð\82²\8am\94F\82­\82¾\82³\82¢\81B</p>
+      </div>
+  </div>
+</body>
+</html>
+
+
+
diff --git a/help/html/wsfref.html b/help/html/wsfref.html
new file mode 100644 (file)
index 0000000..717d478
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
+  <meta http-equiv="Content-Style-Type" content="text/css">
+  <meta http-equiv="Content-Language" content="ja-JP">
+  <link href="devstyle.css" rel="stylesheet" type="text/css" media="screen" >
+  <title>\8bZ\8fp\93I\82È\92\8d\88Ó\8e\96\8d\80</title>
+</head>
+<body>
+  <div id="container">
+    <div id="main">
+      <div id="technote">
+        <h2>wsf\83t\83@\83C\83\8b\82É\82æ\82é\92è\90\94\82Ì\8eQ\8fÆ</h2>
+        <h3>\92è\90\94\82Ì\8eQ\8fÆ</h3>
+        <p>SeraphyScriptDialog\82ÍVersion2\88È\8d~\81A\83^\83C\83v\83\89\83C\83u\83\89\83\8a\93à\82É\92è\90\94\82ð\92è\8b`\82µ\82Ä\82¨\82è\81A
+          \83^\83C\83v\83\89\83C\83u\83\89\83\8a\82ð\83X\83N\83\8a\83v\83g\82©\82ç\8eQ\8fÆ\82Å\82«\82é\8fê\8d\87\81A\82»\82Ì\92è\90\94\82É\92è\90\94\96¼\82Å\83A\83N\83Z\83X\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B</p>
+        <p>WSH\82Å\82Í\81Awsf\83t\83@\83C\83\8b\82Ì<code>reference</code>\83^\83O\82ð\8eg\97p\82·\82é\82±\82Æ\82Å\81A\83^\83C\83v\83\89\83C\83u\83\89\83\8a\82ð\8eQ\8fÆ\82Å\82«\82Ü\82·\81B</p>
+
+        <h3>\83T\83\93\83v\83\8b\83R\81[\83h</h3>
+          <p>\88È\89º\82Í\81A\81u\83f\83X\83N\83g\83b\83v\81v\82Ì\93Á\8eê\83t\83H\83\8b\83_\88Ê\92u\82ð\8eæ\93¾\82·\82é\82½\82ß\82Ì\83T\83\93\83v\83\8b\83R\81[\83h\82Å\82·\81B</p>
+          <p>\83f\83X\83N\83g\83b\83v\82ð\95\\82·\92è\90\94\81uFOLDERID_DESKTOPDIRECTORY\81v\82ð\83^\83C\83v\83\89\83C\83u\83\89\83\8a\82æ\82è\8eQ\8fÆ\82µ\82Ä\82¢\82Ü\82·\81B</p>
+
+          <code><pre>
+    &lt;?xml version="1.0" encoding="UTF-8" ?>
+    &lt;job>
+       &lt;object id="scrdlg" progid="SeraphyScriptDialog" />
+       <b>&lt;reference object="SeraphyScriptDialog"/></b>
+       &lt;script language="VBScript">
+       &lt;![CDATA[
+          Option Explicit
+          Dim desktopdir
+          desktopdir = scrdlg.GetSpecialFolderPath(<b>FOLDERID_DESKTOPDIRECTORY</b>)
+          WScript.Echo "desktop dir=" & desktopdir
+       ]]>
+       &lt;/script>
+    &lt;/job>
+</pre></code>
+        </div>
+      </div>
+  </div>
+</body>
+</html>
+
+
+
diff --git a/help/seraphyscriptdialog.hhc b/help/seraphyscriptdialog.hhc
new file mode 100644 (file)
index 0000000..eb3dd88
--- /dev/null
@@ -0,0 +1,204 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<UL>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="SeraphyScriptDialog">
+               </OBJECT>
+       <UL>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="\8aT\97v">
+                       <param name="Local" value="html\top.html">
+                       </OBJECT>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="\83v\83\8d\83W\83F\83N\83g\83z\81[\83\80">
+                       <param name="Local" value="html\top.html#projecthome">
+                       </OBJECT>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="\83\89\83C\83Z\83\93\83X\82Æ\8eg\97p\8b\96\91ø\8fð\8c\8f">
+                       <param name="Local" value="html\license.html">
+                       </OBJECT>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="\83Z\83b\83g\83A\83b\83v\82É\82Â\82¢\82Ä">
+                       <param name="Local" value="html\howtoinstall.html">
+                       </OBJECT>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="\8dX\90V\97\9a\97ð\81E\97ð\8ej">
+                       <param name="Local" value="html\history.html">
+                       </OBJECT>
+       </UL>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="\83}\83j\83\85\83A\83\8b">
+               </OBJECT>
+       <UL>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="\8eg\82¢\95û">
+                       <param name="Local" value="html\howtouse.html">
+                       </OBJECT>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="SeraphyScriptDialog\83I\83u\83W\83F\83N\83g">
+                       </OBJECT>
+               <UL>
+                       <LI> <OBJECT type="text/sitemap">
+                               <param name="Name" value="\8aT\97v">
+                               <param name="Local" value="html\ScrDlgRootSynop.html">
+                               </OBJECT>
+                       <LI> <OBJECT type="text/sitemap">
+                               <param name="Name" value="\83v\83\8d\83p\83e\83B">
+                               </OBJECT>
+                       <UL>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83f\81[\83^\95Ï\8a·\8aÖ\98A">
+                                       <param name="Local" value="html\DataConvProp.html">
+                                       </OBJECT>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\90Ý\92è\83t\83@\83C\83\8b\8aÖ\98A">
+                                       <param name="Local" value="html\PreferencesProp.html">
+                                       </OBJECT>
+                       </UL>
+                       <LI> <OBJECT type="text/sitemap">
+                               <param name="Name" value="\83\81\83\\83b\83h">
+                               </OBJECT>
+                       <UL>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83R\83\82\83\93\83_\83C\83A\83\8d\83O\8aÖ\98A">
+                                       <param name="Local" value="html\CommonDlgMethod.html">
+                                       </OBJECT>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83V\83F\83\8b\8aÖ\98A">
+                                       <param name="Local" value="html\ShellMethod.html">
+                                       </OBJECT>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83V\83X\83e\83\80\8aÖ\98A">
+                                       <param name="Local" value="html\SystemMethod.html">
+                                       </OBJECT>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83t\83@\83C\83\8b\8aÖ\98A">
+                                       <param name="Local" value="html\FileMethod.html">
+                                       </OBJECT>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83C\83x\83\93\83g\8aÖ\98A">
+                                       <param name="Local" value="html\EventMethod.html">
+                                       </OBJECT>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83f\81[\83^\95Ï\8a·\8aÖ\98A">
+                                       <param name="Local" value="html\DataConvMethod.html">
+                                       </OBJECT>
+                       </UL>
+               </UL>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="UserForm\83I\83u\83W\83F\83N\83g">
+                       </OBJECT>
+               <UL>
+                       <LI> <OBJECT type="text/sitemap">
+                               <param name="Name" value="\8aT\97v">
+                               <param name="Local" value="html\UserFormSynop.html">
+                               </OBJECT>
+                       <LI> <OBJECT type="text/sitemap">
+                               <param name="Name" value="\83v\83\8d\83p\83e\83B">
+                               <param name="Local" value="html\UserFormProp.html">
+                               </OBJECT>
+                       <LI> <OBJECT type="text/sitemap">
+                               <param name="Name" value="\83\81\83\\83b\83h">
+                               </OBJECT>
+                       <UL>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83R\83\93\83g\83\8d\81[\83\8b\82Ì\94z\92u">
+                                       </OBJECT>
+                               <UL>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="ClearAllControls">
+                                               <param name="Local" value="html\ClearAllControls.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83\89\83x\83\8b">
+                                               <param name="Local" value="html\DefineLabel.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b">
+                                               <param name="Local" value="html\DefineEdit.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83{\83^\83\93\95t\82«\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b">
+                                               <param name="Local" value="html\DefineEditButton.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83t\83@\83C\83\8b\8eQ\8fÆ\83{\83^\83\93\95t\82«\83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b">
+                                               <param name="Local" value="html\DefineFileEdit.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83{\83^\83\93">
+                                               <param name="Local" value="html\DefineButton.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83`\83F\83b\83N\83{\83b\83N\83X">
+                                               <param name="Local" value="html\DefineCheckButton.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83\89\83W\83I\83{\83^\83\93">
+                                               <param name="Local" value="html\DefineRadioButton.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83R\83\93\83{\83{\83b\83N\83X">
+                                               <param name="Local" value="html\DefineComboBox.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83h\83\8d\83b\83v\83_\83E\83\93\83\8a\83X\83g">
+                                               <param name="Local" value="html\DefineDropdownList.html">
+                                               </OBJECT>
+                                       <LI> <OBJECT type="text/sitemap">
+                                               <param name="Name" value="\83\8a\83X\83g\83{\83b\83N\83X">
+                                               <param name="Local" value="html\DefineListBox.html">
+                                               </OBJECT>
+                               </UL>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O">
+                                       <param name="Local" value="html\ExecuteForm.html">
+                                       </OBJECT>
+                               <LI> <OBJECT type="text/sitemap">
+                                       <param name="Name" value="\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O">
+                                       <param name="Local" value="html\ComposeForm.html">
+                                       </OBJECT>
+                       </UL>
+               </UL>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="OutputWindow\83I\83u\83W\83F\83N\83g">
+                       </OBJECT>
+               <UL>
+                       <LI> <OBJECT type="text/sitemap">
+                               <param name="Name" value="\8aT\97v">
+                               <param name="Local" value="html\OutputWindowSynop.html">
+                               </OBJECT>
+               </UL>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="List\83I\83u\83W\83F\83N\83g">
+                       </OBJECT>
+               <UL>
+                       <LI> <OBJECT type="text/sitemap">
+                               <param name="Name" value="\8aT\97v">
+                               <param name="Local" value="html\ListObjSynop.html">
+                               </OBJECT>
+               </UL>
+       </UL>
+       <LI> <OBJECT type="text/sitemap">
+               <param name="Name" value="\8bZ\8fp\8e\91\97¿">
+               </OBJECT>
+       <UL>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="\8bZ\8fp\93I\82È\92\8d\88Ó\8e\96\8d\80">
+                       <param name="Local" value="html\technote.html">
+                       </OBJECT>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="wsf\82É\82æ\82é\92è\90\94\82Ì\8eQ\8fÆ">
+                       <param name="Local" value="html\wsfref.html">
+                       </OBJECT>
+               <LI> <OBJECT type="text/sitemap">
+                       <param name="Name" value="\8aù\92m\82Ì\83o\83O">
+                       <param name="Local" value="html\bugs.html">
+                       </OBJECT>
+       </UL>
+</UL>
+</BODY></HTML>
diff --git a/sample/About.wsf b/sample/About.wsf
new file mode 100644 (file)
index 0000000..712d63f
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<job id="testAbout">
+   <runtime>
+       <usage>
+         引数は不要です。
+        SeraphyScriptDialog.Aboutメソッドのテストを行います。
+       </usage>
+   </runtime>
+   <object id="dlg" progid="SeraphyScriptDialog" />
+   <reference object="SeraphyScriptDialog"/>
+   <script language="VBScript">
+   <![CDATA[
+      Option Explicit
+      dim ver
+      ver = dlg.About
+      WScript.Echo "version=" & ver
+   ]]>
+   </script>
+</job>
diff --git a/sample/CalcSample.js b/sample/CalcSample.js
new file mode 100644 (file)
index 0000000..b32658c
--- /dev/null
@@ -0,0 +1,44 @@
+// CalcSample
+
+var obj;
+obj = new ActiveXObject("SeraphyScriptDialog");
+
+function main()
+{
+       var frm;
+       frm = obj.CreateForm();
+       frm.FormTitle = "\83X\83N\83\8a\83v\83g\8e®\93d\91ì LimitedEdition";
+       frm.DefineLabel("\83X\83e\81[\83^\83X");
+       var ia = frm.DefineEdit("A=","10");
+       var ib = frm.DefineEdit("B=","20");
+       var ic = frm.DefineEdit("C=");
+       var b1 = frm.DefineButton("\83N\83\8a\83A");
+       frm.DefineLabel("\83R\83}\83\93\83h\93ü\97Í\97\93");
+       var id = frm.DefineEdit(null, "c = a + b\r\nc = c * 2", 5);
+       var cmd = 100;
+       frm.DefineButton("\8eÀ\8ds;\8fI\97¹", cmd);
+
+       frm.ComposeForm();
+       do{
+               var retEvent = frm.WaitEvent(10000); // \83E\83F\83C\83g\82Ì\97Ê\82Í\91å\82«\82­\82Ä\82à\96â\91è\82È\82¢\81B
+               if (retEvent == b1) {
+                       frm.Value(ia) = 0;
+                       frm.Value(ib) = 0;
+                       frm.Value(ic) = 0;
+               }
+               if (retEvent == cmd) {
+                       var a,b,c,scr;
+                       a = Number(frm.Value(ia));
+                       b = Number(frm.Value(ib));
+                       c = Number(frm.Value(ic));
+                       scr = frm.Value(id);
+                       eval(scr);
+                       frm.Value(ia) = a;
+                       frm.Value(ib) = b;
+                       frm.Value(ic) = c;
+               }
+       } while (retEvent != -1 && retEvent != cmd + 1);
+       frm.DestroyForm();
+}
+
+main();
diff --git a/sample/FormSample1.vbs b/sample/FormSample1.vbs
new file mode 100644 (file)
index 0000000..df53dac
--- /dev/null
@@ -0,0 +1,40 @@
+option explicit
+
+dim obj
+set obj = CreateObject("SeraphyScriptDialog")
+
+dim frm
+set frm = obj.CreateForm()
+
+frm.FormTitle = "\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O\82Ì\83e\83X\83g"
+
+dim i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12
+i1 = frm.DefineLabel("\83e\83X\83g")
+i2 = frm.DefineEdit("EDIT1")
+i3 = frm.DefineFileEdit("\83t\83@\83C\83\8b\96¼",,"\8aJ\82­",0,"\83e\83L\83X\83g\83t\83@\83C\83\8b(*.TXT)|*.TXT|\83\8f\81[\83h\83h\83L\83\85\83\81\83\93\83g(*.DOC)|*.DOC")
+i4 = frm.DefineEditButton("\83{\83^\83\93\95t",,"²ÍÞÝÄ")
+i5 = frm.DefineLabel("\83`\83F\83b\83N\83{\83^\83\93")
+i6 = frm.DefineCheckButton("CHK1;CHK2")
+i7 = frm.DefineLabel("\83\89\83a\83I\83{\83^\83\93")
+i8 = frm.DefineRadioButton("Radio1;Radio2;Radio3")
+i9 = frm.DefineLabel("\83\8a\83X\83g\83{\83b\83N\83X")
+i10 = frm.DefineListBox("List1;List2;List3;List4;List5;List6;List7",,3)
+i11 = frm.DefineFolderEdit("\83t\83H\83\8b\83_\96¼")
+i12 = frm.DefineButton("OK;CANCEL")
+
+do
+       dim ret
+       ret = frm.ExecuteForm()
+
+       dim mes
+       mes = "ReturnCode:" & ret & vbcrlf & vbcrlf & _
+               "EDIT1:" & frm.Value(i2) & vbcrlf & _
+               "FileName:" & frm.Value(i3) & vbcrlf & _
+               "BtnEdit:" & frm.Value(i4) & vbcrlf & _
+               "Check:" & frm.Value(i6) & vbcrlf & _
+               "Radio:" & frm.Value(i8) & vbcrlf & _
+               "LIST:" & frm.Value(i10) & vbcrlf & _
+               "FOLDER:" & frm.Value(i11) & vbcrlf
+       MsgBox mes
+
+loop while(ret = i12)
diff --git a/sample/FormSample2.vbs b/sample/FormSample2.vbs
new file mode 100644 (file)
index 0000000..d1f6197
--- /dev/null
@@ -0,0 +1,38 @@
+dim obj
+dim frm
+dim ow
+
+set obj = CreateObject("SeraphyScriptDialog")
+set frm = obj.CreateForm()
+set ow1 = obj.CreateOutputWindow()
+set ow2 = obj.CreateOutputWindow()
+
+frm.FormTitle = "\83\82\81[\83h\83\8c\83X\83_\83C\83A\83\8d\83O\82Ì\83e\83X\83g\92\86"
+frm.DefineLabel "\83J\83E\83\93\83g\82ð\8fI\97¹\82·\82é\8fê\8d\87\82Í\83L\83\83\83\93\83Z\83\8b\82ð\83N\83\8a\83b\83N"
+frm.DefineButton "CANCEL"
+
+ow1.Title   = "\83J\83E\83\93\83g\83_\83E\83\93\92\861"
+ow1.PosX = 0
+ow1.PosY = 100
+ow1.Visible = true
+ow2.Title   = "\83J\83E\83\93\83g\83_\83E\83\93\92\862"
+ow2.PosX = 300
+ow2.PosY = 100
+ow2.Visible = true
+dim ret
+dim count
+count = 10000
+
+frm.FormWidth = "500"
+frm.FormPos = "50,300"
+frm.ComposeForm
+do
+       ow1.Text = "\83J\83E\83\93\83g=" & count
+       ow2.Text = "\83J\83E\83\93\83g=" & count
+       ret = frm.WaitEvent(1)
+       if(not isnull(ret)) then
+               exit do
+       end if
+       count = count - 1
+loop while(count > 0)
+frm.DestroyForm
diff --git a/sample/GetSpecialFolderPath.wsf b/sample/GetSpecialFolderPath.wsf
new file mode 100644 (file)
index 0000000..3c1b6d4
--- /dev/null
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<job id="testGetSpecialFolderPath">
+   <runtime>
+       <usage>
+         引数は不要です。
+        SeraphyScriptDialog.GetSpecialFolderPathメソッドのテストを行います。
+       </usage>
+   </runtime>
+   <object id="dlg" progid="SeraphyScriptDialog" />
+   <reference object="SeraphyScriptDialog"/>
+   <script language="VBScript">
+   <![CDATA[
+Option Explicit
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_DESKTOP)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_INTERNET)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PROGRAMS)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_CONTROLS)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PRINTERS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PERSONAL)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_FAVORITES)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_STARTUP)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_RECENT)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_SENDTO)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_BITBUCKET)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_STARTMENU)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_MYDOCUMENTS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_MYMUSIC)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_MYVIDEO)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_DESKTOPDIRECTORY)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_DRIVES)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_NETWORK)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_NETHOOD)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_FONTS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_TEMPLATES)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_STARTMENU)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_PROGRAMS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_STARTUP)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_DESKTOPDIRECTORY)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_APPDATA)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PRINTHOOD)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_LOCAL_APPDATA)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_ALTSTARTUP)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_ALTSTARTUP)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_FAVORITES)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_INTERNET_CACHE)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COOKIES)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_HISTORY)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_APPDATA)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_WINDOWS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_SYSTEM)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PROGRAM_FILES)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_MYPICTURES)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PROFILE)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_SYSTEMX86)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PROGRAM_FILESX86)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PROGRAM_FILES_COMMON)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_PROGRAM_FILES_COMMONX86)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_TEMPLATES)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_DOCUMENTS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_ADMINTOOLS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_ADMINTOOLS)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_CONNECTIONS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_MUSIC)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_PICTURES)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_VIDEO)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_RESOURCES)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_RESOURCES_LOCALIZED)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMMON_OEM_LINKS)
+WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_CDBURN_AREA)
+'WScript.Echo dlg.GetSpecialFolderPath(FOLDERID_COMPUTERSNEARME)
+   ]]>
+   </script>
+</job>