リビジョン | 90 (tree) |
---|---|
日時 | 2010-05-12 17:56:46 |
作者 | bird_may_nike |
(メッセージはありません)
@@ -19,10 +19,17 @@ | ||
19 | 19 | LRESULT CALLBACK AboutProc(HWND, UINT, WPARAM, LPARAM); |
20 | 20 | wchar_t* OpenWSFile(wchar_t*, DWORD); |
21 | 21 | void WsPause(void); |
22 | +void SetRecentRoms(wchar_t* RomPath); | |
22 | 23 | |
23 | 24 | HINSTANCE hInst; |
24 | 25 | HWND hWnd; |
25 | 26 | static LPCTSTR szClassName = TEXT("OswanJ"); //クラス名 |
27 | +static wchar_t RecentOfn0[512]; | |
28 | +static wchar_t RecentOfn1[512]; | |
29 | +static wchar_t RecentOfn2[512]; | |
30 | +static wchar_t RecentOfn3[512]; | |
31 | +static wchar_t RecentOfn4[512]; | |
32 | +static wchar_t* RecentOfn[5] = {RecentOfn0, RecentOfn1, RecentOfn2, RecentOfn3, RecentOfn4}; | |
26 | 33 | |
27 | 34 | int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) |
28 | 35 | { |
@@ -132,8 +139,19 @@ | ||
132 | 139 | WsRelease(); |
133 | 140 | Run = 1; |
134 | 141 | WsCreate(RomPath); |
142 | + SetRecentRoms(RomPath); | |
135 | 143 | } |
136 | 144 | return 0L; |
145 | + case ID_FILE_RECENT0: | |
146 | + if (*RecentOfn[0]) | |
147 | + { | |
148 | + apuWaveClear(); | |
149 | + WsRelease(); | |
150 | + Run = 1; | |
151 | + WsCreate(RecentOfn[0]); | |
152 | + SetRecentRoms(RecentOfn[0]); | |
153 | + } | |
154 | + return 0L; | |
137 | 155 | case ID_PDATA_SET: |
138 | 156 | apuWaveClear(); |
139 | 157 | WsRelease(); |
@@ -366,3 +384,58 @@ | ||
366 | 384 | CheckMenuItem(menu, ID_PAUSE, MF_UNCHECKED); |
367 | 385 | } |
368 | 386 | } |
387 | + | |
388 | +void SetRecentRoms(wchar_t* RomPath) | |
389 | +{ | |
390 | + int i; | |
391 | + wchar_t* temp; | |
392 | + wchar_t* filename; | |
393 | + wchar_t buf[256]; | |
394 | + MENUITEMINFOW minfo; | |
395 | + minfo.cbSize = sizeof(MENUITEMINFOW); | |
396 | + minfo.fMask = MIIM_STATE | MIIM_TYPE; | |
397 | + minfo.fType = MFT_STRING; | |
398 | + minfo.fState = MFS_ENABLED; | |
399 | + minfo.dwTypeData = buf; | |
400 | + | |
401 | + if (RomPath && *RomPath) | |
402 | + { | |
403 | + for (i = 0; i < 5; i++) | |
404 | + { | |
405 | + if (wcscmp(RomPath, RecentOfn[i]) == 0) | |
406 | + { | |
407 | + temp = RecentOfn[i]; | |
408 | + while (i) { | |
409 | + RecentOfn[i] = RecentOfn[i - 1]; | |
410 | + i--; | |
411 | + } | |
412 | + RecentOfn[0] = temp; | |
413 | + break; | |
414 | + } | |
415 | + } | |
416 | + if (i) | |
417 | + { | |
418 | + temp = RecentOfn[4]; | |
419 | + RecentOfn[4] = RecentOfn[3]; | |
420 | + RecentOfn[3] = RecentOfn[2]; | |
421 | + RecentOfn[2] = RecentOfn[1]; | |
422 | + RecentOfn[1] = RecentOfn[0]; | |
423 | + RecentOfn[0] = temp; | |
424 | + wcscpy(RecentOfn[0], RomPath); | |
425 | + } | |
426 | + } | |
427 | + HMENU menu = GetMenu(hWnd); | |
428 | + for (i = 0; i < 5; i++) | |
429 | + { | |
430 | + if (*RecentOfn[i]) | |
431 | + { | |
432 | + filename = wcsrchr(RecentOfn[i], '\\'); | |
433 | + wsprintf(buf, TEXT("&%d %s"), i + 1, ++filename); | |
434 | + } | |
435 | + else | |
436 | + { | |
437 | + buf[0] = '\0'; | |
438 | + } | |
439 | + SetMenuItemInfo(menu, ID_FILE_RECENT0 + i, FALSE, &minfo); | |
440 | + } | |
441 | +} |
@@ -397,6 +397,10 @@ | ||
397 | 397 | } |
398 | 398 | } |
399 | 399 | |
400 | +/* | |
401 | +PlaySound()は音量調節が出来ないのでいったんメモリに読み込んで | |
402 | +プレイ時にデータを加工する | |
403 | +*/ | |
400 | 404 | static void* SSMasterBuf; |
401 | 405 | static void* SSPlayBuf; |
402 | 406 | static DWORD SSDataLen, SSHeadLen; |
@@ -479,7 +483,7 @@ | ||
479 | 483 | { |
480 | 484 | return; |
481 | 485 | } |
482 | - src = (short*)((BYTE*)SSMasterBuf); | |
486 | + src = (short*)SSMasterBuf; | |
483 | 487 | dst = (short*)((BYTE*)SSPlayBuf + SSHeadLen); |
484 | 488 | // マスターの音量を変更してプレイバッファーにコピー |
485 | 489 | for (i = 0; i < size; i++) |
@@ -10,12 +10,12 @@ | ||
10 | 10 | #define BANDAI_Y (48) |
11 | 11 | |
12 | 12 | RECT bandaiRect[6] = { |
13 | - 5, 9, 16, 23, // Bのrect(left, top, right, bottom) | |
14 | - 18, 9, 30, 23, // A | |
15 | - 32, 9, 42, 23, // N | |
16 | - 5, 25, 16, 39, // D | |
17 | - 18, 25, 30, 39, // A | |
18 | - 32, 25, 34, 39 // I | |
13 | + { 5, 9, 16, 23}, // Bのrect(left, top, right, bottom) | |
14 | + {18, 9, 30, 23}, // A | |
15 | + {32, 9, 42, 23}, // N | |
16 | + { 5, 25, 16, 39}, // D | |
17 | + {18, 25, 30, 39}, // A | |
18 | + {32, 25, 34, 39} // I | |
19 | 19 | }; |
20 | 20 | |
21 | 21 | #define W (0xFFFF) |
@@ -50,6 +50,11 @@ | ||
50 | 50 | #define ID_ABOUT 40032 |
51 | 51 | #define ID_PAUSE 40033 |
52 | 52 | #define ID_RESET 40034 |
53 | +#define ID_FILE_RECENT0 40035 | |
54 | +#define ID_FILE_RECENT1 40036 | |
55 | +#define ID_FILE_RECENT2 40037 | |
56 | +#define ID_FILE_RECENT3 40038 | |
57 | +#define ID_FILE_RECENT4 40039 | |
53 | 58 | |
54 | 59 | // Next default values for new objects |
55 | 60 | // |
@@ -56,7 +61,7 @@ | ||
56 | 61 | #ifdef APSTUDIO_INVOKED |
57 | 62 | #ifndef APSTUDIO_READONLY_SYMBOLS |
58 | 63 | #define _APS_NEXT_RESOURCE_VALUE 109 |
59 | -#define _APS_NEXT_COMMAND_VALUE 40035 | |
64 | +#define _APS_NEXT_COMMAND_VALUE 40040 | |
60 | 65 | #define _APS_NEXT_CONTROL_VALUE 1016 |
61 | 66 | #define _APS_NEXT_SYMED_VALUE 101 |
62 | 67 | #endif |