• R/O
  • HTTP
  • SSH
  • HTTPS

SeraphyScriptDialog: コミット

SeraphyScriptDialog v2以降のソースコード管理


コミットメタ情報

リビジョン6c6de7c31df42802d5582c9aacbbab09d96039b2 (tree)
日時2015-07-08 04:49:56
作者seraphy <seraphy@sera...>
コミッターseraphy

ログメッセージ

ver2.1 フォント修正、ファイルダイアログの初期フォルダ指定修正、モードレス時のイベントハンドリング修正

変更サマリ

差分

--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,11 @@
11 /dist
2+/ipch
3+SeraphyScriptDialog.opensdf
4+SeraphyScriptDialog.sdf
5+SeraphyScriptDialog.v12.suo
6+SeraphyScriptDialog/SeraphyScriptDialog.aps
7+SeraphyScriptDialog/SeraphyScriptDialog.map
8+SeraphyScriptDialog/SeraphyScriptDialog_i.c
9+SeraphyScriptDialog/SeraphyScriptDialog_i.h
10+SeraphyScriptDialog/SeraphyScriptDialog_p.c
11+SeraphyScriptDialog/dlldata.c
--- a/SeraphyScriptDialog.sln
+++ b/SeraphyScriptDialog.sln
@@ -1,13 +1,11 @@
11 
2-Microsoft Visual Studio Solution File, Format Version 10.00
3-# Visual Studio 2008
4-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SeraphyScriptDialog", "SeraphyScriptDialog\SeraphyScriptDialog.vcproj", "{45020F5C-CD2D-429B-BF1D-4AAAB0674D56}"
2+Microsoft Visual Studio Solution File, Format Version 12.00
3+# Visual Studio 2013
4+VisualStudioVersion = 12.0.31101.0
5+MinimumVisualStudioVersion = 10.0.40219.1
6+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SeraphyScriptDialog", "SeraphyScriptDialog\SeraphyScriptDialog.vcxproj", "{45020F5C-CD2D-429B-BF1D-4AAAB0674D56}"
57 EndProject
68 Global
7- GlobalSection(SubversionScc) = preSolution
8- Svn-Managed = True
9- Manager = AnkhSVN - Subversion Support for Visual Studio
10- EndGlobalSection
119 GlobalSection(SolutionConfigurationPlatforms) = preSolution
1210 Debug|Win32 = Debug|Win32
1311 Debug|x64 = Debug|x64
@@ -27,4 +25,8 @@ Global
2725 GlobalSection(SolutionProperties) = preSolution
2826 HideSolutionNode = FALSE
2927 EndGlobalSection
28+ GlobalSection(SubversionScc) = preSolution
29+ Svn-Managed = True
30+ Manager = AnkhSVN - Subversion Support for Visual Studio
31+ EndGlobalSection
3032 EndGlobal
--- a/SeraphyScriptDialog/CommOpenFileName.cpp
+++ b/SeraphyScriptDialog/CommOpenFileName.cpp
@@ -96,9 +96,10 @@ HRESULT CommonDialogUtil::CommOpenFileName(BOOL bOpenFileMode, VARIANT defaultNa
9696 VariantInit(&tmp);
9797 HRESULT hr = VariantChangeType(&tmp, &defaultDir, VARIANT_NOUSEROVERRIDE, VT_BSTR);
9898 if (FAILED(hr)) {
99- ATLASSERT(tmp.vt == VT_BSTR);
100- strDefaultDir.Attach(tmp.bstrVal);
99+ return hr;
101100 }
101+ ATLASSERT(tmp.vt == VT_BSTR);
102+ strDefaultDir.Attach(tmp.bstrVal);
102103 }
103104
104105 TCHAR name[MAX_PATH] = {0};
@@ -118,6 +119,9 @@ HRESULT CommonDialogUtil::CommOpenFileName(BOOL bOpenFileMode, VARIANT defaultNa
118119 if (defExt.Length() > 0) {
119120 ofn.lpstrDefExt = defExt;
120121 }
122+ if (strDefaultDir.Length() > 0) {
123+ ofn.lpstrInitialDir = strDefaultDir;
124+ }
121125
122126 BOOL ret;
123127 if (bOpenFileMode) {
--- a/SeraphyScriptDialog/ControlComponent.cpp
+++ b/SeraphyScriptDialog/ControlComponent.cpp
@@ -33,7 +33,7 @@ HRESULT DummyControlComponent::HasChildId(WORD childId) throw()
3333 return S_FALSE;
3434 }
3535
36-HRESULT DummyControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
36+HRESULT DummyControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
3737 {
3838 if (!pEventId) {
3939 return E_POINTER;
@@ -210,7 +210,7 @@ HRESULT LabelControlComponent::Destroy(void) throw()
210210 return S_OK;
211211 }
212212
213-HRESULT LabelControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
213+HRESULT LabelControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
214214 {
215215 if (!pEventId) {
216216 return E_POINTER;
@@ -476,7 +476,7 @@ HRESULT MultiEditControlComponent::Compose(WORD &nChildId, HWND hParent) throw()
476476 return S_OK;
477477 }
478478
479-HRESULT MultiEditControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
479+HRESULT MultiEditControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
480480 {
481481 if (!pEventId) {
482482 return E_POINTER;
@@ -664,11 +664,8 @@ HRESULT MultiEditControlComponent::GetUIValue() throw()
664664 return S_FALSE;
665665 }
666666
667- CComBSTR newValue;
668- if (!editWnd.GetWindowText(&newValue)) {
669- // テキストを取得できないケースは、おそらくメモリ不足ぐらい?
670- return HRESULT_FROM_WIN32(GetLastError());
671- }
667+ ATL::CString newValue; // BSTRを引数にとるCWindow::GetWindowTextに空ケースでバグあり
668+ editWnd.GetWindowText(newValue);
672669
673670 m_value = newValue;
674671
@@ -745,7 +742,7 @@ HWND CommandButtonControlComponent::CreateButton(HWND hParent, LPCTSTR caption,
745742 return hWnd;
746743 }
747744
748-HRESULT CommandButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
745+HRESULT CommandButtonControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
749746 {
750747 if (!pEventId) {
751748 return E_POINTER;
@@ -753,19 +750,20 @@ HRESULT CommandButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD ch
753750
754751 ATLASSERT(HasChildId(childId) == S_OK);
755752
756- size_t mx = m_buttons.GetCount();
757- for (size_t idx = 0; idx < mx; idx++) {
758- CWindow wnd(m_buttons.GetAt(idx)->hWnd);
759- if (wnd.IsWindow()) {
760- if (wnd.GetWindowLong(GWL_ID) == childId) {
761- *pEventId = m_buttons.GetAt(idx)->eventId;
762- return S_OK;
753+ if (notifyCode == BN_CLICKED) {
754+ size_t mx = m_buttons.GetCount();
755+ for (size_t idx = 0; idx < mx; idx++) {
756+ CWindow wnd(m_buttons.GetAt(idx)->hWnd);
757+ if (wnd.IsWindow()) {
758+ if (wnd.GetWindowLong(GWL_ID) == childId) {
759+ *pEventId = m_buttons.GetAt(idx)->eventId;
760+ return S_OK;
761+ }
763762 }
764763 }
765764 }
766765
767766 *pEventId = 0;
768-
769767 return S_FALSE;
770768 }
771769
@@ -1459,7 +1457,7 @@ HRESULT ListboxControlComponent::HasChildId(WORD childId) throw()
14591457 return S_FALSE;
14601458 }
14611459
1462-HRESULT ListboxControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
1460+HRESULT ListboxControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
14631461 {
14641462 if (!pEventId) {
14651463 return E_POINTER;
@@ -1467,6 +1465,12 @@ HRESULT ListboxControlComponent::IsEventGenerated(WORD notifyCode, WORD childId,
14671465
14681466 ATLASSERT(HasChildId(childId) == S_OK);
14691467
1468+ if (!bModal && notifyCode == LBN_SELCHANGE) {
1469+ // モードレスの場合でリストボックスの選択変更がある場合
1470+ *pEventId = GetCtrlId();
1471+ return S_OK;
1472+ }
1473+
14701474 *pEventId = 0;
14711475
14721476 return S_FALSE;
@@ -1939,7 +1943,7 @@ HRESULT AbstractComboboxControlComponent::HasChildId(WORD childId) throw()
19391943 return S_FALSE;
19401944 }
19411945
1942-HRESULT AbstractComboboxControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
1946+HRESULT AbstractComboboxControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
19431947 {
19441948 if (!pEventId) {
19451949 return E_POINTER;
@@ -1947,6 +1951,12 @@ HRESULT AbstractComboboxControlComponent::IsEventGenerated(WORD notifyCode, WORD
19471951
19481952 ATLASSERT(HasChildId(childId) == S_OK);
19491953
1954+ if (!bModal && notifyCode == CBN_SELCHANGE) {
1955+ // モードレスの場合でコンボボックスの選択変更がある場合
1956+ *pEventId = GetCtrlId();
1957+ return S_OK;
1958+ }
1959+
19501960 *pEventId = 0;
19511961
19521962 return S_FALSE;
@@ -2152,12 +2162,10 @@ HRESULT ComboboxControlComponent::GetUIValue() throw()
21522162 return S_FALSE;
21532163 }
21542164
2155- CComBSTR tmp;
2156- if (!wndCombobox.GetWindowText(&tmp)) {
2157- return E_OUTOFMEMORY;
2158- }
2165+ ATL::CString newValue; // BSTRを引数にとるCWindow::GetWindowTextに空ケースでバグあり
2166+ wndCombobox.GetWindowText(newValue);
21592167
2160- m_value.Attach(tmp.Detach());
2168+ m_value = newValue;
21612169
21622170 return S_OK;
21632171 }
@@ -2718,11 +2726,8 @@ HRESULT AbstractEditButtonControlComponent::GetUIValue() throw()
27182726 return S_FALSE;
27192727 }
27202728
2721- CComBSTR newValue;
2722- if (!editWnd.GetWindowText(&newValue)) {
2723- // テキストを取得できないケースは、おそらくメモリ不足ぐらい?
2724- return HRESULT_FROM_WIN32(GetLastError());
2725- }
2729+ ATL::CString newValue; // BSTRを引数にとるCWindow::GetWindowTextに空ケースでバグあり
2730+ editWnd.GetWindowText(newValue);
27262731
27272732 m_value = newValue;
27282733
@@ -2789,7 +2794,7 @@ EditButtonControlComponent::~EditButtonControlComponent() throw()
27892794 {
27902795 }
27912796
2792-HRESULT EditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
2797+HRESULT EditButtonControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
27932798 {
27942799 if (!pEventId) {
27952800 return E_POINTER;
@@ -2797,11 +2802,13 @@ HRESULT EditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD child
27972802
27982803 ATLASSERT(HasChildId(childId) == S_OK);
27992804
2800- CWindow wndBtn(m_hButtonWnd);
2801- if (wndBtn.IsWindow()) {
2802- if (wndBtn.GetWindowLong(GWL_ID) == childId) {
2803- *pEventId = m_eventId;
2804- return S_OK;
2805+ if (notifyCode == BN_CLICKED) {
2806+ CWindow wndBtn(m_hButtonWnd);
2807+ if (wndBtn.IsWindow()) {
2808+ if (wndBtn.GetWindowLong(GWL_ID) == childId) {
2809+ *pEventId = m_eventId;
2810+ return S_OK;
2811+ }
28052812 }
28062813 }
28072814
@@ -2880,7 +2887,7 @@ HRESULT FileEditButtonControlComponent::Compose(WORD& nChildId, HWND hParent) th
28802887 return hr;
28812888 }
28822889
2883-HRESULT FileEditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
2890+HRESULT FileEditButtonControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
28842891 {
28852892 if (!pEventId) {
28862893 return E_POINTER;
@@ -2889,7 +2896,7 @@ HRESULT FileEditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD c
28892896 ATLASSERT(HasChildId(childId) == S_OK);
28902897
28912898 CWindow wndBtn(m_hButtonWnd);
2892- if (wndBtn.IsWindow()) {
2899+ if (wndBtn.IsWindow() && notifyCode == BN_CLICKED) {
28932900 if (wndBtn.GetWindowLong(GWL_ID) == childId) {
28942901
28952902 HRESULT hr;
@@ -2969,7 +2976,7 @@ HRESULT FolderEditButtonControlComponent::Compose(WORD& nChildId, HWND hParent)
29692976 return hr;
29702977 }
29712978
2972-HRESULT FolderEditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
2979+HRESULT FolderEditButtonControlComponent::IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
29732980 {
29742981 if (!pEventId) {
29752982 return E_POINTER;
@@ -2978,7 +2985,7 @@ HRESULT FolderEditButtonControlComponent::IsEventGenerated(WORD notifyCode, WORD
29782985 ATLASSERT(HasChildId(childId) == S_OK);
29792986
29802987 CWindow wndBtn(m_hButtonWnd);
2981- if (wndBtn.IsWindow()) {
2988+ if (wndBtn.IsWindow() && notifyCode == BN_CLICKED) {
29822989 if (wndBtn.GetWindowLong(GWL_ID) == childId) {
29832990
29842991 HRESULT hr;
--- a/SeraphyScriptDialog/ControlComponent.h
+++ b/SeraphyScriptDialog/ControlComponent.h
@@ -12,6 +12,11 @@
1212
1313 class ControlComponent
1414 {
15+private:
16+
17+ // コントロールID
18+ SHORT m_ctrlId;
19+
1520 protected:
1621
1722 /**
@@ -19,6 +24,7 @@ protected:
1924 * 構築されなければなりません。
2025 */
2126 ControlComponent()
27+ : m_ctrlId(-1)
2228 {
2329 }
2430
@@ -61,12 +67,13 @@ public:
6167 /**
6268 * イベントが発生する場合はイベントIDと、結果はS_OK。
6369 * イベントが発生しない場合はIDは0、結果はS_FALSEを返します。
70+ * @param bModal フォームがモーダルモードか?
6471 * @param notifyCode 通知コード
6572 * @param childId 識別子
6673 * @param pEventId イベントIDの格納先
6774 * @return HRESULT イベントが発生する場合はS_OK、しない場合はS_FALSE
6875 */
69- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw() = 0;
76+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw() = 0;
7077
7178 /**
7279 * ウィンドウが必要とする行高さを返します。
@@ -125,6 +132,22 @@ public:
125132 */
126133 virtual HRESULT put_Enable(VARIANT_BOOL enabled) throw() = 0;
127134
135+ /**
136+ * コントロールIDを取得します
137+ */
138+ virtual SHORT GetCtrlId() const throw()
139+ {
140+ return m_ctrlId;
141+ }
142+
143+ /**
144+ * コントロールIDを設定します
145+ */
146+ virtual void SetCtrlId(SHORT ctrlId) throw()
147+ {
148+ m_ctrlId = ctrlId;
149+ }
150+
128151 private:
129152 ControlComponent& operator=(const ControlComponent&); // 実装なし、コピー不可
130153 ControlComponent(const ControlComponent&); // 実装なし、コピー不可
@@ -148,7 +171,7 @@ public:
148171
149172 virtual HRESULT HasChildId(WORD childId) throw();
150173
151- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
174+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
152175
153176 virtual UINT GetLineCount() throw();
154177
@@ -207,7 +230,7 @@ public:
207230
208231 virtual HRESULT HasChildId(WORD childId) throw();
209232
210- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
233+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
211234
212235 virtual HRESULT Destroy(void) throw();
213236
@@ -270,7 +293,7 @@ public:
270293
271294 virtual HRESULT HasChildId(WORD childId) throw();
272295
273- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
296+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
274297
275298 virtual HRESULT Destroy(void) throw();
276299
@@ -333,7 +356,6 @@ protected:
333356 // 有効無効を示す
334357 VARIANT_BOOL m_enabled;
335358
336-
337359 AbstractButtonControlComponent()
338360 : ControlComponent()
339361 , m_enabled(VARIANT_TRUE)
@@ -499,14 +521,19 @@ public:
499521 return S_FALSE;
500522 }
501523
502- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw()
524+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw()
503525 {
504526 if (!pEventId) {
505527 return E_POINTER;
506528 }
507529
508- // 既定の実装は「イベントに応答しない」とする。
509- // 応答する場合は派生クラスで対応する。
530+ // 既定では、モードレスでボタングループに該当がある場合はイベントを発生させる。
531+ // モーダルの場合はイベントは発生させない。
532+ if (!bModal && HasChildId(childId) == S_OK) {
533+ *pEventId = GetCtrlId();
534+ return S_OK;
535+ }
536+
510537 *pEventId = 0;
511538 return S_FALSE;
512539 }
@@ -662,7 +689,7 @@ public:
662689
663690 static HRESULT Create(BSTR title, SHORT startEventCode, ControlComponent** ppCompo) throw();
664691
665- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
692+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
666693
667694 virtual HRESULT get_Value(BSTR *pValue) throw();
668695
@@ -840,7 +867,7 @@ public:
840867
841868 virtual HRESULT HasChildId(WORD childId) throw();
842869
843- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
870+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
844871
845872 virtual HRESULT Destroy(void) throw();
846873
@@ -930,7 +957,7 @@ public:
930957
931958 virtual HRESULT HasChildId(WORD childId) throw();
932959
933- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
960+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
934961
935962 virtual HRESULT Destroy(void) throw();
936963
@@ -1189,7 +1216,7 @@ public:
11891216
11901217 virtual ~EditButtonControlComponent() throw();
11911218
1192- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
1219+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
11931220
11941221 };
11951222
@@ -1223,7 +1250,7 @@ public:
12231250
12241251 virtual ~FileEditButtonControlComponent() throw();
12251252
1226- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
1253+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
12271254
12281255 };
12291256
@@ -1243,6 +1270,6 @@ public:
12431270
12441271 virtual ~FolderEditButtonControlComponent() throw();
12451272
1246- virtual HRESULT IsEventGenerated(WORD notifyCode, WORD childId, SHORT *pEventId) throw();
1273+ virtual HRESULT IsEventGenerated(bool bModal, WORD notifyCode, WORD childId, SHORT *pEventId) throw();
12471274
12481275 };
--- a/SeraphyScriptDialog/ScrDlgRoot.cpp
+++ b/SeraphyScriptDialog/ScrDlgRoot.cpp
@@ -3,6 +3,8 @@
33 #include "stdafx.h"
44 #include "ScrDlgRoot.h"
55
6+#include <VersionHelpers.h>
7+
68 #include <vector>
79 #include <math.h>
810
@@ -13,6 +15,7 @@
1315 #include "ArrayUtil.h"
1416 #include "CommOpenFileName.h"
1517
18+
1619 // CScrDlgRoot
1720
1821 HRESULT CScrDlgRoot::FinalConstruct()
@@ -176,7 +179,7 @@ STDMETHODIMP CScrDlgRoot::About(DOUBLE* pVersion)
176179 TCHAR bitsiz[16];
177180 _stprintf_s(bitsiz, 16, _T("%d"), sizeof(void*) * 8); // ポインタの大きさで32/64ビットコンパイルを判定
178181
179- const DWORD messz = static_cast<DWORD>(fmt.Length() + _tcslen(strVersion) + _tcslen(bitsiz) + 1);
182+ const DWORD messz = static_cast<DWORD>(fmt.ByteLength() + _tcslen(strVersion) + _tcslen(bitsiz) + 1);
180183 std::vector<TCHAR> mes(messz); // フォーマット後の文字列を格納するバッファ
181184
182185 if (!FormatMessage(&mes[0], messz, fmt, strVersion, bitsiz)) {
@@ -596,10 +599,7 @@ STDMETHODIMP CScrDlgRoot::ExitWindows(SHORT mode, VARIANT_BOOL *pRetcode)
596599
597600 case 2:
598601 {
599- DWORD dwVersion = GetVersion();
600- DWORD dwMajorVersion = static_cast<DWORD>(LOBYTE(LOWORD(dwVersion)));
601-
602- if (dwMajorVersion >= 6) {
602+ if (IsWindowsVistaOrGreater()) {
603603 // Vista以降 (ver2で追加)
604604 #ifndef EWX_RESTARTAPPS
605605 #define EWX_RESTARTAPPS 0x00000040
--- a/SeraphyScriptDialog/ScrDlgRoot.rgs
+++ b/SeraphyScriptDialog/ScrDlgRoot.rgs
@@ -1,27 +1,27 @@
11 HKCR
22 {
3- SeraphyScriptDialog.2 = s 'SeraphyScriptDialog Class'
3+ SeraphyScriptDialog.2.1 = s 'SeraphyScriptDialog Class'
44 {
5- CLSID = s '{4019FCE4-1A3B-4BFF-BF84-C036195842EF}'
5+ CLSID = s '{B7073E21-D520-470D-B53D-A36DA9D8DF0D}'
66 }
77 SeraphyScriptDialog = s 'SeraphyScriptDialog Class'
88 {
9- CLSID = s '{4019FCE4-1A3B-4BFF-BF84-C036195842EF}'
10- CurVer = s 'SeraphyScriptDialog.2'
9+ CLSID = s '{B7073E21-D520-470D-B53D-A36DA9D8DF0D}'
10+ CurVer = s 'SeraphyScriptDialog.2.1'
1111 }
1212 NoRemove CLSID
1313 {
14- ForceRemove {4019FCE4-1A3B-4BFF-BF84-C036195842EF} = s 'SeraphyScriptDialog Class'
14+ ForceRemove {B7073E21-D520-470D-B53D-A36DA9D8DF0D} = s 'SeraphyScriptDialog Class'
1515 {
16- ProgID = s 'SeraphyScriptDialog.2'
16+ ProgID = s 'SeraphyScriptDialog.2.1'
1717 VersionIndependentProgID = s 'SeraphyScriptDialog'
1818 ForceRemove 'Programmable'
1919 InprocServer32 = s '%MODULE%'
2020 {
2121 val ThreadingModel = s 'Apartment'
2222 }
23- Version = s '2.0'
24- 'TypeLib' = s '{8C5ED098-A33E-4B09-8E44-638CCF6307A8}'
23+ Version = s '2.1'
24+ 'TypeLib' = s '{F7875AF7-6FF0-4C54-93CA-7E897A3B4AD4}'
2525 }
2626 }
2727 }
--- a/SeraphyScriptDialog/SeraphyScriptDialog.idl
+++ b/SeraphyScriptDialog/SeraphyScriptDialog.idl
@@ -521,15 +521,17 @@ interface IMessageLoopImpl : IUnknown
521521 };
522522
523523 [
524- uuid(8C5ED098-A33E-4B09-8E44-638CCF6307A8),
525- version(2.0),
526- helpstring("SeraphyScriptDialog 2.0 タイプ ライブラリ")
524+ //uuid(8C5ED098-A33E-4B09-8E44-638CCF6307A8), // v2.0
525+ uuid(F7875AF7-6FF0-4C54-93CA-7E897A3B4AD4), // v2.1
526+ version(2.1),
527+ helpstring("SeraphyScriptDialog 2.1 タイプ ライブラリ")
527528 ]
528529 library SeraphyScriptDialog
529530 {
530531 importlib("stdole2.tlb");
531532 [
532- uuid(4019FCE4-1A3B-4BFF-BF84-C036195842EF),
533+ //uuid(4019FCE4-1A3B-4BFF-BF84-C036195842EF), // v2.0
534+ uuid(B7073E21-D520-470D-B53D-A36DA9D8DF0D), // v2.1
533535 helpstring("SeraphyScriptDialogRoot Class")
534536 ]
535537 coclass SeraphyScriptDialogRoot
--- a/SeraphyScriptDialog/SeraphyScriptDialog.rc
+++ b/SeraphyScriptDialog/SeraphyScriptDialog.rc
@@ -15,13 +15,99 @@
1515 #undef APSTUDIO_READONLY_SYMBOLS
1616
1717 /////////////////////////////////////////////////////////////////////////////
18-// 日本語 resources
18+// ニュートラル (既定) resources
19+
20+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEUD)
21+LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT
22+#pragma code_page(932)
23+
24+/////////////////////////////////////////////////////////////////////////////
25+//
26+// Dialog
27+//
28+
29+IDD_USERFORM DIALOGEX 0, 0, 207, 36
30+STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
31+CAPTION "User Dialog"
32+FONT 11, "MS Shell Dlg", 400, 0, 0x80
33+BEGIN
34+ LTEXT "Static",IDC_DUMMY,0,0,207,12,SS_SUNKEN | NOT WS_VISIBLE
35+END
36+
37+IDD_OUTPUTWINDOW DIALOGEX 0, 0, 150, 70
38+STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_THICKFRAME
39+CAPTION "Output Window"
40+FONT 9, "MS Shell Dlg", 400, 0, 0x80
41+BEGIN
42+ EDITTEXT IDC_EDIT1,0,0,150,70,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
43+END
44+
45+
46+/////////////////////////////////////////////////////////////////////////////
47+//
48+// DESIGNINFO
49+//
50+
51+#ifdef APSTUDIO_INVOKED
52+GUIDELINES DESIGNINFO
53+BEGIN
54+ IDD_USERFORM, DIALOG
55+ BEGIN
56+ RIGHTMARGIN, 205
57+ BOTTOMMARGIN, 33
58+ END
59+
60+ IDD_OUTPUTWINDOW, DIALOG
61+ BEGIN
62+ END
63+END
64+#endif // APSTUDIO_INVOKED
65+
66+
67+/////////////////////////////////////////////////////////////////////////////
68+//
69+// String Table
70+//
71+
72+STRINGTABLE
73+BEGIN
74+ IDS_PROJNAME "SeraphyScriptDialog"
75+ IDS_ABOUTMESSAGE "SeraphyScriptDialog COM Object (ATL)\nVersion %1 (%2bit build)\nCopyright 2000/2 - 2009/12 - 2015/7 seraphyware (seraphy@users.osdn.jp)\n\nLicensed under the Apache License, Version 2.0 (the ""License"");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an ""AS IS"" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and limitations under the License.\n"
76+END
77+
78+STRINGTABLE
79+BEGIN
80+ IDS_PROFILESECTIONNAME "SeraphyScriptDialogData"
81+ IDS_DEFAULT_PREFERENCENAME "preference.ini"
82+ IDS_USERFORM_TITLE "User Dialog"
83+END
84+
85+STRINGTABLE
86+BEGIN
87+ IDS_FILTER_ALLFILES "All Files(*.*)|*.*"
88+ IDS_FILEEDITBTN_DEFAULTCAPTION "&Open"
89+ IDS_FOLDEREDITBTN_DEFAULTCAPTION "&Browse..."
90+END
91+
92+STRINGTABLE
93+BEGIN
94+ IDS_MESSAGEBOXDEFAULTTITLE "Error"
95+ IDS_NO_SHUTDOWN_PRIVILEGE "No privileges to shutdown."
96+ IDS_UNSUPPORTED_SEPARATE_CHAR "Unsupported characters."
97+ IDS_FORM_ALWAYS_COMPOSED "The form is already composed."
98+ IDS_FORM_NOT_COMPOSED "The form is not composed."
99+END
100+
101+#endif // ニュートラル (既定) resources
102+/////////////////////////////////////////////////////////////////////////////
103+
104+
105+/////////////////////////////////////////////////////////////////////////////
106+// 日本語 (日本) resources
19107
20108 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
21-#ifdef _WIN32
22109 LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
23110 #pragma code_page(932)
24-#endif //_WIN32
25111
26112 #ifdef APSTUDIO_INVOKED
27113 /////////////////////////////////////////////////////////////////////////////
@@ -56,8 +142,8 @@ END
56142 //
57143
58144 VS_VERSION_INFO VERSIONINFO
59- FILEVERSION 2,0,0,1
60- PRODUCTVERSION 2,0,0,1
145+ FILEVERSION 2,1,0,2
146+ PRODUCTVERSION 2,1,0,2
61147 FILEFLAGSMASK 0x3fL
62148 #ifdef _DEBUG
63149 FILEFLAGS 0x1L
@@ -72,15 +158,15 @@ BEGIN
72158 BEGIN
73159 BLOCK "041103a4"
74160 BEGIN
75- VALUE "Comments", "SeraphyScriptDialog2(ATL) 2009/10"
161+ VALUE "Comments", "SeraphyScriptDialog2(ATL) 2015/7"
76162 VALUE "CompanyName", "seraphyware"
77- VALUE "FileDescription", "SeraphyScriptDialog2"
78- VALUE "FileVersion", "2.0.0.1"
163+ VALUE "FileDescription", "SeraphyScriptDialog2.1"
164+ VALUE "FileVersion", "2.1.0.2"
79165 VALUE "InternalName", "SeraphyScriptDialog.dll"
80166 VALUE "LegalCopyright", "Copyright seraphyware. All rights reserved."
81167 VALUE "OriginalFilename", "SeraphyScriptDialog.dll"
82168 VALUE "ProductName", "SeraphyScriptDialog"
83- VALUE "ProductVersion", "2.0.0.1"
169+ VALUE "ProductVersion", "2.1.0.2"
84170 END
85171 END
86172 BLOCK "VarFileInfo"
@@ -127,8 +213,12 @@ END
127213 //
128214
129215 #ifdef APSTUDIO_INVOKED
130-GUIDELINES DESIGNINFO
216+GUIDELINES DESIGNINFO
131217 BEGIN
218+ IDD_OUTPUTWINDOW, DIALOG
219+ BEGIN
220+ END
221+
132222 IDD_USERFORM, DIALOG
133223 BEGIN
134224 RIGHTMARGIN, 205
@@ -143,27 +233,27 @@ END
143233 // String Table
144234 //
145235
146-STRINGTABLE
236+STRINGTABLE
147237 BEGIN
148238 IDS_PROJNAME "SeraphyScriptDialog"
149- IDS_ABOUTMESSAGE "SeraphyScriptDialog COM Object (ATL)\nVersion %1 (%2bit build)\nCopyright 2000/2 - 2009/12 seraphyware\n使用許諾条件を必ずご確認ください。"
239+ IDS_ABOUTMESSAGE "SeraphyScriptDialog COM Object (ATL)\nVersion %1 (%2bit build)\nCopyright 2000/2 - 2009/12 - 2015/7 seraphyware (seraphy@users.osdn.jp)\n本ソフトウェアはApache License, Version2でライセンスされます。\n使用許諾条件を必ずご確認ください。\n\nLicensed under the Apache License, Version 2.0 (the ""License"");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an ""AS IS"" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and limitations under the License.\n"
150240 END
151241
152-STRINGTABLE
242+STRINGTABLE
153243 BEGIN
154244 IDS_PROFILESECTIONNAME "SeraphyScriptDialogData"
155245 IDS_DEFAULT_PREFERENCENAME "preference.ini"
156246 IDS_USERFORM_TITLE "ユーザーダイアログ"
157247 END
158248
159-STRINGTABLE
249+STRINGTABLE
160250 BEGIN
161251 IDS_FILTER_ALLFILES "全てのファイル(*.*)|*.*"
162252 IDS_FILEEDITBTN_DEFAULTCAPTION "&Open"
163253 IDS_FOLDEREDITBTN_DEFAULTCAPTION "参照(&B)..."
164254 END
165255
166-STRINGTABLE
256+STRINGTABLE
167257 BEGIN
168258 IDS_MESSAGEBOXDEFAULTTITLE "エラー"
169259 IDS_NO_SHUTDOWN_PRIVILEGE "シャットダウンに必要な特権を行使できません。"
@@ -172,7 +262,7 @@ BEGIN
172262 IDS_FORM_NOT_COMPOSED "フォームが構築されていません。"
173263 END
174264
175-#endif // 日本語 resources
265+#endif // 日本語 (日本) resources
176266 /////////////////////////////////////////////////////////////////////////////
177267
178268
--- /dev/null
+++ b/SeraphyScriptDialog/SeraphyScriptDialog.vcxproj
@@ -0,0 +1,346 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+ <ItemGroup Label="ProjectConfigurations">
4+ <ProjectConfiguration Include="Debug|Win32">
5+ <Configuration>Debug</Configuration>
6+ <Platform>Win32</Platform>
7+ </ProjectConfiguration>
8+ <ProjectConfiguration Include="Debug|x64">
9+ <Configuration>Debug</Configuration>
10+ <Platform>x64</Platform>
11+ </ProjectConfiguration>
12+ <ProjectConfiguration Include="Release|Win32">
13+ <Configuration>Release</Configuration>
14+ <Platform>Win32</Platform>
15+ </ProjectConfiguration>
16+ <ProjectConfiguration Include="Release|x64">
17+ <Configuration>Release</Configuration>
18+ <Platform>x64</Platform>
19+ </ProjectConfiguration>
20+ </ItemGroup>
21+ <PropertyGroup Label="Globals">
22+ <ProjectGuid>{45020F5C-CD2D-429B-BF1D-4AAAB0674D56}</ProjectGuid>
23+ <RootNamespace>SeraphyScriptDialog</RootNamespace>
24+ <Keyword>AtlProj</Keyword>
25+ </PropertyGroup>
26+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
27+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
28+ <ConfigurationType>DynamicLibrary</ConfigurationType>
29+ <PlatformToolset>v120</PlatformToolset>
30+ <UseOfAtl>Static</UseOfAtl>
31+ <CharacterSet>Unicode</CharacterSet>
32+ </PropertyGroup>
33+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
34+ <ConfigurationType>DynamicLibrary</ConfigurationType>
35+ <PlatformToolset>v120</PlatformToolset>
36+ <UseOfAtl>Static</UseOfAtl>
37+ <CharacterSet>Unicode</CharacterSet>
38+ </PropertyGroup>
39+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
40+ <ConfigurationType>DynamicLibrary</ConfigurationType>
41+ <PlatformToolset>v120</PlatformToolset>
42+ <UseOfAtl>Static</UseOfAtl>
43+ <CharacterSet>Unicode</CharacterSet>
44+ </PropertyGroup>
45+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
46+ <ConfigurationType>DynamicLibrary</ConfigurationType>
47+ <PlatformToolset>v120</PlatformToolset>
48+ <UseOfAtl>Static</UseOfAtl>
49+ <CharacterSet>Unicode</CharacterSet>
50+ </PropertyGroup>
51+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
52+ <ImportGroup Label="ExtensionSettings">
53+ </ImportGroup>
54+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
55+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
56+ </ImportGroup>
57+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
58+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
59+ </ImportGroup>
60+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
61+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62+ </ImportGroup>
63+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
64+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65+ </ImportGroup>
66+ <PropertyGroup Label="UserMacros" />
67+ <PropertyGroup>
68+ <_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
69+ </PropertyGroup>
70+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
71+ <OutDir>$(Platform)\$(Configuration)\</OutDir>
72+ <IntDir>$(Platform)\$(Configuration)\</IntDir>
73+ <IgnoreImportLibrary>true</IgnoreImportLibrary>
74+ <LinkIncremental>true</LinkIncremental>
75+ </PropertyGroup>
76+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
77+ <OutDir>$(Platform)\$(Configuration)\</OutDir>
78+ <IntDir>$(Platform)\$(Configuration)\</IntDir>
79+ <IgnoreImportLibrary>true</IgnoreImportLibrary>
80+ <LinkIncremental>true</LinkIncremental>
81+ </PropertyGroup>
82+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
83+ <OutDir>$(Platform)\$(Configuration)\</OutDir>
84+ <IntDir>$(Platform)\$(Configuration)\</IntDir>
85+ <IgnoreImportLibrary>true</IgnoreImportLibrary>
86+ <LinkIncremental>false</LinkIncremental>
87+ </PropertyGroup>
88+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
89+ <OutDir>$(Platform)\$(Configuration)\</OutDir>
90+ <IntDir>$(Platform)\$(Configuration)\</IntDir>
91+ <IgnoreImportLibrary>true</IgnoreImportLibrary>
92+ <LinkIncremental>false</LinkIncremental>
93+ </PropertyGroup>
94+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
95+ <Midl>
96+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
97+ <MkTypLibCompatible>false</MkTypLibCompatible>
98+ <TargetEnvironment>Win32</TargetEnvironment>
99+ <GenerateStublessProxies>true</GenerateStublessProxies>
100+ <TypeLibraryName>$(IntDir)SeraphyScriptDialog.tlb</TypeLibraryName>
101+ <HeaderFileName>SeraphyScriptDialog_i.h</HeaderFileName>
102+ <DllDataFileName />
103+ <InterfaceIdentifierFileName>SeraphyScriptDialog_i.c</InterfaceIdentifierFileName>
104+ <ProxyFileName>SeraphyScriptDialog_p.c</ProxyFileName>
105+ <ValidateAllParameters>true</ValidateAllParameters>
106+ </Midl>
107+ <ClCompile>
108+ <Optimization>Disabled</Optimization>
109+ <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
110+ <MinimalRebuild>true</MinimalRebuild>
111+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
112+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
113+ <PrecompiledHeader>Use</PrecompiledHeader>
114+ <WarningLevel>Level3</WarningLevel>
115+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
116+ </ClCompile>
117+ <ResourceCompile>
118+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
119+ <Culture>0x0411</Culture>
120+ <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
121+ </ResourceCompile>
122+ <Link>
123+ <RegisterOutput>true</RegisterOutput>
124+ <AdditionalDependencies>Version.lib;ComCtl32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
125+ <ModuleDefinitionFile>.\SeraphyScriptDialog.def</ModuleDefinitionFile>
126+ <GenerateDebugInformation>true</GenerateDebugInformation>
127+ <GenerateMapFile>true</GenerateMapFile>
128+ <MapFileName>$(TargetName).map</MapFileName>
129+ <MapExports>true</MapExports>
130+ <SubSystem>Windows</SubSystem>
131+ <TargetMachine>MachineX86</TargetMachine>
132+ </Link>
133+ </ItemDefinitionGroup>
134+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
135+ <Midl>
136+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
137+ <MkTypLibCompatible>false</MkTypLibCompatible>
138+ <TargetEnvironment>X64</TargetEnvironment>
139+ <GenerateStublessProxies>true</GenerateStublessProxies>
140+ <TypeLibraryName>$(IntDir)SeraphyScriptDialog.tlb</TypeLibraryName>
141+ <HeaderFileName>SeraphyScriptDialog_i.h</HeaderFileName>
142+ <DllDataFileName />
143+ <InterfaceIdentifierFileName>SeraphyScriptDialog_i.c</InterfaceIdentifierFileName>
144+ <ProxyFileName>SeraphyScriptDialog_p.c</ProxyFileName>
145+ </Midl>
146+ <ClCompile>
147+ <Optimization>Disabled</Optimization>
148+ <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
149+ <MinimalRebuild>true</MinimalRebuild>
150+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
151+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
152+ <PrecompiledHeader>Use</PrecompiledHeader>
153+ <WarningLevel>Level3</WarningLevel>
154+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
155+ </ClCompile>
156+ <ResourceCompile>
157+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
158+ <Culture>0x0411</Culture>
159+ <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
160+ </ResourceCompile>
161+ <Link>
162+ <RegisterOutput>true</RegisterOutput>
163+ <AdditionalDependencies>Version.lib;ComCtl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
164+ <OutputFile>$(OutDir)$(ProjectName)X64.dll</OutputFile>
165+ <ModuleDefinitionFile>.\SeraphyScriptDialog.def</ModuleDefinitionFile>
166+ <GenerateDebugInformation>true</GenerateDebugInformation>
167+ <GenerateMapFile>true</GenerateMapFile>
168+ <MapFileName>SeraphyScriptDialog.map</MapFileName>
169+ <MapExports>true</MapExports>
170+ <SubSystem>Windows</SubSystem>
171+ <TargetMachine>MachineX64</TargetMachine>
172+ </Link>
173+ </ItemDefinitionGroup>
174+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
175+ <Midl>
176+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
177+ <MkTypLibCompatible>false</MkTypLibCompatible>
178+ <TargetEnvironment>Win32</TargetEnvironment>
179+ <GenerateStublessProxies>true</GenerateStublessProxies>
180+ <TypeLibraryName>$(IntDir)SeraphyScriptDialog.tlb</TypeLibraryName>
181+ <HeaderFileName>SeraphyScriptDialog_i.h</HeaderFileName>
182+ <DllDataFileName />
183+ <InterfaceIdentifierFileName>SeraphyScriptDialog_i.c</InterfaceIdentifierFileName>
184+ <ProxyFileName>SeraphyScriptDialog_p.c</ProxyFileName>
185+ <ValidateAllParameters>true</ValidateAllParameters>
186+ </Midl>
187+ <ClCompile>
188+ <Optimization>Disabled</Optimization>
189+ <IntrinsicFunctions>true</IntrinsicFunctions>
190+ <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
191+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
192+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
193+ <PrecompiledHeader>Use</PrecompiledHeader>
194+ <WarningLevel>Level3</WarningLevel>
195+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
196+ </ClCompile>
197+ <ResourceCompile>
198+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
199+ <Culture>0x0411</Culture>
200+ <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
201+ </ResourceCompile>
202+ <Link>
203+ <RegisterOutput>true</RegisterOutput>
204+ <AdditionalDependencies>Version.lib;ComCtl32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
205+ <ModuleDefinitionFile>.\SeraphyScriptDialog.def</ModuleDefinitionFile>
206+ <GenerateDebugInformation>true</GenerateDebugInformation>
207+ <GenerateMapFile>true</GenerateMapFile>
208+ <MapFileName>$(TargetName).map</MapFileName>
209+ <MapExports>true</MapExports>
210+ <SubSystem>Windows</SubSystem>
211+ <OptimizeReferences>true</OptimizeReferences>
212+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
213+ <TargetMachine>MachineX86</TargetMachine>
214+ </Link>
215+ </ItemDefinitionGroup>
216+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
217+ <Midl>
218+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
219+ <MkTypLibCompatible>false</MkTypLibCompatible>
220+ <TargetEnvironment>X64</TargetEnvironment>
221+ <GenerateStublessProxies>true</GenerateStublessProxies>
222+ <TypeLibraryName>$(IntDir)SeraphyScriptDialog.tlb</TypeLibraryName>
223+ <HeaderFileName>SeraphyScriptDialog_i.h</HeaderFileName>
224+ <DllDataFileName />
225+ <InterfaceIdentifierFileName>SeraphyScriptDialog_i.c</InterfaceIdentifierFileName>
226+ <ProxyFileName>SeraphyScriptDialog_p.c</ProxyFileName>
227+ </Midl>
228+ <ClCompile>
229+ <Optimization>Disabled</Optimization>
230+ <IntrinsicFunctions>true</IntrinsicFunctions>
231+ <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
232+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
233+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
234+ <PrecompiledHeader>Use</PrecompiledHeader>
235+ <WarningLevel>Level3</WarningLevel>
236+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
237+ </ClCompile>
238+ <ResourceCompile>
239+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
240+ <Culture>0x0411</Culture>
241+ <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
242+ </ResourceCompile>
243+ <Link>
244+ <RegisterOutput>true</RegisterOutput>
245+ <AdditionalDependencies>Version.lib;ComCtl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
246+ <OutputFile>$(OutDir)$(ProjectName)x64.dll</OutputFile>
247+ <ModuleDefinitionFile>.\SeraphyScriptDialog.def</ModuleDefinitionFile>
248+ <GenerateDebugInformation>true</GenerateDebugInformation>
249+ <SubSystem>Windows</SubSystem>
250+ <OptimizeReferences>true</OptimizeReferences>
251+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
252+ <TargetMachine>MachineX64</TargetMachine>
253+ </Link>
254+ </ItemDefinitionGroup>
255+ <ItemGroup>
256+ <ClCompile Include="ArrayUtil.cpp" />
257+ <ClCompile Include="CommOpenFileName.cpp" />
258+ <ClCompile Include="ControlComponent.cpp" />
259+ <ClCompile Include="dlldatax.c">
260+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
261+ </PrecompiledHeader>
262+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
263+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
264+ </PrecompiledHeader>
265+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
266+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
267+ </PrecompiledHeader>
268+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
269+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
270+ </PrecompiledHeader>
271+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
272+ </ClCompile>
273+ <ClCompile Include="dllmain.cpp">
274+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
275+ </PrecompiledHeader>
276+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
277+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
278+ </PrecompiledHeader>
279+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
280+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
281+ </PrecompiledHeader>
282+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
283+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
284+ </PrecompiledHeader>
285+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
286+ </ClCompile>
287+ <ClCompile Include="OutputWindow.cpp" />
288+ <ClCompile Include="ScrDlgRoot.cpp" />
289+ <ClCompile Include="SeraphyScriptDialog.cpp" />
290+ <ClCompile Include="SeraphyScriptDialog_i.c">
291+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
292+ </PrecompiledHeader>
293+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
294+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
295+ </PrecompiledHeader>
296+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
297+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
298+ </PrecompiledHeader>
299+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
300+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
301+ </PrecompiledHeader>
302+ <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
303+ </ClCompile>
304+ <ClCompile Include="stdafx.cpp">
305+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
306+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
307+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
308+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
309+ </ClCompile>
310+ <ClCompile Include="UserForm.cpp" />
311+ <ClCompile Include="VarArray.cpp" />
312+ </ItemGroup>
313+ <ItemGroup>
314+ <None Include="ScrDlgRoot.rgs" />
315+ <None Include="SeraphyScriptDialog.def" />
316+ <None Include="SeraphyScriptDialog.rgs" />
317+ <None Include="VarArray.rgs" />
318+ </ItemGroup>
319+ <ItemGroup>
320+ <Midl Include="SeraphyScriptDialog.idl" />
321+ </ItemGroup>
322+ <ItemGroup>
323+ <ClInclude Include="ArrayUtil.h" />
324+ <ClInclude Include="CommOpenFileName.h" />
325+ <ClInclude Include="ControlComponent.h" />
326+ <ClInclude Include="dlldatax.h" />
327+ <ClInclude Include="dllmain.h" />
328+ <ClInclude Include="OutputWindow.h" />
329+ <ClInclude Include="Resource.h" />
330+ <ClInclude Include="ScrDlgRoot.h" />
331+ <ClInclude Include="SeraphyScriptDialog_i.h" />
332+ <ClInclude Include="stdafx.h" />
333+ <ClInclude Include="targetver.h" />
334+ <ClInclude Include="UserForm.h" />
335+ <ClInclude Include="VarArray.h" />
336+ </ItemGroup>
337+ <ItemGroup>
338+ <ResourceCompile Include="SeraphyScriptDialog.rc" />
339+ </ItemGroup>
340+ <ItemGroup>
341+ <Text Include="ReadMe.txt" />
342+ </ItemGroup>
343+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
344+ <ImportGroup Label="ExtensionTargets">
345+ </ImportGroup>
346+</Project>
\ No newline at end of file
--- /dev/null
+++ b/SeraphyScriptDialog/SeraphyScriptDialog.vcxproj.filters
@@ -0,0 +1,127 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+ <ItemGroup>
4+ <Filter Include="ソース ファイル">
5+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7+ </Filter>
8+ <Filter Include="ヘッダー ファイル">
9+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
11+ </Filter>
12+ <Filter Include="リソース ファイル">
13+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
15+ </Filter>
16+ <Filter Include="生成されたファイル">
17+ <UniqueIdentifier>{2c41e8a5-e9fe-43c8-b72d-73cc645b9483}</UniqueIdentifier>
18+ <SourceControlFiles>False</SourceControlFiles>
19+ </Filter>
20+ </ItemGroup>
21+ <ItemGroup>
22+ <ClCompile Include="ArrayUtil.cpp">
23+ <Filter>ソース ファイル</Filter>
24+ </ClCompile>
25+ <ClCompile Include="CommOpenFileName.cpp">
26+ <Filter>ソース ファイル</Filter>
27+ </ClCompile>
28+ <ClCompile Include="ControlComponent.cpp">
29+ <Filter>ソース ファイル</Filter>
30+ </ClCompile>
31+ <ClCompile Include="dlldatax.c">
32+ <Filter>ソース ファイル</Filter>
33+ </ClCompile>
34+ <ClCompile Include="dllmain.cpp">
35+ <Filter>ソース ファイル</Filter>
36+ </ClCompile>
37+ <ClCompile Include="OutputWindow.cpp">
38+ <Filter>ソース ファイル</Filter>
39+ </ClCompile>
40+ <ClCompile Include="ScrDlgRoot.cpp">
41+ <Filter>ソース ファイル</Filter>
42+ </ClCompile>
43+ <ClCompile Include="SeraphyScriptDialog.cpp">
44+ <Filter>ソース ファイル</Filter>
45+ </ClCompile>
46+ <ClCompile Include="stdafx.cpp">
47+ <Filter>ソース ファイル</Filter>
48+ </ClCompile>
49+ <ClCompile Include="UserForm.cpp">
50+ <Filter>ソース ファイル</Filter>
51+ </ClCompile>
52+ <ClCompile Include="VarArray.cpp">
53+ <Filter>ソース ファイル</Filter>
54+ </ClCompile>
55+ <ClCompile Include="SeraphyScriptDialog_i.c">
56+ <Filter>生成されたファイル</Filter>
57+ </ClCompile>
58+ </ItemGroup>
59+ <ItemGroup>
60+ <None Include="SeraphyScriptDialog.def">
61+ <Filter>ソース ファイル</Filter>
62+ </None>
63+ <None Include="ScrDlgRoot.rgs">
64+ <Filter>リソース ファイル</Filter>
65+ </None>
66+ <None Include="SeraphyScriptDialog.rgs">
67+ <Filter>リソース ファイル</Filter>
68+ </None>
69+ <None Include="VarArray.rgs">
70+ <Filter>リソース ファイル</Filter>
71+ </None>
72+ </ItemGroup>
73+ <ItemGroup>
74+ <Midl Include="SeraphyScriptDialog.idl">
75+ <Filter>ソース ファイル</Filter>
76+ </Midl>
77+ </ItemGroup>
78+ <ItemGroup>
79+ <ClInclude Include="ArrayUtil.h">
80+ <Filter>ヘッダー ファイル</Filter>
81+ </ClInclude>
82+ <ClInclude Include="CommOpenFileName.h">
83+ <Filter>ヘッダー ファイル</Filter>
84+ </ClInclude>
85+ <ClInclude Include="ControlComponent.h">
86+ <Filter>ヘッダー ファイル</Filter>
87+ </ClInclude>
88+ <ClInclude Include="dlldatax.h">
89+ <Filter>ヘッダー ファイル</Filter>
90+ </ClInclude>
91+ <ClInclude Include="dllmain.h">
92+ <Filter>ヘッダー ファイル</Filter>
93+ </ClInclude>
94+ <ClInclude Include="OutputWindow.h">
95+ <Filter>ヘッダー ファイル</Filter>
96+ </ClInclude>
97+ <ClInclude Include="Resource.h">
98+ <Filter>ヘッダー ファイル</Filter>
99+ </ClInclude>
100+ <ClInclude Include="ScrDlgRoot.h">
101+ <Filter>ヘッダー ファイル</Filter>
102+ </ClInclude>
103+ <ClInclude Include="stdafx.h">
104+ <Filter>ヘッダー ファイル</Filter>
105+ </ClInclude>
106+ <ClInclude Include="targetver.h">
107+ <Filter>ヘッダー ファイル</Filter>
108+ </ClInclude>
109+ <ClInclude Include="UserForm.h">
110+ <Filter>ヘッダー ファイル</Filter>
111+ </ClInclude>
112+ <ClInclude Include="VarArray.h">
113+ <Filter>ヘッダー ファイル</Filter>
114+ </ClInclude>
115+ <ClInclude Include="SeraphyScriptDialog_i.h">
116+ <Filter>生成されたファイル</Filter>
117+ </ClInclude>
118+ </ItemGroup>
119+ <ItemGroup>
120+ <ResourceCompile Include="SeraphyScriptDialog.rc">
121+ <Filter>リソース ファイル</Filter>
122+ </ResourceCompile>
123+ </ItemGroup>
124+ <ItemGroup>
125+ <Text Include="ReadMe.txt" />
126+ </ItemGroup>
127+</Project>
\ No newline at end of file
--- a/SeraphyScriptDialog/UserForm.cpp
+++ b/SeraphyScriptDialog/UserForm.cpp
@@ -42,6 +42,9 @@ HRESULT CUserForm::FinalConstruct()
4242 m_formPosX = m_formPosY = 0;
4343 m_formPosDefined = false;
4444
45+ // モーダル状態の初期化
46+ m_bModal = false;
47+
4548 return S_OK;
4649 }
4750
@@ -290,6 +293,9 @@ STDMETHODIMP CUserForm::ExecuteForm(VARIANT reserve, SHORT *pEventCode)
290293 // 親ウィンドウがあればディセーブルにする。
291294 ParentDisabler parentDisabler(::GetParent(m_hWnd));
292295
296+ // モーダルモードであることを示す
297+ m_bModal = true;
298+
293299 // メッセージループ
294300 SHORT eventCode = -1;
295301 for (;;) {
@@ -343,9 +349,9 @@ STDMETHODIMP CUserForm::DefineLabel(BSTR text, SHORT *pCtlId)
343349 return hr;
344350 }
345351
346- size_t ctlId = m_components.Add(pLabel);
347-
348- *pCtlId = static_cast<SHORT>(ctlId);
352+ pLabel->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
353+ *pCtlId = pLabel->GetCtrlId();
354+ m_components.Add(pLabel);
349355
350356 return S_OK;
351357 }
@@ -367,9 +373,9 @@ STDMETHODIMP CUserForm::DefineEdit(VARIANT title, VARIANT initValue, VARIANT mul
367373 return hr;
368374 }
369375
370- size_t ctlId = m_components.Add(pEdit);
371-
372- *pCtlId = static_cast<SHORT>(ctlId);
376+ pEdit->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
377+ *pCtlId = pEdit->GetCtrlId();
378+ m_components.Add(pEdit);
373379
374380 return S_OK;
375381 }
@@ -402,9 +408,9 @@ STDMETHODIMP CUserForm::DefineButton(BSTR title, VARIANT eventCode, SHORT *pCtlI
402408 return hr;
403409 }
404410
405- size_t ctlId = m_components.Add(pButton);
406-
407- *pCtlId = static_cast<SHORT>(ctlId);
411+ pButton->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
412+ *pCtlId = pButton->GetCtrlId();
413+ m_components.Add(pButton);
408414
409415 return S_OK;
410416 }
@@ -437,9 +443,9 @@ STDMETHODIMP CUserForm::DefineEditButton(VARIANT title, VARIANT initValue, VARIA
437443 return hr;
438444 }
439445
440- size_t ctlId = m_components.Add(pEditButton);
441-
442- *pCtlId = static_cast<SHORT>(ctlId);
446+ pEditButton->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
447+ *pCtlId = pEditButton->GetCtrlId();
448+ m_components.Add(pEditButton);
443449
444450 return S_OK;
445451 }
@@ -473,9 +479,9 @@ STDMETHODIMP CUserForm::DefineFileEdit(VARIANT title, VARIANT initValue, VARIANT
473479 return hr;
474480 }
475481
476- size_t ctlId = m_components.Add(pFileEditButton);
477-
478- *pCtlId = static_cast<SHORT>(ctlId);
482+ pFileEditButton->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
483+ *pCtlId = pFileEditButton->GetCtrlId();
484+ m_components.Add(pFileEditButton);
479485
480486 return S_OK;
481487 }
@@ -497,9 +503,9 @@ STDMETHODIMP CUserForm::DefineCheckButton(BSTR titles, VARIANT initValues, VARIA
497503 return hr;
498504 }
499505
500- size_t ctlId = m_components.Add(pButton);
501-
502- *pCtlId = static_cast<SHORT>(ctlId);
506+ pButton->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
507+ *pCtlId = pButton->GetCtrlId();
508+ m_components.Add(pButton);
503509
504510 return S_OK;
505511 }
@@ -521,9 +527,9 @@ STDMETHODIMP CUserForm::DefineRadioButton(BSTR titles, VARIANT initValues, VARIA
521527 return hr;
522528 }
523529
524- size_t ctlId = m_components.Add(pButton);
525-
526- *pCtlId = static_cast<SHORT>(ctlId);
530+ pButton->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
531+ *pCtlId = pButton->GetCtrlId();
532+ m_components.Add(pButton);
527533
528534 return S_OK;
529535 }
@@ -545,9 +551,9 @@ STDMETHODIMP CUserForm::DefineComboBox(VARIANT titles, VARIANT initValues, VARIA
545551 return hr;
546552 }
547553
548- size_t ctlId = m_components.Add(pCombobox);
549-
550- *pCtlId = static_cast<SHORT>(ctlId);
554+ pCombobox->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
555+ *pCtlId = pCombobox->GetCtrlId();
556+ m_components.Add(pCombobox);
551557
552558 return S_OK;
553559 }
@@ -569,9 +575,9 @@ STDMETHODIMP CUserForm::DefineDropdownList(VARIANT titles, VARIANT initValue, VA
569575 return hr;
570576 }
571577
572- size_t ctlId = m_components.Add(pDropdown);
573-
574- *pCtlId = static_cast<SHORT>(ctlId);
578+ pDropdown->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
579+ *pCtlId = pDropdown->GetCtrlId();
580+ m_components.Add(pDropdown);
575581
576582 return S_OK;
577583 }
@@ -593,9 +599,9 @@ STDMETHODIMP CUserForm::DefineListBox(VARIANT listValues, VARIANT initValues, VA
593599 return hr;
594600 }
595601
596- size_t ctlId = m_components.Add(pButton);
597-
598- *pCtlId = static_cast<SHORT>(ctlId);
602+ pButton->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
603+ *pCtlId = pButton->GetCtrlId();
604+ m_components.Add(pButton);
599605
600606 return S_OK;
601607 }
@@ -616,6 +622,9 @@ STDMETHODIMP CUserForm::ComposeForm(SHORT *pEventCode)
616622
617623 m_lstEvent.clear();
618624
625+ // モードレスモード
626+ m_bModal = false;
627+
619628 // モードレスダイアログの構築
620629 ATLASSERT(m_hWnd == NULL);
621630
@@ -1028,9 +1037,9 @@ STDMETHODIMP CUserForm::DefineFolderEdit(VARIANT title, VARIANT initValue, VARIA
10281037 return hr;
10291038 }
10301039
1031- size_t ctlId = m_components.Add(pFolderEditButton);
1032-
1033- *pCtlId = static_cast<SHORT>(ctlId);
1040+ pFolderEditButton->SetCtrlId(static_cast<SHORT>(m_components.GetCount()));
1041+ *pCtlId = pFolderEditButton->GetCtrlId();
1042+ m_components.Add(pFolderEditButton);
10341043
10351044 return S_OK;
10361045 }
@@ -1088,6 +1097,8 @@ LRESULT CUserForm::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHan
10881097 WORD wID = LOWORD(wParam);
10891098 HWND hCtlWnd = reinterpret_cast<HWND>(lParam);
10901099
1100+ ATLTRACE(_T("WM_COMMAND wNotifyCode=%d wID=%d\n"), wNotifyCode, wID);
1101+
10911102 if (wID == IDOK) {
10921103 // ENTERキーが押された場合
10931104 NextDlgCtrl();
@@ -1105,20 +1116,19 @@ LRESULT CUserForm::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHan
11051116 return 0;
11061117 }
11071118
1108- if (wNotifyCode == BN_CLICKED) {
1109- // コマンドボタンが押下された場合。
1110- // ウィンドウ識別子からオブジェクトを検索し、イベントIDを取得する。
1111- // (せいぜい数十個未満なのでリスト検索で問題ないと思う)
1112- size_t mx = m_components.GetCount();
1113- for (size_t idx = 0; idx < mx; idx++) {
1114- if (m_components.GetAt(idx)->HasChildId(wID) == S_OK) {
1115- SHORT eventId = 0;
1116- if (m_components.GetAt(idx)->IsEventGenerated(wNotifyCode, wID, &eventId) == S_OK) {
1117- EnqueueEvent(eventId);
1118- bHandled = TRUE;
1119- }
1120- break;
1119+ // ウィンドウ識別子からオブジェクトを検索し、イベントIDを取得する。
1120+ // (せいぜい数十個未満なのでリスト検索で問題ないと思う)
1121+ // (イベントを発生させるかどうかはコントロール側で判断させる)
1122+ size_t mx = m_components.GetCount();
1123+ for (size_t idx = 0; idx < mx; idx++) {
1124+ if (m_components.GetAt(idx)->HasChildId(wID) == S_OK) {
1125+ SHORT eventId = 0;
1126+ if (m_components.GetAt(idx)->IsEventGenerated(
1127+ m_bModal, wNotifyCode, wID, &eventId) == S_OK) {
1128+ EnqueueEvent(eventId);
1129+ bHandled = TRUE;
11211130 }
1131+ break;
11221132 }
11231133 }
11241134
--- a/SeraphyScriptDialog/UserForm.h
+++ b/SeraphyScriptDialog/UserForm.h
@@ -69,6 +69,9 @@ public:
6969 // ドロップされたファイル
7070 CComBSTR m_dropedFiles;
7171
72+
73+ // モーダルか?
74+ bool m_bModal;
7275
7376 // 定義されたコントロール
7477 CAutoPtrArray<ControlComponent> m_components;
--- a/SeraphyScriptDialog/VarArray.rgs
+++ b/SeraphyScriptDialog/VarArray.rgs
@@ -20,8 +20,8 @@ HKCR
2020 {
2121 val ThreadingModel = s 'Apartment'
2222 }
23- Version = s '2.0'
24- 'TypeLib' = s '{8C5ED098-A33E-4B09-8E44-638CCF6307A8}'
23+ Version = s '2.1'
24+ 'TypeLib' = s '{F7875AF7-6FF0-4C54-93CA-7E897A3B4AD4}'
2525 }
2626 }
2727 }
--- a/SeraphyScriptDialog/dllmain.h
+++ b/SeraphyScriptDialog/dllmain.h
@@ -4,7 +4,8 @@ class CSeraphyScriptDialogModule : public CAtlDllModuleT< CSeraphyScriptDialogMo
44 {
55 public :
66 DECLARE_LIBID(LIBID_SeraphyScriptDialog)
7- DECLARE_REGISTRY_APPID_RESOURCEID(IDR_SERAPHYSCRIPTDIALOG, "{C781EBBC-836D-4DB3-B100-16A2BEE5F503}")
7+ // DECLARE_REGISTRY_APPID_RESOURCEID(IDR_SERAPHYSCRIPTDIALOG, "{C781EBBC-836D-4DB3-B100-16A2BEE5F503}") // v2.0
8+ DECLARE_REGISTRY_APPID_RESOURCEID(IDR_SERAPHYSCRIPTDIALOG, "{B773A858-25DB-438E-BAF4-54EA91EAE9F7}") // v2.1
89 };
910
1011 extern class CSeraphyScriptDialogModule _AtlModule;
--- a/SeraphyScriptDialog/resource.h
+++ b/SeraphyScriptDialog/resource.h
@@ -1,6 +1,6 @@
11 //{{NO_DEPENDENCIES}}
2-// Microsoft Visual C++ generated include file.
3-// Used by SeraphyScriptDialog.rc
2+// Microsoft Visual C++ で生成されたインクルード ファイル。
3+// SeraphyScriptDialog.rc で使用
44 //
55 #define IDS_PROJNAME 100
66 #define IDR_SERAPHYSCRIPTDIALOG 101
@@ -22,6 +22,7 @@
2222 #define IDS_UNSUPPORTED_SEPARATE_CHAR 514
2323 #define IDS_FORM_ALWAYS_COMPOSED 515
2424 #define IDS_FORM_NOT_COMPOSED 516
25+#define IDS_FORCE_BREAK 517
2526
2627 // Next default values for new objects
2728 //
--- a/SeraphyScriptDialogSetup.iss
+++ b/SeraphyScriptDialogSetup.iss
@@ -1,12 +1,12 @@
11 [Setup]
22 ; 更新・追加インストールのための識別名
33 ; (同一名であれば更新インストール、そうでなければ追加インストールとなる.)
4-AppId = SeraphyScriptDialog2.0
4+AppId = SeraphyScriptDialog2.1
55
66 ; 表示名
77 AppName = SeraphyScriptDialog
88 ; 表示バージョン
9-AppVersion = 2.0
9+AppVersion = 2.1
1010
1111 ; 出力名
1212 OutputBaseFilename={#SetupSetting("AppName")}-{#SetupSetting("AppVersion")}_setup
@@ -20,9 +20,9 @@ AppCopyright=Copyright 2015 seraphy (seraphyware.jp)
2020
2121 ; セットアップのバージョン情報
2222 VersionInfoCompany = seraphyware.jp
23-VersionInfoCopyright = copyright 2002/2 - 2015/3 seraphy (seraphyware.jp)
23+VersionInfoCopyright = copyright 2002/2 - 2015/7 seraphy (seraphyware.jp)
2424 VersionInfoDescription = SeraphyScriptDialog (DLL) Installer (x64/x86)
25-VersionInfoVersion = 2.0.0.1
25+VersionInfoVersion = 2.1.0.2
2626
2727 ; プログラムグループ
2828 DefaultGroupName = SeraphyScriptDialog
@@ -84,12 +84,11 @@ Source: "sample/*"; DestDir: "{code:GetTargetDir}/Samples"; Components: "Samples
8484 [Registry]
8585 ; COMまわりのバージョン固有識別子
8686 #define REP_PROGID "SeraphyScriptDialog"
87-#define PROGID "SeraphyScriptDialog.2"
88-#define PROG_VERSION "2"
89-#define PROGID_VERSION "2.0"
90-#define CLSID "{{4019FCE4-1A3B-4BFF-BF84-C036195842EF}"
91-#define TYPLIBID "{{8C5ED098-A33E-4B09-8E44-638CCF6307A8}"
92-#define APPID "{{C781EBBC-836D-4DB3-B100-16A2BEE5F503}"
87+#define PROGID "SeraphyScriptDialog.2.1"
88+#define PROGID_VERSION "2.1"
89+#define CLSID "{{B7073E21-D520-470D-B53D-A36DA9D8DF0D}"
90+#define TYPLIBID "{{F7875AF7-6FF0-4C54-93CA-7E897A3B4AD4}"
91+#define APPID "{{B773A858-25DB-438E-BAF4-54EA91EAE9F7}"
9392
9493 ; <<COMの登録>>
9594 ; "regserver" flagは使用せず、セットアップ中で独自に対応する.
@@ -351,8 +350,7 @@ end;
351350 // なければFalseを返す.
352351 function GetLastVersion(var curver: String): Boolean;
353352 var
354- key, clsid, clsidEsc, verstr: String;
355- pt: Integer;
353+ key, clsid, clsidEsc: String;
356354 begin
357355 clsid := ExpandConstant('{reg:HKLM\SOFTWARE\Classes\' +
358356 ExpandConstant('{#REP_PROGID}') + '\CLSID,}');
@@ -438,6 +436,7 @@ begin
438436 // このバージョンが認識している、過去のPROGID用バージョンを新しい順に定義する.
439437 // (未来のバージョンは不明なため検索できない)
440438 progVersions := TStringList.Create;
439+ progVersions.Append('2');
441440 progVersions.Append('1');
442441
443442 // レジストリに登録があるか順番に検査する
--- a/help/examplecode/sample_cd1.vbs
+++ b/help/examplecode/sample_cd1.vbs
@@ -1,6 +1,10 @@
11 Dim obj, file
22 Set obj = CreateObject("SeraphyScriptDialog")
3-file = obj.GetOpenFileName("Foo.txt", "テキスト|*.txt|XML|*.xml|")
3+
4+Dim desktopDir
5+desktopDir = obj.GetSpecialFolderPath(16)
6+
7+file = obj.GetOpenFileName("Foo.txt", "テキスト|*.txt|XML|*.xml|", desktopDir)
48 If Not IsNull(file) then
59 MsgBox "選択したファイル=" & file
610 Else
--- a/help/examplecode/sample_cd2.vbs
+++ b/help/examplecode/sample_cd2.vbs
@@ -1,6 +1,10 @@
11 Dim obj, file
22 Set obj = CreateObject("SeraphyScriptDialog")
3-file = obj.GetSaveFileName("Bar.txt", "テキスト|*.txt|XML|*.xml|")
3+
4+Dim desktopDir
5+desktopDir = obj.GetSpecialFolderPath(16)
6+
7+file = obj.GetSaveFileName("Bar.txt", "テキスト|*.txt|XML|*.xml|", desktopDir)
48 If Not IsNull(file) then
59 MsgBox "選択したファイル=" & file
610 Else
--- /dev/null
+++ b/help/examplecode/sample_chkbutton1_modeless.vbs
@@ -0,0 +1,23 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+Dim chk1: chk1 = frm.DefineCheckButton("チェック1;チェック2;チェック3", "001")
5+Dim lbl1: lbl1 = frm.DefineLabel("")
6+Dim btn1: btn1 = frm.DefineButton("OK;Cancel")
7+frm.ComposeForm()
8+Do
9+ Dim ret: ret = frm.WaitEvent(100)
10+ If Not IsNull(ret) Then
11+ If ret = btn1 Then
12+ MsgBox "chk=" & frm.Value(chk1)
13+ Exit Do
14+
15+ ElseIf ret = chk1 Then
16+ frm.Value(lbl1) = frm.Value(chk1)
17+
18+ ElseIf ret = btn1 + 1 Or ret = -1 Then
19+ Exit Do
20+ End If
21+ End If
22+Loop
23+frm.DestroyForm()
--- /dev/null
+++ b/help/examplecode/sample_combo_modeless.vbs
@@ -0,0 +1,24 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+Dim cbo1: cbo1 = frm.DefineComboBox()
5+Dim cbo2: cbo2 = frm.DefineComboBox(,"data2","data1;data2;data3")
6+Dim cbo3: cbo3 = frm.DefineComboBox("label3",,"data1a;data2a;data3a")
7+Dim btn1: btn1 = frm.DefineButton("OK;CANCEL")
8+frm.ComposeForm()
9+Do
10+ Dim ret: ret = frm.WaitEvent(100)
11+ If Not IsNull(ret) Then
12+ If ret = btn1 Then
13+ MsgBox "cbo1=" & frm.Value(cbo1) & vbCrLf & _
14+ "cbo2=" & frm.Value(cbo2) & vbCrLf & _
15+ "cbo3=" & frm.Value(cbo3)
16+ Exit Do
17+ ElseIf ret = -1 Or ret = btn1 + 1 Then
18+ Exit Do
19+ Else
20+ MsgBox ret
21+ End If
22+ End If
23+Loop
24+frm.DestroyForm()
--- /dev/null
+++ b/help/examplecode/sample_dropdownlist_modeless.vbs
@@ -0,0 +1,27 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+Dim cbo1: cbo1 = frm.DefineDropdownList(,1,"data1;data2;data3")
5+Dim cbo2: cbo2 = frm.DefineDropdownList("label3",,"data1a;data2a;data3a")
6+Dim btn1: btn1 = frm.DefineButton("OK")
7+frm.ComposeForm()
8+Do
9+ Dim ret: ret = frm.WaitEvent(100)
10+ If Not IsNull(ret) Then
11+ If ret = btn1 Then
12+ MsgBox "cbo1=" & frm.Value(cbo1) & vbCrLf & _
13+ "cbo2=" & frm.Value(cbo2) & vbCrLf
14+ Exit Do
15+
16+ ElseIf ret = cbo1 Then
17+ MsgBox frm.Value(cbo1)
18+
19+ ElseIf ret = cbo2 Then
20+ MsgBox frm.Value(cbo2)
21+
22+ ElseIf ret = btn1 + 1 Or ret = -1 Then
23+ Exit Do
24+ End If
25+ End If
26+Loop
27+frm.DestroyForm()
--- /dev/null
+++ b/help/examplecode/sample_editbox_modeless.vbs
@@ -0,0 +1,22 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+Dim edt1: edt1 = frm.DefineEdit(, "edt1-value")
5+Dim edt2: edt2 = frm.DefineEdit("edt2-title", "edt2-value")
6+Dim edt3: edt3 = frm.DefineEdit(,"xx" & vbCrLf& "yy", 5)
7+Dim btn1: btn1 = frm.DefineButton("OK;Cancel")
8+frm.ComposeForm()
9+Do
10+ Dim ret: ret = frm.WaitEvent(100)
11+ If Not IsNull(ret) Then
12+ If ret = btn1 Then
13+ MsgBox frm.Value(edt1) & ":" & frm.Value(edt2) & ":" & frm.Value(edt3)
14+ Exit Do
15+
16+ ElseIf ret = -1 Or ret = btn + 1 Then
17+ Exit Do
18+ End If
19+ End If
20+Loop
21+frm.DestroyForm()
22+
--- /dev/null
+++ b/help/examplecode/sample_filedrop.vbs
@@ -0,0 +1,10 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+frm.DefineLabel "ここにファイルをドロップしてください"
5+frm.AcceptDropFile = True
6+Dim ret: ret = frm.ExecuteForm()
7+If ret = 9000 Then
8+ MsgBox frm.DropFiles
9+End If
10+
--- /dev/null
+++ b/help/examplecode/sample_filedrop_modeless.vbs
@@ -0,0 +1,18 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+frm.DefineLabel "ここにファイルをドロップしてください"
5+Dim lbl1 : lbl1 = frm.DefineLabel("")
6+frm.AcceptDropFile = True
7+frm.ComposeForm()
8+Do
9+ Dim ret: ret = frm.WaitEvent(100)
10+ If Not IsNull(ret) Then
11+ If ret = 9000 Then
12+ frm.Value(lbl1) = frm.DropFiles
13+ ElseIf ret = -1 Then
14+ Exit Do
15+ End If
16+ End If
17+Loop
18+
--- /dev/null
+++ b/help/examplecode/sample_listbox_modeless.vbs
@@ -0,0 +1,32 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+Dim lst1: lst1 = frm.DefineListBox("a;b;c")
5+Dim lst2: lst2 = frm.DefineListBox("abc;def;xyz", 1, 3)
6+Dim lst3: lst3 = frm.DefineListBox("月;火;水;木;金;土;日", "0;1;2", 7, 1)
7+Dim btn1: btn1 = frm.DefineButton("OK")
8+frm.ComposeForm()
9+Do
10+ Dim ret: ret = frm.WaitEvent(100)
11+ If Not IsNull(ret) Then
12+ If ret = btn1 Then
13+ MsgBox "lst1=" & frm.Value(lst1) & vbCrLf _
14+ & "lst2=" & frm.Value(lst2) & vbCrLf _
15+ & "lst3=" & frm.Value(lst3)
16+ Exit Do
17+ ElseIf ret = lst1 Then
18+ MsgBox "lst1=" & frm.Value(lst1)
19+
20+ ElseIf ret = lst2 Then
21+ MsgBox "lst2=" & frm.Value(lst2)
22+
23+ ElseIf ret = lst3 Then
24+ MsgBox "lst3=" & frm.Value(lst3)
25+
26+ ElseIf ret = -1 Then
27+ Exit Do
28+ End If
29+ End If
30+Loop
31+frm.DestroyForm()
32+
--- a/help/examplecode/sample_modaless.vbs
+++ b/help/examplecode/sample_modaless.vbs
@@ -23,7 +23,12 @@ Do
2323
2424 Dim ret: ret = frm.WaitEvent(100)
2525 If Not IsNull(ret) Then
26+
2627 ' コマンド番号あり
28+ If ret = chk1 Then
29+ frm.Enable(nEdit1) = frm.Value(chk1) = 0
30+ End If
31+
2732 If ret = btn1 Then
2833 ' 了解ボタン押下か?
2934 Dim name
@@ -39,7 +44,7 @@ Do
3944 Else
4045 obj.MessageBox "ユーザ名を入れてください"
4146 End If
42- Else
47+ ElseIf ret = btn1 + 1 or ret = -1 Then
4348 ' ×ボタンで閉じたか、キャンセルボタンか?
4449 Exit Do
4550 End If
--- /dev/null
+++ b/help/examplecode/sample_radiobutton1_modeless.vbs
@@ -0,0 +1,28 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+Dim chk1: chk1 = frm.DefineRadioButton("ラジオ1;ラジオ2;ラジオ3", 0)
5+Dim lbl1: lbl1 = frm.DefineLabel("")
6+Dim chk2: chk2 = frm.DefineRadioButton("ラジオa;ラジオb")
7+Dim lbl2: lbl2 = frm.DefineLabel("")
8+Dim btn1: btn1 = frm.DefineButton("OK;Cancel")
9+frm.ComposeForm()
10+Do
11+ Dim ret: ret = frm.WaitEvent(100)
12+ If Not IsNull(ret) Then
13+ If ret = btn1 Then
14+ MsgBox "chk1=" & frm.Value(chk1) & vbCrLf & "chk2=" & frm.Value(chk2)
15+ Exit Do
16+
17+ ElseIf ret = chk1 Then
18+ frm.Value(lbl1) = frm.Value(chk1)
19+
20+ ElseIf ret = chk2 Then
21+ frm.Value(lbl2) = frm.Value(chk2)
22+
23+ ElseIf ret = btn1 + 1 Or ret = -1 Then
24+ Exit Do
25+ End If
26+ End If
27+Loop
28+frm.DestroyForm()
--- /dev/null
+++ b/help/examplecode/sample_radiobutton2_modeless.vbs
@@ -0,0 +1,28 @@
1+Option Explicit
2+Dim obj: Set obj = CreateObject("SeraphyScriptDialog")
3+Dim frm: Set frm = obj.CreateForm()
4+Dim chk1: chk1 = frm.DefineRadioButton("ラジオ1;ラジオ2;ラジオ3", 0, 1)
5+Dim lbl1: lbl1 = frm.DefineLabel("")
6+Dim chk2: chk2 = frm.DefineRadioButton("ラジオa;ラジオb",,1)
7+Dim lbl2: lbl2 = frm.DefineLabel("")
8+Dim btn1: btn1 = frm.DefineButton("OK")
9+frm.ComposeForm()
10+Do
11+ Dim ret: ret = frm.WaitEvent(100)
12+ If Not IsNull(ret) Then
13+ If ret = btn1 Then
14+ MsgBox "chk1=" & frm.Value(chk1) & vbCrLf & "chk2=" & frm.Value(chk2)
15+ Exit Do
16+
17+ ElseIf ret = chk1 Then
18+ frm.Value(lbl1) = frm.Value(chk1)
19+
20+ ElseIf ret = chk2 Then
21+ frm.Value(lbl2) = frm.Value(chk2)
22+
23+ ElseIf ret = btn1 + 1 Or ret = -1 Then
24+ Exit Do
25+ End If
26+ End If
27+Loop
28+frm.DestroyForm()
--- a/help/html/CommonDlgMethod.html
+++ b/help/html/CommonDlgMethod.html
@@ -44,7 +44,7 @@
4444 <dl>
4545 <dt>Initdir</dt>
4646 <dd>初期ディレクトリ<br />
47- <a href="bugs.html">※ Version2.0は効果なし(bug)</a>
47+ <a href="bugs.html">※ <del>Version2.0は効果なし(bug)</del><ins>2.1で修正されました。</ins></a>
4848 </dl>
4949 </div>
5050
--- a/help/html/ComposeForm.html
+++ b/help/html/ComposeForm.html
@@ -30,6 +30,7 @@
3030 <h4>備考</h4>
3131 <p>フォームがすでに表示されていてはなりません。</p>
3232 <p>実際にモードレスダイアログを機能させるには、<code>WaitEvent</code>メソッドを繰り返し呼び出す必要があります。</p>
33+ <p>モードレスダイアログの場合、チェックボックス、ラジオボタン、リストボックス、コンボボックス、ドロップダウンリストでの選択操作によりイベントが発生するようになります。</p>
3334
3435 <h3><a name="DestroyForm">DestroyForm</a></h3>
3536 <p>モードレス・ダイアログを終了します。</p>
@@ -48,6 +49,8 @@
4849
4950 <h4>戻り値</h4>
5051 <p>何らかのコマンド番号が発生した場合は、待ち時間を待たず、そのコマンド番号を直ちに返します。</p>
52+ <p>チェックボックス、ラジオボタン、リストボックス、ドロップダウンリスト、コンボボックスでの選択操作があった場合にも、
53+ そのコントロール番号のイベントが返されます。</p>
5154 <p>そうでない場合は待ち時間を経過後、NULLを返します。</p>
5255
5356
@@ -58,8 +61,7 @@
5861
5962 <p>イベントはボタンやウィンドウを閉じる場合はモーダル・ダイアログの場合と同様な戻り値が返ります。</p>
6063
61- <p><del>そのほかに、チェックボタンやラジオボタン、リストボックスが操作された場合には、そのコントロール番号が返ります。</del>
62- <a href="bugs.html">(※ Version2.0ではイベントは発生しません。)</a></p>
64+ <p>そのほかに、チェックボタンやラジオボタン、リストボックスが操作された場合には、そのコントロール番号が返ります。</p>
6365
6466 <p>イベントがなければNULLが返ります。</p>
6567
--- a/help/html/DefineButton.html
+++ b/help/html/DefineButton.html
@@ -45,6 +45,9 @@
4545 <h4>戻り値</h4>
4646 <p>コントロール番号が返されます。</p>
4747
48+ <h4>イベント</h4>
49+ <p>モードレス、モーダルのどちらの場合でもボタン押下によりイベントが発生します。</p>
50+
4851 <h4>サンプル</h4>
4952 <code><pre class="codeexample">
5053 Option Explicit
--- a/help/html/DefineCheckButton.html
+++ b/help/html/DefineCheckButton.html
@@ -50,6 +50,9 @@
5050 <h4>戻り値</h4>
5151 <p>コントロール番号が返されます。</p>
5252
53+ <h4>イベント</h4>
54+ <p>モードレスの場合、チェックボックスの操作によりコントロール番号のイベントが発生します。</p>
55+
5356 <h4>備考</h4>
5457 <p>タイトル欄に区切り文字「;」を指定した場合、複数チェックボックスが作成されます。</p>
5558 <p>複数チェックボックスは「a;b;c;d;e」のように指示して作成し、valueは、それぞれ「01100」のように文字列で指定します。</p>
--- a/help/html/DefineComboBox.html
+++ b/help/html/DefineComboBox.html
@@ -42,6 +42,9 @@
4242 <h4>戻り値</h4>
4343 <p>コントロール番号が返されます。</p>
4444
45+ <h4>イベント</h4>
46+ <p>モードレスの場合、コンボボックスのドロップダウンリストの選択によりコントロール番号のイベントが発生します。</p>
47+
4548 <h4>サンプル</h4>
4649 <code>
4750 <pre class="codeexample">
--- a/help/html/DefineDropdownList.html
+++ b/help/html/DefineDropdownList.html
@@ -44,6 +44,9 @@
4444 <h4>戻り値</h4>
4545 <p>コントロール番号が返されます。</p>
4646
47+ <h4>イベント</h4>
48+ <p>モードレスの場合、ドロップダウンリストの選択操作によりコントロール番号のイベントが発生します。</p>
49+
4750 <h4>備考</h4>
4851 <p>未選択を表すValue値は-1となります。</p>
4952
--- a/help/html/DefineListBox.html
+++ b/help/html/DefineListBox.html
@@ -51,6 +51,9 @@
5151 <h4>戻り値</h4>
5252 <p>コントロール番号が返されます。</p>
5353
54+ <h4>イベント</h4>
55+ <p>モードレスの場合、リスト上の操作によりコントロール番号のイベントが発生します。</p>
56+
5457 <h4>備考</h4>
5558 <p>未選択の場合のValue値は-1となります。</p>
5659 <p>lineで指定する行数は、コントロールの行数を表しており、中のアイテムの行数とは無関係です。</p>
--- a/help/html/DefineRadioButton.html
+++ b/help/html/DefineRadioButton.html
@@ -46,6 +46,9 @@
4646 <h4>戻り値</h4>
4747 <p>コントロール番号が返されます。</p>
4848
49+ <h4>イベント</h4>
50+ <p>モードレスの場合、ラジオボタンの操作によりコントロール番号のイベントが発生します。</p>
51+
4952 <h4>備考</h4>
5053 <p>ラジオボタンは選択したボタン位置(先頭より0から始まる数値)となります。</p>
5154 <p>未選択の場合は-1となります。</p>
--- a/help/html/bugs.html
+++ b/help/html/bugs.html
@@ -11,14 +11,21 @@
1111 <div id="container">
1212 <div id="history">
1313 <h2>既知のバグ</h2>
14-
15- <h3>GetOpenFileName, GetSaveFileName</h3>
16- <p>引数のInitdirが無視される。</p>
14+ <p>現在は確認されていません。</p>
15+
16+ <h2>修正履歴</h2>
17+ <h3>Version2.1</h3>
18+
19+ <h4>WaitEvent</h4>
20+ <p>モードレスモード時、チェックボックス、ラジオボタン、リストボックスなどの変更イベントが通知されない。</p>
1721 <p>Version2.0の不具合。</p>
22+ <p>Version2.1で修正されました。</p>
1823
19- <h3>WaitEvent</h3>
20- <p>チェックボックス、ラジオボタン、リストボックスなどの変更イベントが通知されない。</p>
24+ <h4>GetOpenFileName, GetSaveFileName</h4>
25+ <p>引数のInitdirが無視される。</p>
2126 <p>Version2.0の不具合。</p>
27+ <p>Version2.1で修正されました。</p>
28+
2229 </div>
2330 </div>
2431 </body>
--- a/help/html/technote.html
+++ b/help/html/technote.html
@@ -42,6 +42,17 @@
4242 </ul>
4343 となります。</li>
4444 </ul>
45+
46+ <h3>リソースについて</h3>
47+ <ul>
48+ <li>Version1.0, 2.0ともに日本語リソースのみ使用していました。</li>
49+ <li>Version2.1では、ニュートラル言語と日本語の両方を定義しています。
50+ <ul>
51+ <li>日本語ではフォントはMS UIゴシックを使用しています。</li>
52+ <li>ニュートラルではフォントはシステムデフォルト(MS Shell Dlg)を使用しています。</li>
53+ </ul>
54+ </li>
55+ </ul>
4556 </div>
4657 </div>
4758 </div>
--- a/help/html/top.html
+++ b/help/html/top.html
@@ -12,7 +12,7 @@
1212 <div id="main">
1313 <div id="header">
1414 <h1>SeraphyScriptDialogについて</h1>
15- <p style="text-align: right;">Version 2.0 (2015/3)</p>
15+ <p style="text-align: right;">Version 2.1 (2015/7)</p>
1616 </div>
1717 <div id="preface">
1818 <h2>概要説明</h2>
旧リポジトリブラウザで表示