MIDITrail をピカピカにする。鍵盤方向自動切替・多ポート・歌詞対応等
Revision | 99fcc2d3f814b85b9e3ebc8861737b453d5b65d9 (tree) |
---|---|
Time | 2019-12-20 00:52:35 |
Author | yoshy <yoshy@user...> |
Commiter | yoshy |
[UPDATE] original 1.3.1 をマージ
Merge branch 'master/yknk' into merge_org_131
# Conflicts:
# MIDITrail/MIDITrailVersion.h
# SMIDILib/SMFPUCtrl.cpp
@@ -246,6 +246,7 @@ | ||
246 | 246 | <ClCompile Include="MTNoteRipple.cpp" /> |
247 | 247 | <ClCompile Include="MTNoteRippleMod.cpp" /> |
248 | 248 | <ClCompile Include="MTNoteRippleRing.cpp" /> |
249 | + <ClCompile Include="MTNoteRippleRingLive.cpp" /> | |
249 | 250 | <ClCompile Include="MTPianoKeyboard.cpp" /> |
250 | 251 | <ClCompile Include="MTPianoKeyboardCtrl.cpp" /> |
251 | 252 | <ClCompile Include="MTPianoKeyboardCtrlLive.cpp" /> |
@@ -332,6 +333,7 @@ | ||
332 | 333 | <ClInclude Include="MTNoteRipple.h" /> |
333 | 334 | <ClInclude Include="MTNoteRippleMod.h" /> |
334 | 335 | <ClInclude Include="MTNoteRippleRing.h" /> |
336 | + <ClInclude Include="MTNoteRippleRingLive.h" /> | |
335 | 337 | <ClInclude Include="MTParam.h" /> |
336 | 338 | <ClInclude Include="MTPianoKeyboard.h" /> |
337 | 339 | <ClInclude Include="MTPianoKeyboardCtrl.h" /> |
@@ -284,6 +284,9 @@ | ||
284 | 284 | <ClCompile Include="DXH.cpp"> |
285 | 285 | <Filter>Sources\DirectXUtility</Filter> |
286 | 286 | </ClCompile> |
287 | + <ClCompile Include="MTNoteRippleRingLive.cpp"> | |
288 | + <Filter>Sources\SceneObject</Filter> | |
289 | + </ClCompile> | |
287 | 290 | </ItemGroup> |
288 | 291 | <ItemGroup> |
289 | 292 | <ClInclude Include="MIDITrailApp.h"> |
@@ -532,5 +535,8 @@ | ||
532 | 535 | <ClInclude Include="DXH.h"> |
533 | 536 | <Filter>Sources\DirectXUtility</Filter> |
534 | 537 | </ClInclude> |
538 | + <ClInclude Include="MTNoteRippleRingLive.h"> | |
539 | + <Filter>Sources\SceneObject</Filter> | |
540 | + </ClInclude> | |
535 | 541 | </ItemGroup> |
536 | 542 | </Project> |
\ No newline at end of file |
@@ -2307,12 +2307,18 @@ int MIDITrailApp::_ChangeWindowSize() | ||
2307 | 2307 | { |
2308 | 2308 | int result = 0; |
2309 | 2309 | bool isMonitor = false; |
2310 | + MTScene::MTViewParamMap viewParamMap; | |
2310 | 2311 | |
2311 | 2312 | //モニタ状態の確認 |
2312 | 2313 | if ((m_PlayStatus == MonitorOFF) || (m_PlayStatus == MonitorON)) { |
2313 | 2314 | isMonitor = true; |
2314 | 2315 | } |
2315 | 2316 | |
2317 | + //現在の視点を退避 | |
2318 | + if (m_pScene != NULL) { | |
2319 | + m_pScene->GetViewParam(&viewParamMap); | |
2320 | + } | |
2321 | + | |
2316 | 2322 | //シーン破棄 |
2317 | 2323 | if (m_pScene != NULL) { |
2318 | 2324 | m_pScene->Release(); |
@@ -2343,6 +2349,11 @@ int MIDITrailApp::_ChangeWindowSize() | ||
2343 | 2349 | if (result != 0) goto EXIT; |
2344 | 2350 | } |
2345 | 2351 | |
2352 | + //視点を復帰 | |
2353 | + if (m_pScene != NULL) { | |
2354 | + m_pScene->SetViewParam(&viewParamMap); | |
2355 | + } | |
2356 | + | |
2346 | 2357 | EXIT:; |
2347 | 2358 | return result; |
2348 | 2359 | } |
@@ -17,8 +17,8 @@ | ||
17 | 17 | |
18 | 18 | //バージョン文字列 |
19 | 19 | // >>> modify 20191219 yossiepon begin |
20 | -#define MIDITRAIL_VERSION_STRING_X86 _T("1.3.0 (x86), mod. yossiepon_20191219") | |
21 | -#define MIDITRAIL_VERSION_STRING_X64 _T("1.3.0 (x64), mod. yossiepon_20191219") | |
20 | +#define MIDITRAIL_VERSION_STRING_X86 _T("1.3.1 (x86), mod. yossiepon_20191219") | |
21 | +#define MIDITRAIL_VERSION_STRING_X64 _T("1.3.1 (x64), mod. yossiepon_20191219") | |
22 | 22 | // <<< modify 20191219 yossiepon end |
23 | 23 | |
24 | 24 | //コピーライト |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // 操作方法ダイアログ |
6 | 6 | // |
7 | -// Copyright (C) 2010-2014 WADA Masashi. All Rights Reserved. | |
7 | +// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved. | |
8 | 8 | // |
9 | 9 | //****************************************************************************** |
10 | 10 |
@@ -186,6 +186,7 @@ int MTHowToViewDlg::_LoadHowToBmp() | ||
186 | 186 | BYTE* pBmpPixcel = NULL; |
187 | 187 | TCHAR bmpFilePath[_MAX_PATH] = {_T('\0')}; |
188 | 188 | TCHAR* pBmpFileName[3] = { MT_IMGFILE_HOWTOVIEW1, MT_IMGFILE_HOWTOVIEW2, MT_IMGFILE_HOWTOVIEW3 }; |
189 | + DWORD bmpPixelDataSize = 0; | |
189 | 190 | |
190 | 191 | _Clear(); |
191 | 192 |
@@ -225,9 +226,9 @@ int MTHowToViewDlg::_LoadHowToBmp() | ||
225 | 226 | //BMPファイルヘッダ読み込み |
226 | 227 | bresult = ReadFile( |
227 | 228 | hFile, //ファイルハンドル |
228 | - (LPBITMAPFILEHEADER)&m_BmpHead, //バッファ位置 | |
229 | - sizeof(BITMAPFILEHEADER), //バッファサイズ | |
230 | - &numOfBytesRead, //読み取りサイズ | |
229 | + &m_BmpHead, //バッファ位置 | |
230 | + sizeof(BITMAPFILEHEADER), //読み取りサイズ | |
231 | + &numOfBytesRead, //読み取ったサイズ | |
231 | 232 | NULL //オーバーラップ構造体バッファ |
232 | 233 | ); |
233 | 234 | if (!bresult) { |
@@ -247,9 +248,9 @@ int MTHowToViewDlg::_LoadHowToBmp() | ||
247 | 248 | //BMP情報ヘッダ読み込み |
248 | 249 | bresult = ReadFile( |
249 | 250 | hFile, //ファイルハンドル |
250 | - (LPBITMAPINFOHEADER)&m_BmpInfo, //バッファ位置 | |
251 | - sizeof(BITMAPINFOHEADER), //バッファサイズ | |
252 | - &numOfBytesRead, //読み取りサイズ | |
251 | + &m_BmpInfo, //バッファ位置 | |
252 | + sizeof(BITMAPINFOHEADER), //読み取りサイズ | |
253 | + &numOfBytesRead, //読み取ったサイズ | |
253 | 254 | NULL //オーバーラップ構造体バッファ |
254 | 255 | ); |
255 | 256 | if (!bresult) { |
@@ -258,6 +259,7 @@ int MTHowToViewDlg::_LoadHowToBmp() | ||
258 | 259 | } |
259 | 260 | |
260 | 261 | //24bit画像以外は読みません |
262 | + //カラーテーブルが存在しないことを前提とする | |
261 | 263 | if ((m_BmpInfo.biBitCount != 24) || (m_BmpInfo.biClrUsed != 0)) { |
262 | 264 | result = YN_SET_ERR("Invalid BMP file.", m_BmpInfo.biBitCount, m_BmpInfo.biClrUsed); |
263 | 265 | goto EXIT; |
@@ -278,8 +280,12 @@ int MTHowToViewDlg::_LoadHowToBmp() | ||
278 | 280 | goto EXIT; |
279 | 281 | } |
280 | 282 | |
283 | + //BMPピクセルデータサイズ | |
284 | + //カラーテーブルが存在しないことを前提とする | |
285 | + bmpPixelDataSize = m_BmpHead.bfSize - sizeof(BITMAPFILEHEADER) - sizeof(BITMAPINFOHEADER); | |
286 | + | |
281 | 287 | //ピクセルデータ読み込み用メモリ確保 |
282 | - hMemBmpPixel = GlobalAlloc(GHND, m_BmpHead.bfSize); | |
288 | + hMemBmpPixel = GlobalAlloc(GHND, bmpPixelDataSize); | |
283 | 289 | if (hMemBmpPixel == NULL) { |
284 | 290 | result = YN_SET_ERR("Could not allocate memory.", 0, 0); |
285 | 291 | goto EXIT; |
@@ -294,8 +300,8 @@ int MTHowToViewDlg::_LoadHowToBmp() | ||
294 | 300 | bresult = ReadFile( |
295 | 301 | hFile, //ファイルハンドル |
296 | 302 | pBmpPixcel, //バッファ位置 |
297 | - m_BmpHead.bfSize, //バッファサイズ | |
298 | - &numOfBytesRead, //読み取りサイズ | |
303 | + bmpPixelDataSize, //読み取りサイズ | |
304 | + &numOfBytesRead, //読み取ったサイズ | |
299 | 305 | NULL //オーバーラップ構造体バッファ |
300 | 306 | ); |
301 | 307 | if (!bresult) { |
@@ -370,7 +376,7 @@ EXIT:; | ||
370 | 376 | void MTHowToViewDlg::_Clear() |
371 | 377 | { |
372 | 378 | ZeroMemory(&m_BmpHead, sizeof(BITMAPFILEHEADER)); |
373 | - ZeroMemory(&m_BmpInfo, sizeof(BITMAPINFO)); | |
379 | + ZeroMemory(&m_BmpInfo, sizeof(BITMAPINFOHEADER)); | |
374 | 380 | |
375 | 381 | if (m_hMemBmpPixel != NULL) { |
376 | 382 | GlobalUnlock(m_hMemBmpPixel); |
@@ -44,7 +44,10 @@ int MTNoteBoxRingLive::_CreateNoteDesign() | ||
44 | 44 | result = YN_SET_ERR("Could not allocate memory.", 0, 0); |
45 | 45 | goto EXIT; |
46 | 46 | } |
47 | - | |
47 | + | |
48 | + //ライブモニタモード設定 | |
49 | + ((MTNoteDesignRing*)m_pNoteDesign)->SetLiveMode(); | |
50 | + | |
48 | 51 | EXIT:; |
49 | 52 | return result; |
50 | 53 | } |
@@ -24,6 +24,7 @@ using namespace YNBaseLib; | ||
24 | 24 | //****************************************************************************** |
25 | 25 | MTNoteDesignRing::MTNoteDesignRing(void) |
26 | 26 | { |
27 | + m_isLiveMode = false; | |
27 | 28 | m_NoteAngleStep = 360.0f / (float)SM_MAX_NOTE_NUM; |
28 | 29 | m_RingRadius = 0.0f; |
29 | 30 | } |
@@ -36,6 +37,14 @@ MTNoteDesignRing::~MTNoteDesignRing(void) | ||
36 | 37 | } |
37 | 38 | |
38 | 39 | //****************************************************************************** |
40 | +// ライブモニタモード設定 | |
41 | +//****************************************************************************** | |
42 | +void MTNoteDesignRing::SetLiveMode(void) | |
43 | +{ | |
44 | + m_isLiveMode = true; | |
45 | +} | |
46 | + | |
47 | +//****************************************************************************** | |
39 | 48 | // ノートボックス中心座標取得 |
40 | 49 | //****************************************************************************** |
41 | 50 | D3DXVECTOR3 MTNoteDesignRing::GetNoteBoxCenterPosX( |
@@ -356,7 +365,12 @@ float MTNoteDesignRing::_GetNoteAngle( | ||
356 | 365 | } |
357 | 366 | |
358 | 367 | //ノート番号で角度を決定 |
359 | - angle = (m_NoteAngleStep * noteNo) + (m_NoteAngleStep / 2.0f) + pb; | |
368 | + angle = ((m_NoteAngleStep * noteNo) + (m_NoteAngleStep / 2.0f) + pb) * (-1.0f); | |
369 | + | |
370 | + //ライブモニタの場合は反転する | |
371 | + if (m_isLiveMode) { | |
372 | + angle = angle * (-1.0f); | |
373 | + } | |
360 | 374 | |
361 | 375 | return angle; |
362 | 376 | } |
@@ -26,6 +26,9 @@ public: | ||
26 | 26 | MTNoteDesignRing(void); |
27 | 27 | virtual ~MTNoteDesignRing(void); |
28 | 28 | |
29 | + //ライブモニタモード設定 | |
30 | + void SetLiveMode(void); | |
31 | + | |
29 | 32 | //ノートボックス中心座標取得 |
30 | 33 | virtual D3DXVECTOR3 GetNoteBoxCenterPosX( |
31 | 34 | unsigned long curTickTime, |
@@ -101,6 +104,7 @@ public: | ||
101 | 104 | |
102 | 105 | private: |
103 | 106 | |
107 | + bool m_isLiveMode; | |
104 | 108 | float m_NoteAngleStep; |
105 | 109 | float m_RingRadius; |
106 | 110 |
@@ -2,7 +2,7 @@ | ||
2 | 2 | // |
3 | 3 | // MIDITrail / MTNoteRippleRing |
4 | 4 | // |
5 | -// リング用ノート波紋描画クラス | |
5 | +// ノート波紋リング描画クラス | |
6 | 6 | // |
7 | 7 | // Copyright (C) 2019 WADA Masashi. All Rights Reserved. |
8 | 8 | // |
@@ -2,7 +2,7 @@ | ||
2 | 2 | // |
3 | 3 | // MIDITrail / MTNoteRippleRing |
4 | 4 | // |
5 | -// リング用ノート波紋描画クラス | |
5 | +// ノート波紋リング描画クラス | |
6 | 6 | // |
7 | 7 | // Copyright (C) 2019 WADA Masashi. All Rights Reserved. |
8 | 8 | // |
@@ -12,8 +12,6 @@ | ||
12 | 12 | |
13 | 13 | #include "MTNoteRipple.h" |
14 | 14 | |
15 | -using namespace SMIDILib; | |
16 | - | |
17 | 15 | |
18 | 16 | //****************************************************************************** |
19 | 17 | // リング用ノート波紋描画クラス |
@@ -0,0 +1,55 @@ | ||
1 | +//****************************************************************************** | |
2 | +// | |
3 | +// MIDITrail / MTNoteRippleRingLive | |
4 | +// | |
5 | +// ライブモニタ用ノート波紋リング描画クラス | |
6 | +// | |
7 | +// Copyright (C) 2019 WADA Masashi. All Rights Reserved. | |
8 | +// | |
9 | +//****************************************************************************** | |
10 | + | |
11 | +#include "StdAfx.h" | |
12 | +#include "YNBaseLib.h" | |
13 | +#include "MTNoteDesignRing.h" | |
14 | +#include "MTNoteRippleRingLive.h" | |
15 | + | |
16 | +using namespace YNBaseLib; | |
17 | + | |
18 | + | |
19 | +//****************************************************************************** | |
20 | +// コンストラクタ | |
21 | +//****************************************************************************** | |
22 | +MTNoteRippleRingLive::MTNoteRippleRingLive(void) | |
23 | +{ | |
24 | +} | |
25 | + | |
26 | +//****************************************************************************** | |
27 | +// デストラクタ | |
28 | +//****************************************************************************** | |
29 | +MTNoteRippleRingLive::~MTNoteRippleRingLive(void) | |
30 | +{ | |
31 | +} | |
32 | + | |
33 | +//****************************************************************************** | |
34 | +// ノートデザイン生成 | |
35 | +//****************************************************************************** | |
36 | +int MTNoteRippleRingLive::_CreateNoteDesign() | |
37 | +{ | |
38 | + int result = 0; | |
39 | + | |
40 | + try { | |
41 | + m_pNoteDesign = new MTNoteDesignRing(); | |
42 | + } | |
43 | + catch (std::bad_alloc) { | |
44 | + result = YN_SET_ERR("Could not allocate memory.", 0, 0); | |
45 | + goto EXIT; | |
46 | + } | |
47 | + | |
48 | + //ライブモニタモード設定 | |
49 | + ((MTNoteDesignRing*)m_pNoteDesign)->SetLiveMode(); | |
50 | + | |
51 | +EXIT:; | |
52 | + return result; | |
53 | +} | |
54 | + | |
55 | + |
@@ -0,0 +1,33 @@ | ||
1 | +//****************************************************************************** | |
2 | +// | |
3 | +// MIDITrail / MTNoteRippleRingLive | |
4 | +// | |
5 | +// ライブモニタ用ノート波紋リング描画クラス | |
6 | +// | |
7 | +// Copyright (C) 2019 WADA Masashi. All Rights Reserved. | |
8 | +// | |
9 | +//****************************************************************************** | |
10 | + | |
11 | +#pragma once | |
12 | + | |
13 | +#include "MTNoteRipple.h" | |
14 | + | |
15 | + | |
16 | +//****************************************************************************** | |
17 | +// ライブモニタ用ノート波紋リング描画クラス | |
18 | +//****************************************************************************** | |
19 | +class MTNoteRippleRingLive : public MTNoteRipple | |
20 | +{ | |
21 | +public: | |
22 | + | |
23 | + //コンストラクタ/デストラクタ | |
24 | + MTNoteRippleRingLive(void); | |
25 | + virtual ~MTNoteRippleRingLive(void); | |
26 | + | |
27 | +private: | |
28 | + | |
29 | + virtual int _CreateNoteDesign(); | |
30 | + | |
31 | +}; | |
32 | + | |
33 | + |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // ピクチャボード描画クラス |
6 | 6 | // |
7 | -// Copyright (C) 2010-2012 WADA Masashi. All Rights Reserved. | |
7 | +// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved. | |
8 | 8 | // |
9 | 9 | //****************************************************************************** |
10 | 10 |
@@ -202,7 +202,7 @@ int MTPictBoard::_CreateVertexOfBoard( | ||
202 | 202 | D3DXVECTOR3 vectorRU; |
203 | 203 | D3DXVECTOR3 vectorLD; |
204 | 204 | D3DXVECTOR3 vectorRD; |
205 | - float boardHight = 0.0f; | |
205 | + float boardHeight = 0.0f; | |
206 | 206 | float boardWidth = 0.0f; |
207 | 207 | float chStep = 0.0f; |
208 | 208 |
@@ -223,8 +223,8 @@ int MTPictBoard::_CreateVertexOfBoard( | ||
223 | 223 | &vectorRD |
224 | 224 | ); |
225 | 225 | |
226 | - boardHight = vectorLU.y - vectorLD.y; | |
227 | - boardWidth = boardHight * ((float)m_ImgInfo.Width / (float)m_ImgInfo.Height); | |
226 | + boardHeight = vectorLU.y - vectorLD.y; | |
227 | + boardWidth = boardHeight * ((float)m_ImgInfo.Width / (float)m_ImgInfo.Height); | |
228 | 228 | chStep = m_NoteDesign.GetChStep(); |
229 | 229 | |
230 | 230 | //頂点座標:左の面 |
@@ -74,7 +74,7 @@ int MTPictBoardRing::Create( | ||
74 | 74 | if (result != 0) goto EXIT; |
75 | 75 | |
76 | 76 | //頂点バッファ生成 |
77 | - vertexNum = (SM_MAX_NOTE_NUM + 1)* 2; | |
77 | + vertexNum = (SM_MAX_NOTE_NUM + 1) * 2; | |
78 | 78 | result = m_Primitive.CreateVertexBuffer(pD3DDevice, vertexNum); |
79 | 79 | if (result != 0) goto EXIT; |
80 | 80 |
@@ -206,19 +206,34 @@ int MTPictBoardRing::_CreateVertexOfBoard( | ||
206 | 206 | unsigned long virtexIndexStart = 0; |
207 | 207 | D3DXVECTOR3 basePos; |
208 | 208 | D3DXVECTOR3 rotatedPos; |
209 | - float boardHight = 0.0f; | |
209 | + float boardHeight = 0.0f; | |
210 | 210 | float boardWidth = 0.0f; |
211 | 211 | float chStep = 0.0f; |
212 | 212 | float angle = 0.0f; |
213 | - float tx1 = 0.0f; | |
214 | - float tx2 = 0.0f; | |
213 | + float direction = 0.0f; | |
214 | + D3DXVECTOR2 clipAreaP1; | |
215 | + D3DXVECTOR2 clipAreaP2; | |
216 | + D3DXVECTOR2 textureP1; | |
217 | + D3DXVECTOR2 textureP2; | |
215 | 218 | |
216 | - //テクスチャX座標 | |
217 | - tx1 = 1.0f; | |
218 | - tx2 = 0.0f; | |
219 | + //テクスチャクリップ領域の座標 | |
220 | + clipAreaP1 = D3DXVECTOR2(0.0f, 0.0f); //左上 | |
221 | + clipAreaP2 = D3DXVECTOR2(1.0f, 1.0f); //右下 | |
222 | + | |
223 | + //テスクチャX座標 | |
219 | 224 | if (isReverseMode) { |
220 | - tx1 = 0.0f; | |
221 | - tx2 = 1.0f; | |
225 | + textureP1.x = clipAreaP1.x; | |
226 | + textureP1.y = clipAreaP2.y; | |
227 | + textureP2.x = clipAreaP2.x; | |
228 | + textureP2.y = clipAreaP1.y; | |
229 | + direction = -1.0f; | |
230 | + } | |
231 | + else { | |
232 | + textureP1.x = clipAreaP2.x; | |
233 | + textureP1.y = clipAreaP1.y; | |
234 | + textureP2.x = clipAreaP1.x; | |
235 | + textureP2.y = clipAreaP2.y; | |
236 | + direction = 1.0f; | |
222 | 237 | } |
223 | 238 | |
224 | 239 | //基準座標 |
@@ -227,8 +242,8 @@ int MTPictBoardRing::_CreateVertexOfBoard( | ||
227 | 242 | m_NoteDesign.GetPlayPosX(0), |
228 | 243 | m_NoteDesign.GetPortOriginY(0) + (chStep * (float)SM_MAX_CH_NUM) + chStep + 0.01f, |
229 | 244 | m_NoteDesign.GetPortOriginZ(0)); |
230 | - boardHight = 2.0f * 3.1415926f * basePos.y; | |
231 | - boardWidth = boardHight * ((float)m_ImgInfo.Width / (float)m_ImgInfo.Height); | |
245 | + boardHeight = 2.0f * 3.1415926f * basePos.y; | |
246 | + boardWidth = boardHeight * ((float)m_ImgInfo.Width / (float)m_ImgInfo.Height); | |
232 | 247 | basePos.x -= (boardWidth * m_NoteDesign.GetPictBoardRelativePos()); |
233 | 248 | |
234 | 249 | //頂点作成:X軸回りの円筒 |
@@ -236,13 +251,13 @@ int MTPictBoardRing::_CreateVertexOfBoard( | ||
236 | 251 | pVertex[virtexIndex].p = basePos; |
237 | 252 | pVertex[virtexIndex].n = D3DXVECTOR3(-1.0f, 0.0f, 0.0f); |
238 | 253 | pVertex[virtexIndex].c = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f); |
239 | - pVertex[virtexIndex].t = D3DXVECTOR2(tx1, 1.0f); | |
254 | + pVertex[virtexIndex].t = D3DXVECTOR2(textureP1.x, textureP1.y); | |
240 | 255 | virtexIndex++; |
241 | 256 | pVertex[virtexIndex].p = basePos; |
242 | 257 | pVertex[virtexIndex].p.x += boardWidth; |
243 | 258 | pVertex[virtexIndex].n = D3DXVECTOR3(-1.0f, 0.0f, 0.0f); |
244 | 259 | pVertex[virtexIndex].c = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f); |
245 | - pVertex[virtexIndex].t = D3DXVECTOR2(tx2, 1.0f); | |
260 | + pVertex[virtexIndex].t = D3DXVECTOR2(textureP2.x, textureP1.y); | |
246 | 261 | for (i = 1; i < SM_MAX_NOTE_NUM; i++) { |
247 | 262 | virtexIndex++; |
248 | 263 |
@@ -252,13 +267,13 @@ int MTPictBoardRing::_CreateVertexOfBoard( | ||
252 | 267 | pVertex[virtexIndex].p = rotatedPos; |
253 | 268 | pVertex[virtexIndex].n = D3DXVECTOR3(-1.0f, 0.0f, 0.0f); |
254 | 269 | pVertex[virtexIndex].c = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f); |
255 | - pVertex[virtexIndex].t = D3DXVECTOR2(tx1, (float)(SM_MAX_NOTE_NUM - i) / (float)SM_MAX_NOTE_NUM); | |
270 | + pVertex[virtexIndex].t = D3DXVECTOR2(textureP1.x, textureP1.y + (direction * (float)i / (float)SM_MAX_NOTE_NUM)); | |
256 | 271 | virtexIndex++; |
257 | 272 | pVertex[virtexIndex].p = rotatedPos; |
258 | 273 | pVertex[virtexIndex].p.x += boardWidth; |
259 | 274 | pVertex[virtexIndex].n = D3DXVECTOR3(-1.0f, 0.0f, 0.0f); |
260 | 275 | pVertex[virtexIndex].c = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f); |
261 | - pVertex[virtexIndex].t = D3DXVECTOR2(tx2, (float)(SM_MAX_NOTE_NUM - i) / (float)SM_MAX_NOTE_NUM); | |
276 | + pVertex[virtexIndex].t = D3DXVECTOR2(textureP2.x, textureP1.y + (direction * (float)i / (float)SM_MAX_NOTE_NUM)); | |
262 | 277 | |
263 | 278 | //インデックスバッファ |
264 | 279 | // 直前の頂点0,1と追加した頂点2,3で三角形0-1-3と0-3-2を追加 |
@@ -276,10 +291,10 @@ int MTPictBoardRing::_CreateVertexOfBoard( | ||
276 | 291 | //最後の頂点2,3は最初0,1の頂点と同じ(リングを閉じる) |
277 | 292 | virtexIndex++; |
278 | 293 | pVertex[virtexIndex] =pVertex[0]; |
279 | - pVertex[virtexIndex].t = D3DXVECTOR2(tx1, 0.0f); | |
294 | + pVertex[virtexIndex].t = D3DXVECTOR2(textureP1.x, textureP2.y); | |
280 | 295 | virtexIndex++; |
281 | 296 | pVertex[virtexIndex] =pVertex[1]; |
282 | - pVertex[virtexIndex].t = D3DXVECTOR2(tx2, 0.0f); | |
297 | + pVertex[virtexIndex].t = D3DXVECTOR2(textureP2.x, textureP2.y); | |
283 | 298 | |
284 | 299 | //インデックスバッファ(リングを閉じる) |
285 | 300 | pIndex[(i-1)*6 + 0] = (i-1)*2 + 0; //0 1つ目の三角形 |
@@ -16,7 +16,7 @@ | ||
16 | 16 | #include "MTScene.h" |
17 | 17 | #include "MTFirstPersonCam.h" |
18 | 18 | #include "MTNoteBoxRingLive.h" |
19 | -#include "MTNoteRippleRing.h" | |
19 | +#include "MTNoteRippleRingLive.h" | |
20 | 20 | #include "MTNoteDesignRing.h" |
21 | 21 | #include "MTNotePitchBend.h" |
22 | 22 | #include "MTGridRingLive.h" |
@@ -111,7 +111,7 @@ private: | ||
111 | 111 | |
112 | 112 | //描画オブジェクト |
113 | 113 | MTNoteBoxRingLive m_NoteBoxLive; |
114 | - MTNoteRippleRing m_NoteRipple; | |
114 | + MTNoteRippleRingLive m_NoteRipple; | |
115 | 115 | MTNotePitchBend m_NotePitchBend; |
116 | 116 | MTGridRingLive m_GridBoxLive; |
117 | 117 | MTPictBoardRing m_PictBoard; |
@@ -85,8 +85,8 @@ int MTTimeIndicatorRing::_CreatePrimitiveLine( | ||
85 | 85 | result = m_PrimitiveLine.CreateVertexBuffer(pD3DDevice, vertexNum); |
86 | 86 | if (result != 0) goto EXIT; |
87 | 87 | |
88 | - //インデックスバッファ生成:1サークル128辺 * 2(始点/終点) * 2(先端/終端) | |
89 | - indexNum = 128 * 2 * 2; | |
88 | + //インデックスバッファ生成:1サークル128辺 * 2(始点/終点) | |
89 | + indexNum = 128 * 2; | |
90 | 90 | result = m_PrimitiveLine.CreateIndexBuffer(pD3DDevice, indexNum); |
91 | 91 | if (result != 0) goto EXIT; |
92 | 92 |
@@ -78,13 +78,6 @@ private: | ||
78 | 78 | int _CreatePrimitiveLine(LPDIRECT3DDEVICE9 pD3DDevice); |
79 | 79 | int _CreateVertexOfIndicatorLine(MTTIMEINDICATOR_VERTEX* pVertex, unsigned long* pIndex); |
80 | 80 | |
81 | - D3DXVECTOR3 _RotateYZ( | |
82 | - float centerY, | |
83 | - float centerZ, | |
84 | - D3DXVECTOR3 p1, | |
85 | - float angle | |
86 | - ); | |
87 | - | |
88 | 81 | }; |
89 | 82 | |
90 | 83 |
@@ -1,6 +1,6 @@ | ||
1 | 1 | ****************************************************************************** |
2 | 2 | |
3 | - MIDITrail source code Ver.1.3.0 for Windows | |
3 | + MIDITrail source code Ver.1.3.1 for Windows | |
4 | 4 | |
5 | 5 | Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved. |
6 | 6 |
@@ -1,6 +1,6 @@ | ||
1 | 1 | ****************************************************************************** |
2 | 2 | |
3 | - MIDITrail ソースコード Ver.1.3.0 for Windows | |
3 | + MIDITrail ソースコード Ver.1.3.1 for Windows | |
4 | 4 | |
5 | 5 | Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved. |
6 | 6 |
@@ -12,7 +12,7 @@ QuarterNoteLength=2.0 | ||
12 | 12 | NoteBoxHeight=0.1 |
13 | 13 | NoteBoxWidth=0.0 |
14 | 14 | NoteStep=0.1 |
15 | -ChStep=0.001 | |
15 | +ChStep=0.004 | |
16 | 16 | RippleHeight=1.0 |
17 | 17 | RippleWidth=1.0 |
18 | 18 | PictBoardRelativePos=0.0 |
@@ -94,4 +94,3 @@ Theta=90.0 | ||
94 | 94 | ManualRollAngle=0.0 |
95 | 95 | AutoRollVelocity=0.0 |
96 | 96 | |
97 | - |
@@ -4,7 +4,7 @@ | ||
4 | 4 | <meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
5 | 5 | <meta http-equiv="Content-Language" content="en"> |
6 | 6 | <link rel="stylesheet" href="Files/doc.css" type="text/css"> |
7 | -<title>MIDITrail Ver.1.3.0 for Windows User Manual</title> | |
7 | +<title>MIDITrail Ver.1.3.1 for Windows User Manual</title> | |
8 | 8 | </head> |
9 | 9 | <body> |
10 | 10 |
@@ -15,7 +15,7 @@ | ||
15 | 15 | English / <a href="MANUAL.ja.html">Japanese</a> |
16 | 16 | </div> |
17 | 17 | |
18 | -<h1>MIDITrail Ver.1.3.0 for Windows User Manual</h1> | |
18 | +<h1>MIDITrail Ver.1.3.1 for Windows User Manual</h1> | |
19 | 19 | |
20 | 20 | <p> |
21 | 21 | Copyright (c) 2010-2019, WADA Masashi All rights reserved.<br> |
@@ -822,22 +822,22 @@ POSSIBILITY OF SUCH DAMAGE. | ||
822 | 822 | <tr><td>2010/05/18</td><td>Ver.1.0.0 beta</td><td>Beta release.</td></tr> |
823 | 823 | <tr><td>2010/06/02</td><td>Ver.1.0.0</td><td>First formal release.</td></tr> |
824 | 824 | <tr><td>2010/06/05</td><td>Ver.1.0.1</td><td> |
825 | -#22102 Fixed bug. (execution fails by missing Visual C++ runtime library)<br> | |
826 | -#22106 Fixed bug. (size of about dialog is big on Windows English version)<br> | |
825 | +#22102 Fixed bug (execution fails by missing Visual C++ runtime library)<br> | |
826 | +#22106 Fixed bug (size of about dialog is big on Windows English version)<br> | |
827 | 827 | </td></tr> |
828 | 828 | <tr><td>2010/06/20</td><td>Ver.1.0.2</td><td> |
829 | 829 | #22218 Added English manual.<br> |
830 | -#22108 Fixed bug. (crash when opening the MIDI file exported from VOCALOID)<br> | |
831 | -#22217 Fixed bug. (overlapped ripples flicker)<br> | |
830 | +#22108 Fixed bug (crash when opening the MIDI file exported from VOCALOID)<br> | |
831 | +#22217 Fixed bug (overlapped ripples flicker)<br> | |
832 | 832 | </td></tr> |
833 | 833 | <tr><td>2010/07/11</td><td>Ver.1.0.3</td><td> |
834 | 834 | #22319 Added color effect to active piano roll bar.<br> |
835 | 835 | #22412 Added pitch bend effect to piano roll bar.<br> |
836 | 836 | #22425 Added view mode of piano roll 2D.<br> |
837 | 837 | #22442 Added switch interface of display and effect.<br> |
838 | -#22413 Fixed bug. (rendering performance has declined by specular effect)<br> | |
839 | -#22414 Fixed bug. (total count of notes is incorrect)<br> | |
840 | -#22424 Fixed bug. (duration of a ripple is not constant)<br> | |
838 | +#22413 Fixed bug (rendering performance has declined by specular effect)<br> | |
839 | +#22414 Fixed bug (total count of notes is incorrect)<br> | |
840 | +#22424 Fixed bug (duration of a ripple is not constant)<br> | |
841 | 841 | </td></tr> |
842 | 842 | <tr><td>2010/07/25</td><td>Ver.1.0.4</td><td> |
843 | 843 | #22320 Added application icon.<br> |
@@ -845,34 +845,34 @@ POSSIBILITY OF SUCH DAMAGE. | ||
845 | 845 | #22523 Added command line interface.<br> |
846 | 846 | #22582 Added double speed playback mode.<br> |
847 | 847 | #22585 Added function of piano roll rotation by a mouse wheel.<br> |
848 | -#22566 Fixed bug. (Playback time was slightly short)<br> | |
849 | -#22506 Fixed bug. (Note may continue sounding after the end of playback)<br> | |
848 | +#22566 Fixed bug (Playback time was slightly short)<br> | |
849 | +#22506 Fixed bug (Note may continue sounding after the end of playback)<br> | |
850 | 850 | </td></tr> |
851 | 851 | <tr><td>2010/08/06</td><td>Ver.1.0.5</td><td> |
852 | -#22633 Fixed bug. (Piano roll rotation status is not saved by "Save viewpoint")<br> | |
853 | -#22652 Fixed bug. (Parse error when opening 55MCMDL1.MID "WATANABE Michiaki MEDLEY")<br> | |
854 | -#22709 Fixed bug. (MIDITrail sends redundant "F7" to MIDI-OUT with multi-packet system exclusive message)<br> | |
855 | -#22710 Fixed bug. (Auto rotation speed of piano roll is not constant)<br> | |
852 | +#22633 Fixed bug (Piano roll rotation status is not saved by "Save viewpoint")<br> | |
853 | +#22652 Fixed bug (Parse error when opening 55MCMDL1.MID "WATANABE Michiaki MEDLEY")<br> | |
854 | +#22709 Fixed bug (MIDITrail sends redundant "F7" to MIDI-OUT with multi-packet system exclusive message)<br> | |
855 | +#22710 Fixed bug (Auto rotation speed of piano roll is not constant)<br> | |
856 | 856 | </td></tr> |
857 | 857 | <tr><td>2010/08/29</td><td>Ver.1.1.0 beta</td><td>Beta release.(Added "Piano Roll Rain")</td></tr> |
858 | 858 | <tr><td>2010/09/19</td><td>Ver.1.1.0</td><td> |
859 | 859 | #23174 Added view mode "Piano Roll Rain"<br> |
860 | -#23175 Fixed bug. (File open dialog is not modal)<br> | |
860 | +#23175 Fixed bug (File open dialog is not modal)<br> | |
861 | 861 | </td></tr> |
862 | 862 | <tr><td>2010/10/17</td><td>Ver.1.1.1</td><td> |
863 | 863 | #23439 Added Anti-aliasing support<br> |
864 | -#23347 Fixed bug. (Key down timing and a piano roll don't synchronize in PianoRollRain)<br> | |
865 | -#23348 Fixed bug. (Spelling error in file open dialog)<br> | |
866 | -#23422 Fixed bug. (Position of black is not correct in PianoRollRain)<br> | |
864 | +#23347 Fixed bug (Key down timing and a piano roll don't synchronize in PianoRollRain)<br> | |
865 | +#23348 Fixed bug (Spelling error in file open dialog)<br> | |
866 | +#23422 Fixed bug (Position of black is not correct in PianoRollRain)<br> | |
867 | 867 | </td></tr> |
868 | 868 | <tr><td>2010/12/26</td><td>Ver.1.1.2</td><td> |
869 | 869 | This version was released with MIDITrail for Mac OS X.<br> |
870 | 870 | #23970 Added eye direction control by key operation.<br> |
871 | 871 | #23971 Updated texture images.<br> |
872 | 872 | #23972 Updated application icon.<br> |
873 | -#23497 Fixed bug. ("Piano Roll Rain" item in "View" menu is always enable)<br> | |
874 | -#23968 Fixed bug. (Time signature was always 4/4 after loading file)<br> | |
875 | -#23969 Fixed bug. (Space charactor in the title string has been ignored)<br> | |
873 | +#23497 Fixed bug ("Piano Roll Rain" item in "View" menu is always enable)<br> | |
874 | +#23968 Fixed bug (Time signature was always 4/4 after loading file)<br> | |
875 | +#23969 Fixed bug (Space charactor in the title string has been ignored)<br> | |
876 | 876 | </td></tr> |
877 | 877 | <tr><td>2012/01/15</td><td>Ver.1.1.3</td><td> |
878 | 878 | #27006 Merged features of MIDITrail Ver.1.1.3 for Mac OS X<br> |
@@ -882,16 +882,16 @@ This version was released with MIDITrail for Mac OS X.<br> | ||
882 | 882 | #26989 Added stars and counter display control<br> |
883 | 883 | #27005 Added figure of player operations guide to "How to view dialog"<br> |
884 | 884 | #27091 Added check of DirectX feature support (Index Buffer)<br> |
885 | -#26990 Fixed bug. (Typographical errors on the license)<br> | |
886 | -#27139 Fixed bug. (The color of note boxes are whitish in Piano Roll 3D)<br> | |
887 | -#27140 Fixed bug. (The color of stars are dark in Piano Roll Rain)<br> | |
885 | +#26990 Fixed bug (Typographical errors on the license)<br> | |
886 | +#27139 Fixed bug (The color of note boxes are whitish in Piano Roll 3D)<br> | |
887 | +#27140 Fixed bug (The color of stars are dark in Piano Roll Rain)<br> | |
888 | 888 | </td></tr> |
889 | 889 | <tr><td>2012/03/04</td><td>Ver.1.2.0</td><td> |
890 | 890 | #27711 Merged features of MIDITrail Ver.1.2.0 for Mac OS X<br> |
891 | 891 | #27458 Added MIDI IN monitoring<br> |
892 | 892 | #27459 Added MIDI OUT auto configuration<br> |
893 | 893 | #27712 Added shortcut key of File Open<br> |
894 | -#27725 Fixed bug. (Error occurs when the MIDI data contains the track with 6 or more port numbers)<br> | |
894 | +#27725 Fixed bug (Error occurs when the MIDI data contains the track with 6 or more port numbers)<br> | |
895 | 895 | </td></tr> |
896 | 896 | <tr><td>2013/12/04</td><td>Ver.1.2.1</td><td> |
897 | 897 | #30545 Added key display range control<br> |
@@ -908,15 +908,15 @@ This version was released with MIDITrail for Mac OS X.<br> | ||
908 | 908 | #32427 Added note color assignment to active key<br> |
909 | 909 | #32365 Changed title caption ("TITLE:" string was removed)<br> |
910 | 910 | #30552 Improved event message queue mechanism<br> |
911 | -#30548 Fixed bug. (At the start of playback, MIDI data transmission is blocked)<br> | |
912 | -#32359 Fixed bug. (MIDITrail does not send some CC events at skip processing)<br> | |
911 | +#30548 Fixed bug (At the start of playback, MIDI data transmission is blocked)<br> | |
912 | +#32359 Fixed bug (MIDITrail does not send some CC events at skip processing)<br> | |
913 | 913 | </td></tr> |
914 | 914 | <tr><td>2014/02/23</td><td>Ver.1.2.1a</td><td> |
915 | 915 | #33252 Added support for Windows 64bit<br> |
916 | 916 | </td></tr> |
917 | 917 | <tr><td>2014/04/20</td><td>Ver.1.2.1b</td><td> |
918 | -#33674 Fixed bug. (When NSX-39 was selected as MIDI OUT device, error occurs at the start of playback)<br> | |
919 | -#33695 Fixed bug. (Program error occurs in MTFont2Bmp::_writeGlyphToBmpBuf.)<br> | |
918 | +#33674 Fixed bug (When NSX-39 was selected as MIDI OUT device, error occurs at the start of playback)<br> | |
919 | +#33695 Fixed bug (Program error occurs in MTFont2Bmp::_writeGlyphToBmpBuf)<br> | |
920 | 920 | </td></tr> |
921 | 921 | <tr><td>2016/12/05</td><td>Ver.1.2.2</td><td> |
922 | 922 | #35775 Changed URL and mail address in user's manual<br> |
@@ -937,7 +937,7 @@ This version was released with MIDITrail for Mac OS X.<br> | ||
937 | 937 | #39227 Added quarter note length configuration<br> |
938 | 938 | #39226 Changed development environment to Visual Studio 2017<br> |
939 | 939 | #39228 Changed appendix of user's manual<br> |
940 | -#39229 fixed bug (Code analysis found some mistakes)<br> | |
940 | +#39229 Fixed bug (Code analysis found some mistakes)<br> | |
941 | 941 | </td></tr> |
942 | 942 | <tr><td>2019/06/02</td><td>Ver.1.2.6</td><td> |
943 | 943 | #39274 Added full screen mode<br> |
@@ -946,6 +946,12 @@ This version was released with MIDITrail for Mac OS X.<br> | ||
946 | 946 | <tr><td>2019/10/14</td><td>Ver.1.3.0</td><td> |
947 | 947 | #39675 Added view mode "Piano Roll Ring"<br> |
948 | 948 | </td></tr> |
949 | + <tr><td>2019/11/09</td><td>Ver.1.3.1</td><td> | |
950 | +#39733 Changed keyboard display direction on Piano Roll Ring.<br> | |
951 | +#39734 Changed processing to keep viewpoint when window size changed.<br> | |
952 | +#39735 Fixed bug (Assertion occurs in _controlfp_s when x64 debug configuration)<br> | |
953 | +#39736 Fixed bug (Exception occurs in "How to view" dialog when x64 debug configuration)<br> | |
954 | + </td></tr> | |
949 | 955 | </table> |
950 | 956 | </p> |
951 | 957 |
@@ -4,7 +4,7 @@ | ||
4 | 4 | <meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
5 | 5 | <meta http-equiv="Content-Language" content="ja"> |
6 | 6 | <link rel="stylesheet" href="Files/doc.css" type="text/css"> |
7 | -<title>MIDITrail Ver.1.3.0 for Windows ユーザーマニュアル</title> | |
7 | +<title>MIDITrail Ver.1.3.1 for Windows ユーザーマニュアル</title> | |
8 | 8 | </head> |
9 | 9 | <body> |
10 | 10 |
@@ -14,7 +14,7 @@ | ||
14 | 14 | <a href="MANUAL.en.html">English</a> / Japanese |
15 | 15 | </div> |
16 | 16 | |
17 | -<h1>MIDITrail Ver.1.3.0 for Windows ユーザーマニュアル</h1> | |
17 | +<h1>MIDITrail Ver.1.3.1 for Windows ユーザーマニュアル</h1> | |
18 | 18 | |
19 | 19 | <p> |
20 | 20 | Copyright (c) 2010-2019, WADA Masashi All rights reserved.<br> |
@@ -936,6 +936,12 @@ MIDITrail for Mac OS Xと同時にリリース<br> | ||
936 | 936 | <tr><td>2019/10/14</td><td>Ver.1.3.0</td><td> |
937 | 937 | #39675 機能追加:ビューモード「ピアノロールリング」追加<br> |
938 | 938 | </td></tr> |
939 | + <tr><td>2019/11/09</td><td>Ver.1.3.1</td><td> | |
940 | +#39733 仕様変更:「ピアノロールリング」のキーボードを反転する<br> | |
941 | +#39734 仕様変更:ウィンドウサイズ変更時に視点を維持する<br> | |
942 | +#39735 バグ修正:x64デバッグ構成のとき_controlfp_sでアサーション発生<br> | |
943 | +#39736 バグ修正:x64デバッグ構成のときHow to viewダイアログで例外発生<br> | |
944 | + </td></tr> | |
939 | 945 | </table> |
940 | 946 | </p> |
941 | 947 |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // 浮動点小数プロセッサ制御クラス |
6 | 6 | // |
7 | -// Copyright (C) 2010 WADA Masashi. All Rights Reserved. | |
7 | +// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved. | |
8 | 8 | // |
9 | 9 | //****************************************************************************** |
10 | 10 |
@@ -89,17 +89,22 @@ int SMFPUCtrl::Start(FPUPrecision precision) | ||
89 | 89 | result = YN_SET_ERR("Program error.", 0, 0); |
90 | 90 | goto EXIT; |
91 | 91 | } |
92 | -#ifndef _WIN64 | |
92 | + | |
93 | +#ifdef _WIN64 | |
94 | + //x64(64bit) | |
95 | + //精度制御の必要なし | |
96 | +#else | |
97 | + //x86(32bit) | |
93 | 98 | eresult = _controlfp_s( |
94 | 99 | &curCtrl, //現在の制御ワード |
95 | 100 | flag, //制御ワード:制御種別 |
96 | - _MCW_PC //マスク:制度制御 | |
101 | + _MCW_PC //マスク:精度制御 | |
97 | 102 | ); |
98 | -#endif | |
99 | 103 | if (eresult != 0) { |
100 | 104 | result = YN_SET_ERR("Windows API error.", eresult, GetLastError()); |
101 | 105 | goto EXIT; |
102 | 106 | } |
107 | +#endif | |
103 | 108 | |
104 | 109 | _DisplayCurCtrl(_T("Start after")); |
105 | 110 |
@@ -131,18 +136,22 @@ int SMFPUCtrl::End() | ||
131 | 136 | goto EXIT; |
132 | 137 | } |
133 | 138 | |
134 | -#ifndef _WIN64 | |
135 | 139 | //浮動小数点精度を復元する |
140 | +#ifdef _WIN64 | |
141 | + //x64(64bit) | |
142 | + //精度制御の必要なし | |
143 | +#else | |
144 | + //x86(32bit) | |
136 | 145 | eresult = _controlfp_s( |
137 | 146 | &curCtrl, //現在の制御ワード |
138 | 147 | m_FPUCtrl, //制御ワード:設定開始時点 |
139 | - _MCW_PC //マスク:制度制御 | |
148 | + _MCW_PC //マスク:精度制御 | |
140 | 149 | ); |
141 | -#endif | |
142 | 150 | if (eresult != 0) { |
143 | 151 | result = YN_SET_ERR("Windows API error.", eresult, GetLastError()); |
144 | 152 | goto EXIT; |
145 | 153 | } |
154 | +#endif | |
146 | 155 | |
147 | 156 | _DisplayCurCtrl(_T("End after")); |
148 | 157 |