From fe431cf91c523782ed9a5c28f1b6d989c0985011 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Tue, 23 Apr 2019 01:05:23 +0900 Subject: [PATCH 01/31] =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BD=9C=E6=88=90=E3=80=81=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=81=AB=E3=83=9E=E3=83=83=E3=83=97=E3=82=92=E6=8F=8F?= =?UTF-8?q?=E7=94=BB=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 21 +++++++++++++++++++++ WinWwamk.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ resource.h | 4 +++- 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/Script2.rc b/Script2.rc index cdb2b7b..c0e43bd 100644 --- a/Script2.rc +++ b/Script2.rc @@ -768,6 +768,14 @@ BEGIN GROUPBOX "",IDC_STATIC,8,210,196,44 END +IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 309, 176 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "ミニマップ" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN +END + ///////////////////////////////////////////////////////////////////////////// // @@ -1019,6 +1027,14 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 273 END + + IDD_DIALOG_MINIMAP, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 291 + TOPMARGIN, 7 + BOTTOMMARGIN, 159 + END END #endif // APSTUDIO_INVOKED @@ -1048,6 +1064,11 @@ BEGIN 0 END +IDD_DIALOG_MINIMAP AFX_DIALOG_LAYOUT +BEGIN + 0 +END + #endif // 日本語 (日本) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/WinWwamk.cpp b/WinWwamk.cpp index ee09c9f..d06799f 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -189,6 +189,7 @@ HWND g_hDlgFileSave; HWND g_hDlgCalculate = NULL; HWND g_hDlgQuickView = NULL; HWND g_hDlgBasicMes = NULL; +HWND g_hDlgMiniMap = NULL; HDC g_hmDC = NULL; HDC g_hmDCHalf = NULL; HDC g_hmDCAnd = NULL; @@ -407,6 +408,8 @@ void PaintWindow(); void paintMapAll( HDC hDC ); // ステータス描画 void PaintStatus( BOOL flag ); +// ミニマップ描画 +void PaintMiniMap( HDC hDC ); // 選択ダイアログプロシージャ LRESULT CALLBACK SelectObjectDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); @@ -420,6 +423,8 @@ LRESULT CALLBACK QuickViewDialogProc( HWND hWnd, UINT message, WPARAM wParam, LP LRESULT CALLBACK SelectCGCharaProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); // 基本メッセージダイアログプロシージャ LRESULT CALLBACK DialogProcBasicMes( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); +// ミニマップダイアログプロシージャ +LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // 線と四角の描画 void DrawLine( HDC hDC, int x, int y, int x2, int y2 ); @@ -1175,6 +1180,12 @@ int PASCAL WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int MoveWindow( g_hDlgQuickView, rectBox.left, rectBox.bottom, rect.right -rect.left, rect.bottom -rect.top, TRUE ); ShowWindow( g_hDlgQuickView, SW_SHOW ); + //ミニマップ + g_hDlgMiniMap = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_MINIMAP), g_hWnd, (DLGPROC)MiniMapDialogProc); + GetWindowRect(g_hDlgMiniMap, &rect); + MoveWindow(g_hDlgMiniMap, rectBox.left, rectBox.bottom, rect.right - rect.left, rect.bottom - rect.top, TRUE); + ShowWindow(g_hDlgMiniMap, SW_SHOW); + //画面色数取得 HDC hDC = GetDC( g_hWnd ); if( GetDeviceCaps(hDC,BITSPIXEL) == 8 ){ @@ -1305,6 +1316,7 @@ BOOL LoadBitmap() ReleaseDC( g_hWnd,hDC ); //再描画 InvalidateRect( g_hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); InvalidateRect( g_hDlgSelectObject, NULL, FALSE ); InvalidateRect( g_hDlgSelectMap, NULL, FALSE ); @@ -1423,6 +1435,24 @@ void PaintStatus( BOOL flag ) } +//##------------------------------------------------------------------ +// ミニマップ描画 + +void PaintMiniMap(HDC hDC) +{ + int i, j, mdata; + + for (j = 0; j < g_iMapSize; ++j) { + for (i = 0; i < g_iMapSize; ++i) { + //背景描画 + mdata = map[j][i]; + BitBlt(hDC, i * 10, j * 10, 10, 10, g_hmDC, mapAttribute[mdata][ATR_X] + 15, mapAttribute[mdata][ATR_Y] + 15, SRCCOPY); + } + } + +} + + //##------------------------------------------------------------------ // 数値変換 @@ -3654,6 +3684,20 @@ LRESULT CALLBACK DialogProcBasicMes( HWND hWnd, UINT message, WPARAM wParam, LPA return 0; } +//##------------------------------------------------------------------ +// ミニマップダイアログプロシージャ + +LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) { + case WM_PAINT: + HDC hDC; + hDC = GetDC(hWnd); + PaintMiniMap(hDC); + break; + } + return 0; +} //##------------------------------------------------------------------ @@ -3878,6 +3922,7 @@ void MakeNewMap() InvalidateRect( g_hDlgSelectObject, NULL, FALSE ); InvalidateRect( g_hDlgSelectMap, NULL, FALSE ); InvalidateRect( g_hDlgQuickView, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); MessageBox( g_hWnd, "マップを新規作成しました。\n画面には何も表示されなくなりますがこれで正常です。\n使用するGIF画像ファイルを選択後、\n新たにパーツを作成してマップに配置していってください。", "マップの新規作成", MB_OK ); } diff --git a/resource.h b/resource.h index 1c44387..9680cf7 100644 --- a/resource.h +++ b/resource.h @@ -35,6 +35,8 @@ #define IDD_DIALOG_QVIEW 130 #define IDD_DIALOG_LOCALGATE_OBJ 131 #define IDD_DIALOG_BASICMES 132 +#define IDD_DIALOG1 134 +#define IDD_DIALOG_MINIMAP 134 #define IDC_BUTTON_EDITMAP 1000 #define IDC_BUTTON_MAP_ERASE 1001 #define IDC_COMBO_OBJECT 1002 @@ -211,7 +213,7 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 134 +#define _APS_NEXT_RESOURCE_VALUE 136 #define _APS_NEXT_COMMAND_VALUE 40039 #define _APS_NEXT_CONTROL_VALUE 1103 #define _APS_NEXT_SYMED_VALUE 101 From 16a9e5557f499eaa389a9de314bd7ae46effc9e6 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Tue, 23 Apr 2019 11:03:46 +0900 Subject: [PATCH 02/31] =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E7=94=A8=E3=81=AE=E3=82=B0=E3=83=A9=E3=83=95=E3=82=A3?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=82=92=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=E3=80=81=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83=E3=83=97=E3=81=AE?= =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB=E3=81=A8=E5=A2=83?= =?UTF-8?q?=E7=95=8C=E7=B7=9A=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 6 +-- WinWwamk.cpp | 129 +++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 122 insertions(+), 13 deletions(-) diff --git a/Script2.rc b/Script2.rc index c0e43bd..49131f3 100644 --- a/Script2.rc +++ b/Script2.rc @@ -768,7 +768,7 @@ BEGIN GROUPBOX "",IDC_STATIC,8,210,196,44 END -IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 309, 176 +IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 303, 145 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "ミニマップ" @@ -1031,9 +1031,9 @@ BEGIN IDD_DIALOG_MINIMAP, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 291 + RIGHTMARGIN, 285 TOPMARGIN, 7 - BOTTOMMARGIN, 159 + BOTTOMMARGIN, 128 END END #endif // APSTUDIO_INVOKED diff --git a/WinWwamk.cpp b/WinWwamk.cpp index d06799f..55ab0d3 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -119,6 +119,11 @@ char g_mapcgOld[100]; int mapX, mapY; int mapXtop = 0; int mapYtop = 0; +int miniMapXtop = 0; +int miniMapYtop = 0; + +const int miniMapWidth = 44; +const int miniMapHeight = 22; //ステータス int statusEnergyMax; @@ -192,11 +197,13 @@ HWND g_hDlgBasicMes = NULL; HWND g_hDlgMiniMap = NULL; HDC g_hmDC = NULL; HDC g_hmDCHalf = NULL; +HDC g_hmDCMini = NULL; HDC g_hmDCAnd = NULL; HDC g_hmDCOr = NULL; HDC g_hmDCExtra = NULL; HBITMAP g_hBitmap = NULL; HBITMAP g_hBitmapHalf = NULL; +HBITMAP g_hBitmapMini = NULL; HBITMAP g_hBitmapGif = NULL; HBITMAP g_hBitmapAnd = NULL; HBITMAP g_hBitmapOr = NULL; @@ -409,7 +416,7 @@ void paintMapAll( HDC hDC ); // ステータス描画 void PaintStatus( BOOL flag ); // ミニマップ描画 -void PaintMiniMap( HDC hDC ); +void PaintMiniMap( HWND hWnd ); // 選択ダイアログプロシージャ LRESULT CALLBACK SelectObjectDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); @@ -522,6 +529,7 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara ShowWindow( g_hDlgSelectChara, TRUE ); ShowWindow( g_hDlgExtra, TRUE ); ShowWindow( g_hDlgQuickView, TRUE ); + ShowWindow(g_hDlgMiniMap, TRUE); } else if( wParam == SIZE_MINIMIZED ){ ShowWindow( g_hDlgSelectObject, FALSE ); ShowWindow( g_hDlgSelectMap, FALSE ); @@ -530,6 +538,7 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara ShowWindow( g_hDlgSelectChara, FALSE ); ShowWindow( g_hDlgExtra, FALSE ); ShowWindow( g_hDlgQuickView, FALSE ); + ShowWindow(g_hDlgMiniMap, FALSE); } break; } @@ -706,6 +715,7 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara mapObject[y /40 +mapYtop][x /40 +mapXtop] = 0; } InvalidateRect( hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; case WM_VSCROLL: @@ -1246,6 +1256,7 @@ BOOL LoadBitmap() if( g_hmDC == NULL ){ g_hmDC = CreateCompatibleDC( hDC ); g_hmDCHalf = CreateCompatibleDC( hDC ); + g_hmDCMini = CreateCompatibleDC(hDC); g_hmDCAnd = CreateCompatibleDC( hDC ); g_hmDCOr = CreateCompatibleDC( hDC ); @@ -1292,6 +1303,14 @@ BOOL LoadBitmap() //1/2サイズのCGを描画$$ StretchBlt( g_hmDCHalf, 0, 0, 200, (g_iLoadCGHeight /2), g_hmDC, 0, 0, 400, g_iLoadCGHeight, SRCCOPY ); + // ミニマップサイズのCG領域確保 + if (g_hBitmapMini != NULL) { + DeleteObject(g_hBitmapMini); + } + g_hBitmapMini = CreateCompatibleBitmap(hDC, 100, (g_iLoadCGHeight / 4)); + SelectObject(g_hmDCMini, g_hBitmapMini); + StretchBlt(g_hmDCMini, 0, 0, 100, (g_iLoadCGHeight / 4), g_hmDC, 0, 0, 400, g_iLoadCGHeight, SRCCOPY); + //AND画像領域確保 if( g_hBitmapAnd != NULL ) DeleteObject( g_hBitmapAnd ); g_hBitmapAnd = CreateBitmap( 400, g_iLoadCGHeight, 1, 1, NULL ); @@ -1438,18 +1457,44 @@ void PaintStatus( BOOL flag ) //##------------------------------------------------------------------ // ミニマップ描画 -void PaintMiniMap(HDC hDC) +void PaintMiniMap(HWND hWnd) { int i, j, mdata; + HDC hDC; + PAINTSTRUCT ps; + HPEN screenPen, currentPen; - for (j = 0; j < g_iMapSize; ++j) { - for (i = 0; i < g_iMapSize; ++i) { - //背景描画 - mdata = map[j][i]; - BitBlt(hDC, i * 10, j * 10, 10, 10, g_hmDC, mapAttribute[mdata][ATR_X] + 15, mapAttribute[mdata][ATR_Y] + 15, SRCCOPY); + hDC = BeginPaint(hWnd, &ps); + + for (j = 0; j < miniMapHeight; ++j) { + for (i = 0; i < miniMapWidth; ++i) { + // 背景描画 + mdata = map[j + miniMapYtop][i + miniMapXtop]; + BitBlt(hDC, i * 10, j * 10, 10, 10, g_hmDCMini, mapAttribute[mdata][ATR_X] / 4, mapAttribute[mdata][ATR_Y] / 4, SRCCOPY); } } + // 画面境界線描画 + screenPen = CreatePen(PS_SOLID, 0, RGB(255, 0, 0)); + currentPen = CreatePen(PS_SOLID, 0, RGB(0, 0, 255)); + SelectObject(hDC, screenPen); + + int screenLinePos; + for (i = 0; i < miniMapWidth; ++i) { + if ((i + miniMapXtop) % 10 == 0) { + screenLinePos = i * 10 + 5; + DrawLine(hDC, screenLinePos, 0, screenLinePos, miniMapHeight * 10); + } + } + for (i = 0; i < miniMapHeight; ++i) { + if ((i + miniMapYtop) % 10 == 0) { + screenLinePos = i * 10 + 5; + DrawLine(hDC, 0, screenLinePos, miniMapWidth * 10, screenLinePos); + } + } + + DeleteObject(screenPen); + EndPaint(hWnd, &ps); } @@ -1621,6 +1666,8 @@ BOOL LoadMapData( char *FileName ) //スクロールバー設定 SetScrollRange( g_hWnd, SB_VERT, 0, (g_iMapSize -11), FALSE ); SetScrollRange( g_hWnd, SB_HORZ, 0, (g_iMapSize -11), FALSE ); + SetScrollRange(g_hDlgMiniMap, SB_VERT, 0, g_iMapSize - miniMapHeight, FALSE); + SetScrollRange(g_hDlgMiniMap, SB_HORZ, 0, g_iMapSize - miniMapWidth, FALSE); //パーツ最大数設定 g_iMapPartsMax = ((iDataMapCount -1) /50) *50 +50; @@ -3613,6 +3660,8 @@ LRESULT CALLBACK DialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar //スクロールバー設定 SetScrollRange( g_hWnd, SB_VERT, 0, (g_iMapSize -11), FALSE ); SetScrollRange( g_hWnd, SB_HORZ, 0, (g_iMapSize -11), FALSE ); + SetScrollRange(g_hDlgMiniMap, SB_VERT, 0, (g_iMapSize - miniMapHeight), FALSE); + SetScrollRange(g_hDlgMiniMap, SB_HORZ, 0, (g_iMapSize - miniMapWidth), FALSE); } //背景パーツ最大数拡張 else if( LOWORD(wParam) == IDC_BUTTON_MAP_PARTS ){ @@ -3690,10 +3739,70 @@ LRESULT CALLBACK DialogProcBasicMes( HWND hWnd, UINT message, WPARAM wParam, LPA LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { + + case WM_INITDIALOG: + SetScrollRange(hWnd, SB_VERT, 0, g_iMapSize - miniMapHeight, FALSE); + SetScrollRange(hWnd, SB_HORZ, 0, g_iMapSize - miniMapWidth, FALSE); + break; + + case WM_HSCROLL: + if (LOWORD(wParam) == SB_LINEDOWN) { + if (miniMapXtop < (g_iMapSize - miniMapWidth * 2)) ++miniMapXtop; + SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + } + else if (LOWORD(wParam) == SB_LINEUP) { + if (miniMapXtop > 0) --miniMapXtop; + SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + } + else if (LOWORD(wParam) == SB_THUMBPOSITION) { + miniMapXtop = HIWORD(wParam); + SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + } + else if (LOWORD(wParam) == SB_THUMBTRACK) { + miniMapXtop = HIWORD(wParam); + SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + } + else if (LOWORD(wParam) == SB_PAGEDOWN) { + if (miniMapXtop <= (g_iMapSize - miniMapWidth * 2) - 5) miniMapXtop += 5; + SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + } + else if (LOWORD(wParam) == SB_PAGEUP) { + if (miniMapXtop >= 5) miniMapXtop -= 5; + SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + } + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); + break; + + case WM_VSCROLL: + if (LOWORD(wParam) == SB_LINEDOWN) { + if (miniMapYtop < (g_iMapSize - miniMapHeight * 2)) ++miniMapYtop; + SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + } + else if (LOWORD(wParam) == SB_LINEUP) { + if (miniMapYtop > 0) --miniMapYtop; + SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + } + else if (LOWORD(wParam) == SB_THUMBPOSITION) { + miniMapYtop = HIWORD(wParam); + SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + } + else if (LOWORD(wParam) == SB_THUMBTRACK) { + miniMapYtop = HIWORD(wParam); + SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + } + else if (LOWORD(wParam) == SB_PAGEDOWN) { + if (miniMapYtop <= (g_iMapSize - miniMapHeight * 2) - 5) miniMapYtop += 5; + SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + } + else if (LOWORD(wParam) == SB_PAGEUP) { + if (miniMapYtop >= 5) miniMapYtop -= 5; + SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + } + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); + break; + case WM_PAINT: - HDC hDC; - hDC = GetDC(hWnd); - PaintMiniMap(hDC); + PaintMiniMap(hWnd); break; } return 0; From 8dc4e2efcefdee53bbd47813e6ff6c950ba68d06 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 26 Apr 2019 00:51:34 +0900 Subject: [PATCH 03/31] =?UTF-8?q?=E3=83=9E=E3=83=83=E3=83=97=E7=B7=A8?= =?UTF-8?q?=E9=9B=86=E3=81=AE=E7=8F=BE=E5=9C=A8=E4=BD=8D=E7=BD=AE=E3=82=92?= =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83=E3=83=97=E3=81=A7=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=95=E3=82=8C=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E3=80=81=E3=82=AB=E3=83=BC=E3=82=BD=E3=83=AB?= =?UTF-8?q?=E3=82=AD=E3=83=BC=E7=A7=BB=E5=8B=95=E3=81=A7=E3=83=9F=E3=83=8B?= =?UTF-8?q?=E3=83=9E=E3=83=83=E3=83=97=E3=81=8C=E6=8F=8F=E7=94=BB=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=AA=E3=81=A3?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 55ab0d3..f19ed1f 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -504,18 +504,22 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara if( mapYtop < (g_iMapSize -11) ) ++mapYtop; SetScrollPos( g_hWnd, SB_VERT, mapYtop, 1 ); InvalidateRect( hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if( LOWORD(wParam) == VK_UP ){ if( mapYtop > 0 ) --mapYtop; SetScrollPos( g_hWnd, SB_VERT, mapYtop, 1 ); InvalidateRect( hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if( LOWORD(wParam) == VK_RIGHT ){ if( mapXtop < (g_iMapSize -11) ) ++mapXtop; SetScrollPos( g_hWnd, SB_HORZ, mapXtop, 1 ); InvalidateRect( hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if( LOWORD(wParam) == VK_LEFT ){ if( mapXtop > 0 ) --mapXtop; SetScrollPos( g_hWnd, SB_HORZ, mapXtop, 1 ); InvalidateRect( hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } break; } @@ -1463,6 +1467,7 @@ void PaintMiniMap(HWND hWnd) HDC hDC; PAINTSTRUCT ps; HPEN screenPen, currentPen; + HGDIOBJ currentBrush; hDC = BeginPaint(hWnd, &ps); @@ -1475,8 +1480,10 @@ void PaintMiniMap(HWND hWnd) } // 画面境界線描画 - screenPen = CreatePen(PS_SOLID, 0, RGB(255, 0, 0)); - currentPen = CreatePen(PS_SOLID, 0, RGB(0, 0, 255)); + screenPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); + currentPen = CreatePen(PS_INSIDEFRAME, 1, RGB(255, 0, 0)); + currentBrush = GetStockObject(NULL_BRUSH); + SelectObject(hDC, screenPen); int screenLinePos; @@ -1492,8 +1499,18 @@ void PaintMiniMap(HWND hWnd) DrawLine(hDC, 0, screenLinePos, miniMapWidth * 10, screenLinePos); } } - DeleteObject(screenPen); + + SelectObject(hDC, currentPen); + SelectObject(hDC, currentBrush); + { + const int currentX = (mapXtop - miniMapXtop) * 10; + const int currentY = (mapYtop - miniMapYtop) * 10; + Rectangle(hDC, currentX, currentY, currentX + 109, currentY + 109); + } + DeleteObject(currentPen); + DeleteObject(currentBrush); + EndPaint(hWnd, &ps); } From 0c9d0589038e090daccf5b10ecd0a4e247d00c9f Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sat, 27 Apr 2019 01:17:48 +0900 Subject: [PATCH 04/31] =?UTF-8?q?TRACKMOUSEEVENT=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=80=81=E3=83=9E=E3=82=A6=E3=82=B9=E3=82=AF=E3=83=AA=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=81=A8=E3=83=9E=E3=82=A6=E3=82=B9=E3=83=89=E3=83=A9?= =?UTF-8?q?=E3=83=83=E3=82=B0=E3=81=A7=E3=83=9E=E3=83=83=E3=83=97=E3=81=8C?= =?UTF-8?q?=E7=A7=BB=E5=8B=95=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=AE=9F=E8=A3=85=E3=80=81=E5=A2=83=E7=95=8C=E7=B7=9A?= =?UTF-8?q?=E3=81=AE=E5=A4=AA=E3=81=95=E3=82=92=E5=A4=89=E6=9B=B4=E3=80=81?= =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83=E3=83=97=E3=82=92=E3=83=9E?= =?UTF-8?q?=E3=82=A6=E3=82=B9=E3=83=9B=E3=82=A4=E3=83=BC=E3=83=AB=E3=81=AB?= =?UTF-8?q?=E3=82=88=E3=82=8B=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 119 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 111 insertions(+), 8 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index f19ed1f..9c726f7 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -209,6 +209,9 @@ HBITMAP g_hBitmapAnd = NULL; HBITMAP g_hBitmapOr = NULL; HBITMAP g_hBitmapExtra = NULL; +TRACKMOUSEEVENT g_MapEditTracking; +TRACKMOUSEEVENT g_MiniMapTracking; + int g_AtrSelectChara; //CG選択用 int g_EditMode; @@ -218,6 +221,7 @@ BOOL g_bRestoreMapDialog = FALSE; BOOL g_MapLineFlag = TRUE; //境界線 BOOL g_ObjectNumberFlag = TRUE; //物体パーツ番号表示 BOOL g_MouseDrag = FALSE; //マウスのドラッグ判定用 +BOOL g_MapJumping = FALSE; //ミニマップのマウスドラッグ判定用 BOOL g_bLoadGif = TRUE; //GIFファイルが読み込めるか? BOOL g_bUpdate = FALSE; //更新確認フラグ BOOL g_bInitial = FALSE; //初期化済みか? @@ -433,6 +437,8 @@ LRESULT CALLBACK DialogProcBasicMes( HWND hWnd, UINT message, WPARAM wParam, LPA // ミニマップダイアログプロシージャ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); +void JumpMapFromMiniMap(HWND hWnd, int x, int y); + // 線と四角の描画 void DrawLine( HDC hDC, int x, int y, int x2, int y2 ); void DrawRect( HDC hDC, int x, int y, int x2, int y2 ); @@ -597,6 +603,11 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara } break; + case WM_MOUSELEAVE: + g_MouseDrag = FALSE; + InvalidateRect(hWnd, NULL, FALSE); + break; + case WM_LBUTTONUP: if( g_MouseDrag == FALSE ) break; g_MouseDrag = FALSE; @@ -654,7 +665,10 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara //ドラッグ開始位置セット g_MouseDragX = x; g_MouseDragY = y; - if( (g_EditMode == 0) || (g_EditMode == 1) || (g_EditMode == 4) ) g_MouseDrag = TRUE; + if ((g_EditMode == 0) || (g_EditMode == 1) || (g_EditMode == 4)) { + g_MouseDrag = TRUE; + TrackMouseEvent(&g_MapEditTracking); + } } //ステータスバークリック if( y < 0 ){ @@ -743,6 +757,7 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara SetScrollPos( g_hWnd, SB_VERT, mapYtop, 1 ); } InvalidateRect( g_hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; case WM_MOUSEWHEEL: @@ -766,6 +781,7 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara } } InvalidateRect( g_hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; case WM_HSCROLL: @@ -789,6 +805,7 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara SetScrollPos( g_hWnd, SB_HORZ, mapXtop, 1 ); } InvalidateRect( g_hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; case WM_PAINT: @@ -1207,6 +1224,13 @@ int PASCAL WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int } ReleaseDC( g_hWnd, hDC ); + //マウストラック設定 + g_MapEditTracking = { + sizeof(TRACKMOUSEEVENT), + TME_LEAVE, + g_hWnd + }; + //フォーカス移動 SetFocus( g_hWnd ); //アクセラレーターキー @@ -1480,8 +1504,8 @@ void PaintMiniMap(HWND hWnd) } // 画面境界線描画 - screenPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); - currentPen = CreatePen(PS_INSIDEFRAME, 1, RGB(255, 0, 0)); + screenPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255)); + currentPen = CreatePen(PS_INSIDEFRAME, 2, RGB(255, 0, 0)); currentBrush = GetStockObject(NULL_BRUSH); SelectObject(hDC, screenPen); @@ -3752,7 +3776,6 @@ LRESULT CALLBACK DialogProcBasicMes( HWND hWnd, UINT message, WPARAM wParam, LPA //##------------------------------------------------------------------ // ミニマップダイアログプロシージャ - LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { @@ -3760,11 +3783,40 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case WM_INITDIALOG: SetScrollRange(hWnd, SB_VERT, 0, g_iMapSize - miniMapHeight, FALSE); SetScrollRange(hWnd, SB_HORZ, 0, g_iMapSize - miniMapWidth, FALSE); + g_MiniMapTracking = { + sizeof(TRACKMOUSEEVENT), + TME_LEAVE, + hWnd + }; + break; + + case WM_LBUTTONDOWN: { + g_MapJumping = TRUE; + TrackMouseEvent(&g_MiniMapTracking); + + JumpMapFromMiniMap(hWnd, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); + break; + } + + case WM_MOUSEMOVE: { + if (g_MapJumping == FALSE) { + break; + } + + const int x = GET_X_LPARAM(lParam); + const int y = GET_Y_LPARAM(lParam); + JumpMapFromMiniMap(hWnd, x, y); + break; + } + + case WM_MOUSELEAVE: + case WM_LBUTTONUP: + g_MapJumping = FALSE; break; case WM_HSCROLL: if (LOWORD(wParam) == SB_LINEDOWN) { - if (miniMapXtop < (g_iMapSize - miniMapWidth * 2)) ++miniMapXtop; + if (miniMapXtop < g_iMapSize - miniMapWidth) ++miniMapXtop; SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); } else if (LOWORD(wParam) == SB_LINEUP) { @@ -3780,7 +3832,7 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); } else if (LOWORD(wParam) == SB_PAGEDOWN) { - if (miniMapXtop <= (g_iMapSize - miniMapWidth * 2) - 5) miniMapXtop += 5; + if (miniMapXtop <= g_iMapSize - miniMapWidth - 5) miniMapXtop += 5; SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); } else if (LOWORD(wParam) == SB_PAGEUP) { @@ -3792,7 +3844,7 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case WM_VSCROLL: if (LOWORD(wParam) == SB_LINEDOWN) { - if (miniMapYtop < (g_iMapSize - miniMapHeight * 2)) ++miniMapYtop; + if (miniMapYtop < g_iMapSize - miniMapHeight) ++miniMapYtop; SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); } else if (LOWORD(wParam) == SB_LINEUP) { @@ -3808,7 +3860,7 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); } else if (LOWORD(wParam) == SB_PAGEDOWN) { - if (miniMapYtop <= (g_iMapSize - miniMapHeight * 2) - 5) miniMapYtop += 5; + if (miniMapYtop <= g_iMapSize - miniMapHeight - 5) miniMapYtop += 5; SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); } else if (LOWORD(wParam) == SB_PAGEUP) { @@ -3818,6 +3870,33 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; + case WM_MOUSEWHEEL: { + if (GET_KEYSTATE_WPARAM(wParam) == MK_SHIFT) { + const int x = GET_WHEEL_DELTA_WPARAM(wParam); + if (x < 0) { + if (miniMapXtop < (g_iMapSize - miniMapWidth)) ++miniMapXtop; + SetScrollPos(hWnd, SB_HORZ, miniMapXtop, 1); + } + else if (x > 0) { + if (miniMapXtop > 0) --miniMapXtop; + SetScrollPos(hWnd, SB_HORZ, miniMapXtop, 1); + } + } + else { + const int y = GET_WHEEL_DELTA_WPARAM(wParam); + if (y < 0) { + if (miniMapYtop < (g_iMapSize - miniMapHeight)) ++miniMapYtop; + SetScrollPos(hWnd, SB_VERT, miniMapYtop, 1); + } + else if (y > 0) { + if (miniMapYtop > 0) --miniMapYtop; + SetScrollPos(hWnd, SB_VERT, miniMapYtop, 1); + } + } + InvalidateRect(hWnd, NULL, FALSE); + break; + } + case WM_PAINT: PaintMiniMap(hWnd); break; @@ -3825,6 +3904,30 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA return 0; } +// クリック座標からマップの位置を移動 +void JumpMapFromMiniMap(HWND hWnd, int mouseX, int mouseY) { + const int x = floor(mouseX / 10) + miniMapXtop; + const int y = floor(mouseY / 10) + miniMapYtop; + + mapXtop = x - 5; + mapYtop = y - 5; + if (mapXtop < 0) { + mapXtop = 0; + } + else if (mapXtop + 11 > g_iMapSize) { + mapXtop = g_iMapSize - 11; + } + if (mapYtop < 0) { + mapYtop = 0; + } + else if (mapYtop + 11 > g_iMapSize) { + mapYtop = g_iMapSize - 11; + } + + InvalidateRect(g_hWnd, NULL, FALSE); + InvalidateRect(hWnd, NULL, FALSE); +} + //##------------------------------------------------------------------ // パスワードダイアログプロシージャ From 30f95326661717703bb486f6c979bec979fa80d8 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sun, 28 Apr 2019 01:12:37 +0900 Subject: [PATCH 05/31] =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=81=AE=E8=A1=A8=E7=A4=BA=E5=88=87=E6=9B=BF=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=80=81=E3=82=AF=E3=82=A4=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E3=82=A6=E3=82=A4=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=82=A6=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 15 +-------- WinWwamk.cpp | 91 +++++++++------------------------------------------- resource.h | 6 ++-- 3 files changed, 18 insertions(+), 94 deletions(-) diff --git a/Script2.rc b/Script2.rc index 49131f3..8e90126 100644 --- a/Script2.rc +++ b/Script2.rc @@ -60,9 +60,9 @@ BEGIN BEGIN MENUITEM "境界線の表示切替(&Q)\tCtrl+Q", ID_MENU_LINEDRAW MENUITEM "物体パーツ番号の表示切替(&W)\tCtrl+W", ID_MENU_MARKDRAW - MENUITEM "クイックビューウインドウの表示", ID_MENU_QVIEW, GRAYED MENUITEM "物体パーツ選択ウインドウの表示", ID_MENU_OBJWINDOW, GRAYED MENUITEM "背景パーツ選択ウインドウの表示", ID_MENU_MAPWINDOW, GRAYED + MENUITEM "ミニマップウインドウの表示", ID_MENU_MINIWINDOW, GRAYED END END @@ -716,14 +716,6 @@ BEGIN PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,181,40,14 END -IDD_DIALOG_QVIEW DIALOG 0, 0, 267, 37 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "クイックビューウィンドウ" -FONT 8, "MS ゴシック" -BEGIN - EDITTEXT IDC_EDIT_QVIEW,135,0,132,36,ES_MULTILINE | ES_READONLY | ES_WANTRETURN -END - IDD_DIALOG_LOCALGATE_OBJ DIALOG 0, 0, 138, 99 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "ジャンプゲートの編集" @@ -1007,11 +999,6 @@ BEGIN BOTTOMMARGIN, 153 END - IDD_DIALOG_QVIEW, DIALOG - BEGIN - RIGHTMARGIN, 264 - END - IDD_DIALOG_LOCALGATE_OBJ, DIALOG BEGIN LEFTMARGIN, 7 diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 9c726f7..b9c065f 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -192,7 +192,6 @@ HWND g_hDlgFoundation = NULL; HWND g_hDlgFile; HWND g_hDlgFileSave; HWND g_hDlgCalculate = NULL; -HWND g_hDlgQuickView = NULL; HWND g_hDlgBasicMes = NULL; HWND g_hDlgMiniMap = NULL; HDC g_hmDC = NULL; @@ -428,8 +427,6 @@ LRESULT CALLBACK SelectMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LP // 編集ダイアログプロシージャ LRESULT CALLBACK EditObjectDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); LRESULT CALLBACK EditMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); -// クイックビューダイアログプロシージャ -LRESULT CALLBACK QuickViewDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); // キャラクタCG選択ダイアログプロシージャ LRESULT CALLBACK SelectCGCharaProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); // 基本メッセージダイアログプロシージャ @@ -538,7 +535,6 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara ShowWindow( g_hDlgMap, TRUE ); ShowWindow( g_hDlgSelectChara, TRUE ); ShowWindow( g_hDlgExtra, TRUE ); - ShowWindow( g_hDlgQuickView, TRUE ); ShowWindow(g_hDlgMiniMap, TRUE); } else if( wParam == SIZE_MINIMIZED ){ ShowWindow( g_hDlgSelectObject, FALSE ); @@ -547,7 +543,6 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara ShowWindow( g_hDlgMap, FALSE ); ShowWindow( g_hDlgSelectChara, FALSE ); ShowWindow( g_hDlgExtra, FALSE ); - ShowWindow( g_hDlgQuickView, FALSE ); ShowWindow(g_hDlgMiniMap, FALSE); } break; @@ -585,7 +580,6 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara InvalidateRect( hWnd, NULL, FALSE ); InvalidateRect( g_hDlgSelectMap, NULL, FALSE ); InvalidateRect( g_hDlgSelectObject, NULL, FALSE ); - InvalidateRect( g_hDlgQuickView, NULL, FALSE ); } break; @@ -977,11 +971,6 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara if( g_bUpdate == TRUE ) MessageBox( g_hWnd, "現在の状態のマップを見る場合は、\n一度ファイルに保存しておいてください。", "注意!", MB_OK ); ExecBrowser(); } - //クイックビューウィンドウの表示 - else if( LOWORD(wParam) == ID_MENU_QVIEW ){ - ShowWindow( g_hDlgQuickView, TRUE ); - EnableMenuItem( GetMenu(g_hWnd), ID_MENU_QVIEW, MF_GRAYED ); - } //物体選択ウィンドウの表示 else if( LOWORD(wParam) == ID_MENU_OBJWINDOW ){ ShowWindow( g_hDlgSelectObject, TRUE ); @@ -992,6 +981,11 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara ShowWindow( g_hDlgSelectMap, TRUE ); EnableMenuItem( GetMenu(g_hWnd), ID_MENU_MAPWINDOW, MF_GRAYED ); } + //ミニマップウインドウの表示 + else if (LOWORD(wParam) == ID_MENU_MINIWINDOW) { + ShowWindow(g_hDlgMiniMap, TRUE); + EnableMenuItem(GetMenu(g_hWnd), ID_MENU_MINIWINDOW, MF_GRAYED); + } //パーツのコピー else if( LOWORD(wParam) == ID_MENU_COPY ){ if( g_EditMode == 0 ){ @@ -1204,15 +1198,9 @@ int PASCAL WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int ShowWindow( g_hDlgSelectMap, SW_SHOW ); ShowWindow( g_hDlgSelectObject, SW_SHOW ); - //クイックビュー - g_hDlgQuickView = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_QVIEW), g_hWnd, (DLGPROC)QuickViewDialogProc ); - GetWindowRect( g_hWnd, &rectBox ); - GetWindowRect( g_hDlgQuickView, &rect ); - MoveWindow( g_hDlgQuickView, rectBox.left, rectBox.bottom, rect.right -rect.left, rect.bottom -rect.top, TRUE ); - ShowWindow( g_hDlgQuickView, SW_SHOW ); - //ミニマップ g_hDlgMiniMap = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_MINIMAP), g_hWnd, (DLGPROC)MiniMapDialogProc); + GetWindowRect(g_hWnd, &rectBox); GetWindowRect(g_hDlgMiniMap, &rect); MoveWindow(g_hDlgMiniMap, rectBox.left, rectBox.bottom, rect.right - rect.left, rect.bottom - rect.top, TRUE); ShowWindow(g_hDlgMiniMap, SW_SHOW); @@ -1254,7 +1242,6 @@ int PASCAL WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int //ダイアログメッセージ if( IsDialogMessage( g_hDlgSelectMap, &msg ) ) continue; else if( IsDialogMessage( g_hDlgSelectObject, &msg ) ) continue; - else if( IsDialogMessage( g_hDlgQuickView, &msg ) ) continue; else if( IsDialogMessage( g_hDlgExtra, &msg ) ) continue; else if( IsDialogMessage( g_hDlgCalculate, &msg ) ) continue; else if( IsDialogMessage( g_hDlgFoundation, &msg ) ) continue; @@ -1881,16 +1868,15 @@ BOOL LoadMapData( char *FileName ) } ShowWindow( g_hDlgSelectObject, FALSE ); ShowWindow( g_hDlgSelectMap, FALSE ); - ShowWindow( g_hDlgQuickView, FALSE ); + ShowWindow( g_hDlgMiniMap, FALSE ); //if( g_bInitial == FALSE ) LibLoad(); DialogBox( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_PASSWORD), g_hWnd, (DLGPROC)DialogProcPassword ); ShowWindow( g_hDlgSelectObject, TRUE ); ShowWindow( g_hDlgSelectMap, TRUE ); - ShowWindow( g_hDlgQuickView, TRUE ); + ShowWindow( g_hDlgMiniMap, TRUE ); } //Undoセット SetUndoData(); - InvalidateRect( g_hDlgQuickView, NULL, FALSE ); //暗証番号判定 if( strcmp(g_worldPassword,g_szInputPassword) != 0 ){ @@ -2307,7 +2293,6 @@ LRESULT CALLBACK SelectObjectDialogProc( HWND hWnd, UINT message, WPARAM wParam, if( x < 400 ) g_SelectObjectX = x /40; if( y < 40 * DIALOG_OBJECT_SELECT_LINE ) g_SelectObjectY = g_ScrObject +y /40; InvalidateRect( hWnd, NULL, FALSE ); - InvalidateRect( g_hDlgQuickView, NULL, FALSE ); //現在選択中の物体を設定 g_SelectObjectData = g_SelectObjectX +g_SelectObjectY *10; //編集モード変更 @@ -2436,7 +2421,6 @@ LRESULT CALLBACK SelectMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LP if( x < 400 ) g_SelectMapX = x /40; if( y < 40 * DIALOG_MAP_SELECT_LINE ) g_SelectMapY = g_ScrMap +y /40; InvalidateRect( hWnd, NULL, FALSE ); - InvalidateRect( g_hDlgQuickView, NULL, FALSE ); //現在選択中の背景を設定 g_SelectMapData = g_SelectMapX +g_SelectMapY *10; //編集モード変更 @@ -2629,7 +2613,6 @@ LRESULT CALLBACK EditObjectDialogProc( HWND hWnd, UINT message, WPARAM wParam, L } g_bCancel = FALSE; if( g_bRestoreObjectDialog == TRUE ) DisplayObjectDialog(); - InvalidateRect( g_hDlgQuickView, NULL, FALSE ); return 1; } } @@ -2715,7 +2698,6 @@ LRESULT CALLBACK EditMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPAR } g_bCancel = FALSE; if( g_bRestoreMapDialog == TRUE ) DisplayMapDialog(); - InvalidateRect( g_hDlgQuickView, NULL, FALSE ); return 1; } } @@ -2724,55 +2706,6 @@ LRESULT CALLBACK EditMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPAR -//##------------------------------------------------------------------ -// クイックビューダイアログプロシージャ - -LRESULT CALLBACK QuickViewDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) -{ - switch( message ){ - case WM_PAINT: { - HDC hDC = GetDC( hWnd ); - int type; - if( g_EditMode == 0 ){ - BitBlt( hDC, 5, 4, 40, 40, g_hmDC, mapAttribute[g_SelectMapData][ATR_X], mapAttribute[g_SelectMapData][ATR_Y], SRCCOPY ); - SetDlgItemText( g_hDlgQuickView, IDC_EDIT_QVIEW, g_StrMessage[mapAttribute[g_SelectMapData][ATR_STRING]] ); - //文字表示 - char str[50]; - SetBkColor(hDC, GetSysColor(COLOR_3DFACE)); - sprintf( str, "背景パーツ番号:%3d ", g_SelectMapData ); - TextOut( hDC,50,5,str,strlen(str) ); - type = mapAttribute[g_SelectMapData][ATR_TYPE]; - sprintf( str, "種類:%s ", g_MapName[type] ); - TextOut( hDC,50,26,str,strlen(str) ); - } else if( g_EditMode == 1 ){ - BitBlt( hDC, 5, 4, 40, 40, g_hmDC, objectAttribute[g_SelectObjectData][ATR_X], objectAttribute[g_SelectObjectData][ATR_Y], SRCCOPY ); - SetDlgItemText( g_hDlgQuickView, IDC_EDIT_QVIEW, g_StrMessage[objectAttribute[g_SelectObjectData][ATR_STRING]] ); - //文字表示 - char str[50]; - SetBkColor(hDC, GetSysColor(COLOR_3DFACE)); - sprintf( str, "物体パーツ番号:%3d ", g_SelectObjectData ); - TextOut( hDC,50,5,str,strlen(str) ); - type = objectAttribute[g_SelectObjectData][ATR_TYPE]; - sprintf( str, "種類:%s ", g_ObjectName[type] ); - TextOut( hDC,50,26,str,strlen(str) ); - } - ReleaseDC( hWnd, hDC ); - break; - } - case WM_COMMAND: { - if( wParam == IDCANCEL ){ - EnableMenuItem( GetMenu(g_hWnd), ID_MENU_QVIEW, MF_ENABLED ); - ShowWindow( hWnd, FALSE ); - return 1; - } - break; - } - } - return 0; -} - - - //##------------------------------------------------------------------ // キャラクタCG選択ダイアログプロシージャ @@ -3897,6 +3830,13 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA break; } + case WM_COMMAND: + if (wParam == IDCANCEL) { + EnableMenuItem(GetMenu(g_hWnd), ID_MENU_MINIWINDOW, MF_ENABLED); + ShowWindow(hWnd, FALSE); + } + break; + case WM_PAINT: PaintMiniMap(hWnd); break; @@ -4150,7 +4090,6 @@ void MakeNewMap() InvalidateRect( g_hWnd, NULL, FALSE ); InvalidateRect( g_hDlgSelectObject, NULL, FALSE ); InvalidateRect( g_hDlgSelectMap, NULL, FALSE ); - InvalidateRect( g_hDlgQuickView, NULL, FALSE ); InvalidateRect(g_hDlgMiniMap, NULL, FALSE); MessageBox( g_hWnd, "マップを新規作成しました。\n画面には何も表示されなくなりますがこれで正常です。\n使用するGIF画像ファイルを選択後、\n新たにパーツを作成してマップに配置していってください。", "マップの新規作成", MB_OK ); diff --git a/resource.h b/resource.h index 9680cf7..012fdaf 100644 --- a/resource.h +++ b/resource.h @@ -32,7 +32,6 @@ #define IDD_DIALOG_ITEMCHECK 127 #define IDD_DIALOG_EXTRA2 128 #define IDD_DIALOG_OBJSELECT 129 -#define IDD_DIALOG_QVIEW 130 #define IDD_DIALOG_LOCALGATE_OBJ 131 #define IDD_DIALOG_BASICMES 132 #define IDD_DIALOG1 134 @@ -143,7 +142,6 @@ #define IDC_EDIT_RANDOM9 1074 #define IDC_EDIT_RANDOM10 1075 #define IDC_BUTTON_CANCEL 1076 -#define IDC_EDIT_QVIEW 1078 #define ID_BUTTON_CANCEL 1080 #define IDC_EDIT_BMES_GOLD 1082 #define IDC_EDIT_BMES_ITEM 1083 @@ -163,7 +161,6 @@ #define IDC_EDIT_PARTS_NUMBER 1097 #define IDC_STATIC_PARTS_NUMBER 1098 #define IDC_STATIC_CURRENT_POSITION 1101 -#define IDC_EDIT3 1102 #define IDC_EDIT_CURRENT_POSITION 1102 #define ID_MENUITEM40001 40001 #define ID_MENU_NEW 40001 @@ -208,13 +205,14 @@ #define ID_Menu 40036 #define ID_MARKDRAW 40037 #define ID_MENU_MARKDRAW 40038 +#define ID_MENU_MINIWINDOW 40039 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 136 -#define _APS_NEXT_COMMAND_VALUE 40039 +#define _APS_NEXT_COMMAND_VALUE 40040 #define _APS_NEXT_CONTROL_VALUE 1103 #define _APS_NEXT_SYMED_VALUE 101 #endif From 9f34e460526c57e203519f5652bffa1945e58e2b Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sun, 28 Apr 2019 23:25:16 +0900 Subject: [PATCH 06/31] =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=81=AE=E3=83=9E=E3=82=A6=E3=82=B9=E3=83=9B=E3=82=A4?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=81=AE=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E3=81=A7=E3=80=81=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E8=A1=8C=E6=95=B0=E3=81=AB=E5=BF=9C=E3=81=98=E3=81=A6?= =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB=E9=87=8F=E3=82=92?= =?UTF-8?q?=E5=A4=89=E3=81=88=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index a046291..8edf724 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -3776,27 +3776,40 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA break; case WM_MOUSEWHEEL: { + int scrollSize; + int scrollDelta = GET_WHEEL_DELTA_WPARAM(wParam); + SystemParametersInfo(SPI_GETWHEELSCROLLLINES, NULL, &scrollSize, 0); + // 横方向 if (GET_KEYSTATE_WPARAM(wParam) == MK_SHIFT) { - const int x = GET_WHEEL_DELTA_WPARAM(wParam); - if (x < 0) { - if (miniMapXtop < (g_iMapSize - miniMapWidth)) ++miniMapXtop; - SetScrollPos(hWnd, SB_HORZ, miniMapXtop, 1); + if (scrollDelta < 0) { + miniMapXtop += scrollSize; + if (miniMapXtop > (g_iMapSize - miniMapWidth)) { + miniMapXtop = g_iMapSize - miniMapWidth; + } } - else if (x > 0) { - if (miniMapXtop > 0) --miniMapXtop; - SetScrollPos(hWnd, SB_HORZ, miniMapXtop, 1); + else if (scrollDelta > 0) { + miniMapXtop -= scrollSize; + if (miniMapXtop < 0) { + miniMapXtop = 0; + } } + SetScrollPos(hWnd, SB_HORZ, miniMapXtop, 1); } + // 縦方向 else { - const int y = GET_WHEEL_DELTA_WPARAM(wParam); - if (y < 0) { - if (miniMapYtop < (g_iMapSize - miniMapHeight)) ++miniMapYtop; - SetScrollPos(hWnd, SB_VERT, miniMapYtop, 1); + if (scrollDelta < 0) { + miniMapYtop += scrollSize; + if (miniMapYtop > (g_iMapSize - miniMapHeight)) { + miniMapYtop = g_iMapSize - miniMapHeight; + } } - else if (y > 0) { - if (miniMapYtop > 0) --miniMapYtop; - SetScrollPos(hWnd, SB_VERT, miniMapYtop, 1); + else if (scrollDelta > 0) { + miniMapYtop -= scrollSize; + if (miniMapYtop < 0) { + miniMapYtop = 0; + } } + SetScrollPos(hWnd, SB_VERT, miniMapYtop, 1); } InvalidateRect(hWnd, NULL, FALSE); break; From af15512833253cad5f843461f104bef5384d82e9 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Mon, 29 Apr 2019 00:58:42 +0900 Subject: [PATCH 07/31] =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=82=92=E3=83=93=E3=83=83=E3=83=88=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E6=83=85=E5=A0=B1=E3=81=AB=E4=BF=9D=E5=AD=98=E3=81=97?= =?UTF-8?q?=E3=80=81=E3=81=9D=E3=81=AE=E6=83=85=E5=A0=B1=E3=81=8B=E3=82=89?= =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83=E3=83=97=E3=82=92=E5=87=BA?= =?UTF-8?q?=E5=8A=9B=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=AE=9F?= =?UTF-8?q?=E8=A3=85=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 8edf724..d17e9e3 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -194,12 +194,14 @@ HWND g_hDlgMiniMap = NULL; HDC g_hmDC = NULL; HDC g_hmDCHalf = NULL; HDC g_hmDCMini = NULL; +HDC g_hmDCMiniMap = NULL; HDC g_hmDCAnd = NULL; HDC g_hmDCOr = NULL; HDC g_hmDCExtra = NULL; HBITMAP g_hBitmap = NULL; HBITMAP g_hBitmapHalf = NULL; HBITMAP g_hBitmapMini = NULL; +HBITMAP g_hBitmapMiniMap = NULL; HBITMAP g_hBitmapGif = NULL; HBITMAP g_hBitmapAnd = NULL; HBITMAP g_hBitmapOr = NULL; @@ -415,6 +417,8 @@ void PaintWindow(); void paintMapAll( HDC hDC ); // ステータス描画 void PaintStatus( BOOL flag ); +// ミニマップ作成 +void CreateMiniMap(); // ミニマップ描画 void PaintMiniMap( HWND hWnd ); @@ -641,7 +645,9 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara } } } + CreateMiniMap(); InvalidateRect( hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } break; @@ -875,6 +881,7 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara LoadMapData( g_szSelectFile ); if( g_bErrorPassword == TRUE ) MessageBox( g_hWnd, "暗証番号が違います。", "警告!", MB_OK ); LoadBitmap(); + CreateMiniMap(); } } else if( LOWORD(wParam) == ID_MENU_SAVE ){ @@ -1020,7 +1027,9 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara DestroyWindow( g_hDlgSelectChara ); g_bUpdate = TRUE; RestoreUndoData(); + CreateMiniMap(); InvalidateRect( g_hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); InvalidateRect( g_hDlgSelectObject, NULL, FALSE ); InvalidateRect( g_hDlgSelectMap, NULL, FALSE ); } @@ -1042,7 +1051,9 @@ LRESULT WINAPI MainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara mapObject[mapYtop+y][mapXtop+x] = g_ObjectBuffer[y][x]; } } + CreateMiniMap(); InvalidateRect( g_hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } //ツールの終了 else if( LOWORD(wParam) == ID_MENU_END ){ @@ -1168,6 +1179,7 @@ int PASCAL WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int if( g_bErrorPassword == TRUE ) MessageBox( g_hWnd, "暗証番号が違います。", "警告!", MB_OK ); // ビットマップ読み込み LoadBitmap(); + CreateMiniMap(); // ダイアログ表示 g_hDlgSelectObject = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_EDITOBJECT), g_hWnd, (DLGPROC)SelectObjectDialogProc ); @@ -1256,6 +1268,7 @@ BOOL LoadBitmap() g_hmDC = CreateCompatibleDC( hDC ); g_hmDCHalf = CreateCompatibleDC( hDC ); g_hmDCMini = CreateCompatibleDC(hDC); + g_hmDCMiniMap = CreateCompatibleDC(hDC); g_hmDCAnd = CreateCompatibleDC( hDC ); g_hmDCOr = CreateCompatibleDC( hDC ); @@ -1453,6 +1466,32 @@ void PaintStatus( BOOL flag ) } +// ミニマップ作成 +void CreateMiniMap() +{ + int y, x; + int objNumber, mapNumber; + HDC hDC; + hDC = GetDC(g_hDlgMiniMap); + + // ミニマップのCG領域確保 + if (g_hBitmapMiniMap != NULL) { + DeleteObject(g_hBitmapMiniMap); + } + g_hBitmapMiniMap = CreateCompatibleBitmap(hDC, g_iMapSize * 10, g_iMapSize * 10); + SelectObject(g_hmDCMiniMap, g_hBitmapMiniMap); + + for (y = 0; y < g_iMapSize; y++) { + for (x = 0; x < g_iMapSize; x++) { + mapNumber = map[y][x]; + BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMini, mapAttribute[mapNumber][ATR_X] / 4, mapAttribute[mapNumber][ATR_Y] / 4, SRCCOPY); + // objNumber = mapObject[y][x]; + // BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMini, objectAttribute[objNumber][ATR_X] / 4, mapAttribute[objNumber][ATR_Y] / 4, SRCCOPY); + } + } +} + + //##------------------------------------------------------------------ // ミニマップ描画 @@ -1465,14 +1504,7 @@ void PaintMiniMap(HWND hWnd) HGDIOBJ currentBrush; hDC = BeginPaint(hWnd, &ps); - - for (j = 0; j < miniMapHeight; ++j) { - for (i = 0; i < miniMapWidth; ++i) { - // 背景描画 - mdata = map[j + miniMapYtop][i + miniMapXtop]; - BitBlt(hDC, i * 10, j * 10, 10, 10, g_hmDCMini, mapAttribute[mdata][ATR_X] / 4, mapAttribute[mdata][ATR_Y] / 4, SRCCOPY); - } - } + BitBlt(hDC, 0, 0, miniMapWidth * 10, miniMapHeight * 10, g_hmDCMiniMap, miniMapXtop * 10, miniMapYtop * 10, SRCCOPY); // 画面境界線描画 screenPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255)); @@ -3532,7 +3564,9 @@ LRESULT CALLBACK DialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar } else { if( strcmp(g_mapcgNameBmp,g_mapcgOld) != 0 ) LoadBitmap(); } + CreateMiniMap(); InvalidateRect( g_hWnd, NULL, FALSE ); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); g_bUpdate = TRUE; } //戦闘結果の計算 From a1e166908a5dff0fabb642c8279dc7e2b51f23ac Mon Sep 17 00:00:00 2001 From: Aokashi Date: Thu, 2 May 2019 12:16:34 +0900 Subject: [PATCH 08/31] =?UTF-8?q?=E3=82=AF=E3=82=A4=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E3=82=A6=E3=82=A4=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=82=A6=E3=82=92=E5=BE=A9=E6=B4=BB=E3=80=81=E3=83=9F=E3=83=8B?= =?UTF-8?q?=E3=83=9E=E3=83=83=E3=83=97=E3=82=92=E3=83=91=E3=83=BC=E3=83=84?= =?UTF-8?q?=E9=81=B8=E6=8A=9E=E3=82=A6=E3=82=A4=E3=83=B3=E3=83=89=E3=82=A6?= =?UTF-8?q?=E4=B8=8B=E3=81=AB=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 66 ++++++++++++------ WinWwamk.cpp | 193 +++++++++++++++++++++++++++++++++++++++------------ resource.h | 13 +++- 3 files changed, 206 insertions(+), 66 deletions(-) diff --git a/Script2.rc b/Script2.rc index 4bbbe13..3bdcaf8 100644 --- a/Script2.rc +++ b/Script2.rc @@ -60,6 +60,7 @@ BEGIN BEGIN MENUITEM "境界線の表示切替(&Q)\tCtrl+Q", ID_MENU_LINEDRAW MENUITEM "物体パーツ番号の表示切替(&W)\tCtrl+W", ID_MENU_MARKDRAW + MENUITEM "クイックビューウインドウの表示", ID_MENU_QVIEW, GRAYED MENUITEM "物体パーツ選択ウインドウの表示", ID_MENU_OBJWINDOW, GRAYED MENUITEM "背景パーツ選択ウインドウの表示", ID_MENU_MAPWINDOW, GRAYED MENUITEM "ミニマップウインドウの表示", ID_MENU_MINIWINDOW, GRAYED @@ -129,18 +130,16 @@ END // Dialog // -IDD_DIALOG_EDITMAP DIALOGEX 0, 0, 238, 156 +IDD_DIALOG_EDITMAP DIALOGEX 0, 0, 239, 126 STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "背景パーツ選択" FONT 9, "MS Pゴシック", 0, 0, 0x0 BEGIN - PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,110,138,53,14 - PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,170,138,53,14 - EDITTEXT IDC_EDIT_PARTS_NUMBER,42,140,18,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_BORDER - LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,140,34,8,SS_CENTERIMAGE - LTEXT "左上",IDC_STATIC_CURRENT_POSITION,66,140,15,8 - EDITTEXT IDC_EDIT_CURRENT_POSITION,84,140,18,14,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_BORDER + PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,114,108,53,14 + PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,174,108,53,14 + LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,111,48,8,SS_CENTERIMAGE + LTEXT "左上",IDC_STATIC_CURRENT_POSITION,60,111,48,8 END IDD_DIALOG_MONSTER DIALOG 0, 0, 147, 219 @@ -169,10 +168,10 @@ BEGIN PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,201,40,14 END -IDD_DIALOG_MESSAGE DIALOG 0, 0, 147, 227 +IDD_DIALOG_MESSAGE DIALOGEX 0, 0, 147, 227 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "メッセージキャラクタの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "サウンド番号",IDC_STATIC,5,36,48,8 @@ -315,18 +314,16 @@ BEGIN PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,156,40,14 END -IDD_DIALOG_EDITOBJECT DIALOGEX 0, 0, 238, 156 +IDD_DIALOG_EDITOBJECT DIALOGEX 0, 0, 239, 126 STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "物体パーツ選択" FONT 9, "MS Pゴシック", 0, 0, 0x0 BEGIN - PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,110,138,53,14 - PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,170,138,53,14 - EDITTEXT IDC_EDIT_PARTS_NUMBER,42,140,18,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_BORDER - LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,140,34,8,SS_CENTERIMAGE - LTEXT "左上",IDC_STATIC_CURRENT_POSITION,66,140,15,8 - EDITTEXT IDC_EDIT_CURRENT_POSITION,84,140,18,14,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_BORDER + PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,114,108,53,14 + PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,174,108,53,14 + LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,111,48,8,SS_CENTERIMAGE + LTEXT "左上",IDC_STATIC_CURRENT_POSITION,60,111,48,8 END IDD_DIALOG_URLOBJ DIALOG 0, 0, 212, 99 @@ -685,6 +682,18 @@ BEGIN PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,181,40,14 END +IDD_DIALOG_QVIEW DIALOGEX 0, 0, 267, 37 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "クイックビューウィンドウ" +FONT 8, "MS ゴシック", 0, 0, 0x0 +BEGIN + EDITTEXT IDC_EDIT_QVIEW,135,0,132,36,ES_MULTILINE | ES_READONLY | ES_WANTRETURN + CONTROL "",IDC_PICTURE_QVIEW,"Static",SS_OWNERDRAW,6,6,24,24 + LTEXT "スタティック",IDC_STATIC_QVIEW_NUMBER,36,6,96,8 + LTEXT "スタティック",IDC_STATIC_QVIEW_TYPE,36,18,96,8 +END + IDD_DIALOG_LOCALGATE_OBJ DIALOG 0, 0, 138, 99 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "ジャンプゲートの編集" @@ -729,7 +738,7 @@ BEGIN GROUPBOX "",IDC_STATIC,8,210,196,44 END -IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 303, 145 +IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 277, 133 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "ミニマップ" @@ -750,7 +759,7 @@ BEGIN BEGIN LEFTMARGIN, 7 TOPMARGIN, 7 - BOTTOMMARGIN, 86 + BOTTOMMARGIN, 56 END IDD_DIALOG_MONSTER, DIALOG @@ -821,7 +830,7 @@ BEGIN BEGIN LEFTMARGIN, 7 TOPMARGIN, 7 - BOTTOMMARGIN, 152 + BOTTOMMARGIN, 122 END IDD_DIALOG_URLOBJ, DIALOG @@ -944,6 +953,11 @@ BEGIN BOTTOMMARGIN, 153 END + IDD_DIALOG_QVIEW, DIALOG + BEGIN + RIGHTMARGIN, 264 + END + IDD_DIALOG_LOCALGATE_OBJ, DIALOG BEGIN LEFTMARGIN, 7 @@ -963,9 +977,9 @@ BEGIN IDD_DIALOG_MINIMAP, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 285 + RIGHTMARGIN, 258 TOPMARGIN, 7 - BOTTOMMARGIN, 128 + BOTTOMMARGIN, 115 END END #endif // APSTUDIO_INVOKED @@ -1001,6 +1015,16 @@ BEGIN 0 END +IDD_DIALOG_MESSAGE AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_QVIEW AFX_DIALOG_LAYOUT +BEGIN + 0 +END + #endif // 日本語 (日本) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 96c3a35..7653070 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -98,9 +98,9 @@ #define CHIP_SIZE 40 // パーツ選択ダイアログで表示するパーツ行数 (リソースファイルの変更も忘れずに) -#define DIALOG_OBJECT_SELECT_LINE 5 +#define DIALOG_OBJECT_SELECT_LINE 4 #define DIALOG_OBJECT_SELECT_COLUMN 10 -#define DIALOG_MAP_SELECT_LINE 5 +#define DIALOG_MAP_SELECT_LINE 4 #define DIALOG_MAP_SELECT_COLUMN 10 int DATA_MAP_COUNT; @@ -129,8 +129,8 @@ int mapYtop = 0; int miniMapXtop = 0; int miniMapYtop = 0; -const int miniMapWidth = 44; -const int miniMapHeight = 22; +const int miniMapWidth = 40; +const int miniMapHeight = 20; //ステータス int statusEnergyMax; @@ -143,7 +143,7 @@ int itemDefence; int gameoverXp; int gameoverYp; -//マップデータ +// マップデータ short map[MAP_SIZE_MAX][MAP_SIZE_MAX]; short mapObject[MAP_SIZE_MAX][MAP_SIZE_MAX]; int objectAttribute[PARTS_NUMBER_MAX][OBJECT_ATR_MAX]; @@ -152,7 +152,7 @@ int pointer; int itemBox[12]; int StockObjectAttribute[PARTS_NUMBER_MAX][OBJECT_ATR_MAX]; int StockMapAttribute[PARTS_NUMBER_MAX][MAP_ATR_MAX]; -//Undo用 +// Undo用 short UndoMap[MAP_SIZE_MAX][MAP_SIZE_MAX]; short UndoMapObject[MAP_SIZE_MAX][MAP_SIZE_MAX]; int UndoObjectAttribute[PARTS_NUMBER_MAX][OBJECT_ATR_MAX]; @@ -160,7 +160,7 @@ int UndoMapAttribute[PARTS_NUMBER_MAX][MAP_ATR_MAX]; unsigned char *UndoMapB; -//複写用 +// 複写用 int g_CopyObject[OBJECT_ATR_MAX]; int g_CopyMap[MAP_ATR_MAX]; char g_CopyObjectStr[MESSAGE_STR_MAX]; @@ -168,23 +168,23 @@ char g_CopyMapStr[MESSAGE_STR_MAX]; short g_MapBuffer[SCREEN_CHIP_SIZE][SCREEN_CHIP_SIZE]; short g_ObjectBuffer[SCREEN_CHIP_SIZE][SCREEN_CHIP_SIZE]; -//物体選択用 +// 物体選択用 int g_SelectObjectX, g_SelectObjectY; int g_ScrObject = 0; int g_SelectObjectData; int g_EditObjectData; -//背景選択用 +// 背景選択用 int g_SelectMapX, g_SelectMapY; int g_ScrMap = 0; int g_SelectMapData; int g_EditMapData; -//キャラクタCG選択用 +// キャラクタCG選択用 int g_ScrCGChara = 0; int g_ScrCGCharaMax = 10; int g_hModeSelectChara; int g_iLoadCGHeight = 800; -//汎用 +// 汎用 CDib *g_pDib; HINSTANCE g_hInst; HWND g_hWnd; @@ -196,6 +196,7 @@ HWND g_hDlgSelectObject = NULL; HWND g_hDlgSelectMap = NULL; HWND g_hDlgFoundation = NULL; HWND g_hDlgCalculate = NULL; +HWND g_hDlgQuickView = NULL; HWND g_hDlgBasicMes = NULL; HWND g_hDlgMiniMap = NULL; HDC g_hmDC = NULL; @@ -217,19 +218,19 @@ HBITMAP g_hBitmapExtra = NULL; TRACKMOUSEEVENT g_MapEditTracking; TRACKMOUSEEVENT g_MiniMapTracking; -int g_AtrSelectChara; //CG選択用 +int g_AtrSelectChara; // CG選択用 int g_EditMode; -//フラグ +// フラグ BOOL g_bRestoreObjectDialog = FALSE; BOOL g_bRestoreMapDialog = FALSE; -BOOL g_MapLineFlag = TRUE; //境界線 -BOOL g_ObjectNumberFlag = TRUE; //物体パーツ番号表示 -BOOL g_MouseDrag = FALSE; //マウスのドラッグ判定用 -BOOL g_MapJumping = FALSE; //ミニマップのマウスドラッグ判定用 -BOOL g_bLoadGif = TRUE; //GIFファイルが読み込めるか? -BOOL g_bUpdate = FALSE; //更新確認フラグ -BOOL g_bInitial = FALSE; //初期化済みか? +BOOL g_MapLineFlag = TRUE; // 境界線 +BOOL g_ObjectNumberFlag = TRUE; // 物体パーツ番号表示 +BOOL g_MouseDrag = FALSE; // マウスのドラッグ判定用 +BOOL g_MapJumping = FALSE; // ミニマップのマウスドラッグ判定用 +BOOL g_bLoadGif = TRUE; // GIFファイルが読み込めるか? +BOOL g_bUpdate = FALSE; // 更新確認フラグ +BOOL g_bInitial = FALSE; // 初期化済みか? BOOL g_bFileNotFound; BOOL g_iColorTp; @@ -246,7 +247,7 @@ int g_MouseDragX, g_MouseDragY; int g_MouseOldX, g_MouseOldY; BOOL g_bCancel = FALSE; -//各種上限 +// 各種上限 int g_iMapSize = 501; int g_iMapPartsMax = 200; int g_iObjectPartsMax = 200; @@ -254,12 +255,12 @@ int g_iMapAtrMax; int g_iObjectAtrMax; int g_iMesNumberMax; -//暗証番号用 +// 暗証番号用 BOOL g_bErrorPassword = FALSE; char g_szInputPassword[30]; -//物体データ用 +// 物体データ用 struct StructOBJ { char *Name; int Object; @@ -281,8 +282,8 @@ StructOBJ OBJ[] = { { "ジャンプゲート", OBJECT_LOCALGATE, IDD_DIALOG_LOCALGATE_OBJ }, { "", END } }; -char *g_ObjectName[] = { "通常物体  ","メッセージ  ","URLゲート ","ステータス変化 ","アイテム  ","扉     ","モンスター ","","","","","スコア表示 ","","","物を売る  ","物を買う  ","ランダム選択  ","二者択一  ","ジャンプゲート " }; -char *g_MapName[] = { "道     ","壁     ","ジャンプゲート ","","URLゲート ","アイテム分岐  " }; +char *g_ObjectName[] = { "通常物体","メッセージ","URLゲート","ステータス変化","アイテム","扉","モンスター","","","","","スコア表示","","","物を売る","物を買う","ランダム選択","二者択一","ジャンプゲート" }; +char *g_MapName[] = { "道","壁","ジャンプゲート","","URLゲート","アイテム分岐" }; StructOBJ MAP[] = { { "道", MAP_STREET, IDD_DIALOG_STREET }, @@ -293,7 +294,7 @@ StructOBJ MAP[] = { { "", END } }; -//物体編集ダイアログの内容 +// 物体編集ダイアログの内容 struct StructObject { int Object; int Atr; @@ -439,6 +440,8 @@ LRESULT CALLBACK EditMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPAR LRESULT CALLBACK SelectCGCharaProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); // 基本メッセージダイアログプロシージャ LRESULT CALLBACK DialogProcBasicMes( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); +// クイックビューダイアログプロシージャ +LRESULT CALLBACK QuickViewDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // ミニマップダイアログプロシージャ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); @@ -542,6 +545,7 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ShowWindow(g_hDlgMap, TRUE); ShowWindow(g_hDlgSelectChara, TRUE); ShowWindow(g_hDlgExtra, TRUE); + ShowWindow(g_hDlgQuickView, TRUE); ShowWindow(g_hDlgMiniMap, TRUE); } else if (wParam == SIZE_MINIMIZED) { @@ -551,6 +555,7 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ShowWindow(g_hDlgMap, FALSE); ShowWindow(g_hDlgSelectChara, FALSE); ShowWindow(g_hDlgExtra, FALSE); + ShowWindow(g_hDlgQuickView, FALSE); ShowWindow(g_hDlgMiniMap, FALSE); } break; @@ -586,9 +591,10 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam CheckMenuItem(GetMenu(g_hWnd), ID_MENU_PUTMAP, MF_CHECKED); g_EditMode = 0; } - InvalidateRect( hWnd, NULL, FALSE ); - InvalidateRect( g_hDlgSelectMap, NULL, FALSE ); - InvalidateRect( g_hDlgSelectObject, NULL, FALSE ); + InvalidateRect(hWnd, NULL, FALSE); + InvalidateRect(g_hDlgSelectMap, NULL, FALSE); + InvalidateRect(g_hDlgSelectObject, NULL, FALSE); + InvalidateRect(g_hDlgQuickView, NULL, FALSE); } break; @@ -1030,6 +1036,11 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam } ExecBrowser(); } + // クイックビューウィンドウの表示 + else if (LOWORD(wParam) == ID_MENU_QVIEW) { + ShowWindow(g_hDlgQuickView, TRUE); + EnableMenuItem(GetMenu(g_hWnd), ID_MENU_QVIEW, MF_GRAYED); + } // 物体選択ウィンドウの表示 else if( LOWORD(wParam) == ID_MENU_OBJWINDOW ){ ShowWindow( g_hDlgSelectObject, TRUE ); @@ -1237,12 +1248,19 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C LoadBitmap(); CreateMiniMap(); + RECT rect; + RECT rectBox; // ダイアログ表示 + g_hDlgQuickView = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_QVIEW), g_hWnd, (DLGPROC)QuickViewDialogProc); + GetWindowRect(g_hWnd, &rectBox); + GetWindowRect(g_hDlgQuickView, &rect); + // ダイアログ移動 + MoveWindow(g_hDlgQuickView, rectBox.left, rectBox.bottom, rect.right - rect.left, rect.bottom - rect.top, TRUE); + ShowWindow(g_hDlgQuickView, SW_SHOW); + + // パーツ選択 g_hDlgSelectObject = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_EDITOBJECT), g_hWnd, (DLGPROC)SelectObjectDialogProc); g_hDlgSelectMap = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_EDITMAP), g_hWnd, (DLGPROC)SelectMapDialogProc); - // ダイアログ移動 - RECT rect; - RECT rectBox; GetWindowRect(g_hWnd, &rectBox); GetWindowRect(g_hDlgSelectObject, &rect); MoveWindow(g_hDlgSelectObject, rectBox.right, rectBox.top, rect.right - rect.left, rect.bottom - rect.top, TRUE); @@ -1254,7 +1272,7 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C // ミニマップ g_hDlgMiniMap = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_MINIMAP), g_hWnd, (DLGPROC)MiniMapDialogProc); - GetWindowRect(g_hWnd, &rectBox); + GetWindowRect(g_hDlgSelectMap, &rectBox); GetWindowRect(g_hDlgMiniMap, &rect); MoveWindow(g_hDlgMiniMap, rectBox.left, rectBox.bottom, rect.right - rect.left, rect.bottom - rect.top, TRUE); ShowWindow(g_hDlgMiniMap, SW_SHOW); @@ -1294,6 +1312,7 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C // ダイアログメッセージ if (IsDialogMessage(g_hDlgSelectMap, &msg)) continue; else if (IsDialogMessage(g_hDlgSelectObject, &msg)) continue; + else if (IsDialogMessage(g_hDlgQuickView, &msg)) continue; else if (IsDialogMessage(g_hDlgMiniMap, &msg)) continue; else if (IsDialogMessage(g_hDlgExtra, &msg)) continue; else if (IsDialogMessage(g_hDlgCalculate, &msg)) continue; @@ -1937,27 +1956,30 @@ BOOL LoadMapData(char* FileName) for (i = 0; i < 20; ++i) loadMapString(g_StrMessageSystem[i]); } - //暗証番号のチェック + // 暗証番号のチェック g_bErrorPassword = FALSE; g_szInputPassword[0] = '\0'; int number; if (atoi(g_worldPassword) != 0) { if (g_MapData[DATA_VERSION] >= 29) { - //暗証番号変換 + // 暗証番号変換 number = atoi(g_worldPassword); number = (((number / 10) - 1197) / 17) - 2357; _itoa(number, g_worldPassword, 10); } ShowWindow(g_hDlgSelectObject, FALSE); ShowWindow(g_hDlgSelectMap, FALSE); - ShowWindow( g_hDlgMiniMap, FALSE ); + ShowWindow(g_hDlgQuickView, FALSE); + ShowWindow(g_hDlgMiniMap, FALSE); DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_PASSWORD), g_hWnd, (DLGPROC)DialogProcPassword); ShowWindow(g_hDlgSelectObject, TRUE); ShowWindow(g_hDlgSelectMap, TRUE); - ShowWindow( g_hDlgMiniMap, TRUE ); + ShowWindow(g_hDlgQuickView, TRUE); + ShowWindow(g_hDlgMiniMap, TRUE); } //Undoセット SetUndoData(); + InvalidateRect(g_hDlgQuickView, NULL, FALSE); //暗証番号判定 if (strcmp(g_worldPassword, g_szInputPassword) != 0) { @@ -2293,8 +2315,18 @@ void PaintWindowSelectObject(HWND hWnd) } } - SetDlgItemInt(hWnd, IDC_EDIT_PARTS_NUMBER, g_SelectObjectData, FALSE); - SetDlgItemInt(hWnd, IDC_EDIT_CURRENT_POSITION, g_ScrObject * DIALOG_OBJECT_SELECT_COLUMN, FALSE); + // パーツ番号 + { + CString PartsNumberText; + PartsNumberText.Format("パーツ番号: %d", g_SelectObjectData); + SetDlgItemText(hWnd, IDC_STATIC_PARTS_NUMBER, PartsNumberText); + } + // 表示位置 + { + CString CurrentPositionText; + CurrentPositionText.Format("左上: %d", g_ScrObject * DIALOG_OBJECT_SELECT_COLUMN); + SetDlgItemText(hWnd, IDC_STATIC_CURRENT_POSITION, CurrentPositionText); + } //境界線表示 hpen = CreatePen(PS_SOLID, 0, RGB(255, 0, 0)); @@ -2334,9 +2366,19 @@ void PaintWindowSelectMap(HWND hWnd) BitBlt(hDC, i * CHIP_SIZE, j * CHIP_SIZE, CHIP_SIZE, CHIP_SIZE, g_hmDC, x, y, SRCCOPY); } } - //文字表示 - SetDlgItemInt(hWnd, IDC_EDIT_PARTS_NUMBER, g_SelectMapData, FALSE); - SetDlgItemInt(hWnd, IDC_EDIT_CURRENT_POSITION, g_ScrMap * DIALOG_MAP_SELECT_COLUMN, FALSE); + + // パーツ番号 + { + CString PartsNumberText; + PartsNumberText.Format("パーツ番号: %d", g_SelectMapData); + SetDlgItemText(hWnd, IDC_STATIC_PARTS_NUMBER, PartsNumberText); + } + // 表示位置 + { + CString CurrentPositionText; + CurrentPositionText.Format("左上: %d", g_ScrMap * DIALOG_OBJECT_SELECT_COLUMN); + SetDlgItemText(hWnd, IDC_STATIC_CURRENT_POSITION, CurrentPositionText); + } //境界線表示 hpen = CreatePen(PS_SOLID, 0, RGB(255, 0, 0)); @@ -2374,6 +2416,7 @@ LRESULT CALLBACK SelectObjectDialogProc(HWND hWnd, UINT message, WPARAM wParam, g_SelectObjectY = g_ScrObject + y / CHIP_SIZE; } InvalidateRect(hWnd, NULL, FALSE); + InvalidateRect(g_hDlgQuickView, NULL, FALSE); // 現在選択中の物体を設定 g_SelectObjectData = g_SelectObjectX + g_SelectObjectY * DIALOG_OBJECT_SELECT_COLUMN; // 編集モード変更 @@ -2524,7 +2567,8 @@ LRESULT CALLBACK SelectMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LP if (y < CHIP_SIZE * DIALOG_MAP_SELECT_LINE) { g_SelectMapY = g_ScrMap + y / CHIP_SIZE; } - InvalidateRect( hWnd, NULL, FALSE ); + InvalidateRect(hWnd, NULL, FALSE); + InvalidateRect(g_hDlgQuickView, NULL, FALSE); //現在選択中の背景を設定 g_SelectMapData = g_SelectMapX + g_SelectMapY * DIALOG_MAP_SELECT_COLUMN; //編集モード変更 @@ -2820,6 +2864,7 @@ LRESULT CALLBACK EditMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPAR } g_bCancel = FALSE; if (g_bRestoreMapDialog == TRUE) DisplayMapDialog(); + InvalidateRect(g_hDlgQuickView, NULL, FALSE); return 1; } } @@ -2828,6 +2873,67 @@ LRESULT CALLBACK EditMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPAR +//##------------------------------------------------------------------ +// クイックビューダイアログプロシージャ +LRESULT CALLBACK QuickViewDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) { + case WM_PAINT: { + HDC hDC = GetDC(hWnd); + int* partsImageX; + int* partsImageY; + char* partsMessageString; + int* partsNumber; + char* partsTypeString; + + if (g_EditMode == 0) { + partsImageX = &mapAttribute[g_SelectMapData][ATR_X]; + partsImageY = &mapAttribute[g_SelectMapData][ATR_Y]; + partsMessageString = g_StrMessage[mapAttribute[g_SelectMapData][ATR_STRING]]; + partsNumber = &g_SelectMapData; + partsTypeString = g_MapName[mapAttribute[g_SelectMapData][ATR_TYPE]]; + } + else { + partsImageX = &objectAttribute[g_SelectObjectData][ATR_X]; + partsImageY = &objectAttribute[g_SelectObjectData][ATR_Y]; + partsMessageString = g_StrMessage[objectAttribute[g_SelectObjectData][ATR_STRING]]; + partsNumber = &g_SelectObjectData; + partsTypeString = g_ObjectName[objectAttribute[g_SelectObjectData][ATR_TYPE]]; + } + + { + HWND pictureItem = GetDlgItem(hWnd, IDC_PICTURE_QVIEW); + HDC pictureDC = GetDC(pictureItem); + BitBlt(pictureDC, 0, 0, CHIP_SIZE, CHIP_SIZE, g_hmDC, *partsImageX, *partsImageY, SRCCOPY); + } + SetDlgItemText(g_hDlgQuickView, IDC_EDIT_QVIEW, partsMessageString); + + // パーツ番号 + CString partsNumberText; + partsNumberText.Format("背景パーツ %4d番", *partsNumber); + SetDlgItemText(g_hDlgQuickView, IDC_STATIC_QVIEW_NUMBER, partsNumberText); + + // 種類 + CString partsTypeText; + partsTypeText.Format("種類: %s", partsTypeString); + SetDlgItemText(g_hDlgQuickView, IDC_STATIC_QVIEW_TYPE, partsTypeText); + ReleaseDC(hWnd, hDC); + + break; + } + case WM_COMMAND: { + if (wParam == IDCANCEL) { + EnableMenuItem(GetMenu(g_hWnd), ID_MENU_QVIEW, MF_ENABLED); + ShowWindow(hWnd, FALSE); + return 1; + } + break; + } + } + return 0; +} + + //##------------------------------------------------------------------ // キャラクタCG選択ダイアログプロシージャ @@ -4228,6 +4334,7 @@ void MakeNewMap() InvalidateRect(g_hWnd, NULL, FALSE); InvalidateRect(g_hDlgSelectObject, NULL, FALSE); InvalidateRect(g_hDlgSelectMap, NULL, FALSE); + InvalidateRect(g_hDlgQuickView, NULL, FALSE); InvalidateRect(g_hDlgMiniMap, NULL, FALSE); MessageBox(g_hWnd, "マップを新規作成しました。\n画面には何も表示されなくなりますがこれで正常です。\n使用するGIF画像ファイルを選択後、\n新たにパーツを作成してマップに配置していってください。", "マップの新規作成", MB_OK); diff --git a/resource.h b/resource.h index fd3a2f3..f58c78c 100644 --- a/resource.h +++ b/resource.h @@ -29,6 +29,7 @@ #define IDD_DIALOG_ITEMCHECK 127 #define IDD_DIALOG_EXTRA2 128 #define IDD_DIALOG_OBJSELECT 129 +#define IDD_DIALOG_QVIEW 130 #define IDD_DIALOG_LOCALGATE_OBJ 131 #define IDD_DIALOG_BASICMES 132 #define IDD_DIALOG1 134 @@ -137,6 +138,7 @@ #define IDC_EDIT_RANDOM9 1074 #define IDC_EDIT_RANDOM10 1075 #define IDC_BUTTON_CANCEL 1076 +#define IDC_EDIT_QVIEW 1078 #define ID_BUTTON_CANCEL 1080 #define IDC_EDIT_BMES_GOLD 1082 #define IDC_EDIT_BMES_ITEM 1083 @@ -157,6 +159,13 @@ #define IDC_STATIC_PARTS_NUMBER 1098 #define IDC_STATIC_CURRENT_POSITION 1101 #define IDC_EDIT_CURRENT_POSITION 1102 +#define IDC_EDIT_PARTS_MESSAGE 1103 +#define IDC_PICTURE_PARTS_IMAGE 1104 +#define IDC_EDIT1 1105 +#define IDC_PICTURE_QVIEW 1106 +#define IDC_STATIC_QVIEW 1107 +#define IDC_STATIC_QVIEW_NUMBER 1107 +#define IDC_STATIC_QVIEW_TYPE 1108 #define ID_MENUITEM40001 40001 #define ID_MENU_NEW 40001 #define ID_MENUITEM40002 40002 @@ -206,9 +215,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 136 +#define _APS_NEXT_RESOURCE_VALUE 138 #define _APS_NEXT_COMMAND_VALUE 40040 -#define _APS_NEXT_CONTROL_VALUE 1103 +#define _APS_NEXT_CONTROL_VALUE 1109 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif From 403bae7f15724f68d1b4c739a54abb63d3325293 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Thu, 2 May 2019 19:58:45 +0900 Subject: [PATCH 09/31] =?UTF-8?q?strcpy=E3=82=92strcpy=5Fs=E3=81=AB?= =?UTF-8?q?=E5=B7=AE=E3=81=97=E6=9B=BF=E3=81=88=E3=80=81=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=83=95=E3=82=A1=E6=96=87=E5=AD=97=E5=88=97=E3=81=AE=E9=95=B7?= =?UTF-8?q?=E3=81=95=E3=82=92=E6=B1=BA=E3=82=81=E3=82=8B=E5=AE=9A=E6=95=B0?= =?UTF-8?q?=E3=82=92=E6=96=B0=E8=A8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 85 ++++++++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 8fcf2c4..4ef78d4 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -92,6 +92,11 @@ #define MAP_ATR_MAX 60 #define OBJECT_ATR_MAX 60 +// バッファ文字列の最大長 +#define BUFFER_STR_MAX 100 +#define FILE_PATH_STR_MAX 250 +#define NUMBER_STR_MAX 30 + // 1画面の1辺のチップサイズ #define SCREEN_CHIP_SIZE 11 // 1チップのサイズ (ピクセル単位) @@ -116,11 +121,11 @@ int charaX, charaY; //メッセージ用バッファ char g_StrMessage[MESSAGE_NUMBER_MAX][MESSAGE_STR_MAX]; char g_StrMessageSystem[20][MESSAGE_STR_MAX]; -char g_worldName[100]; -char g_worldPassword[100]; -char g_mapcgName[100]; -char g_mapcgNameBmp[100]; -char g_mapcgOld[100]; +char g_worldName[BUFFER_STR_MAX]; +char g_worldPassword[BUFFER_STR_MAX]; +char g_mapcgName[BUFFER_STR_MAX]; +char g_mapcgNameBmp[BUFFER_STR_MAX]; +char g_mapcgOld[BUFFER_STR_MAX]; //マップ位置 int mapX, mapY; @@ -224,10 +229,10 @@ BOOL g_iColorTp; char g_MapData[FILE_DATA_MAX]; char PressData[FILE_DATA_MAX]; -char g_szSettingFile[250] = "./WinWwamk.ini"; //設定ファイル名 -char g_szSelectFile[250] = "wwamap.dat"; //ファイル名 +char g_szSettingFile[FILE_PATH_STR_MAX] = "./WinWwamk.ini"; //設定ファイル名 +char g_szSelectFile[FILE_PATH_STR_MAX] = "wwamap.dat"; //ファイル名 char g_szTitleName[] = "WWA Wingマップ作成ツール Ver3.1.8"; -char g_szSelectDir[250]; +char g_szSelectDir[FILE_PATH_STR_MAX]; int g_MouseX, g_MouseY; int g_MouseDragX, g_MouseDragY; int g_MouseOldX, g_MouseOldY; @@ -873,8 +878,8 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam // データのロード、セーブ if (LOWORD(wParam) == ID_MENU_LOAD) { int i; - char FileName[250] = "*.dat"; - char CurrentDir[250]; + char FileName[FILE_PATH_STR_MAX] = "*.dat"; + char CurrentDir[FILE_PATH_STR_MAX]; OPENFILENAME ofn; GetCurrentDirectory(sizeof(CurrentDir), CurrentDir); @@ -891,9 +896,9 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam if (GetOpenFileName(&ofn)) { //ディレクトリ検出 for (i = strlen(FileName); i > 0; --i) if (FileName[i] == '\\') break; - strcpy(g_szSelectDir, FileName); + strcpy_s(g_szSelectDir, FILE_PATH_STR_MAX, FileName); g_szSelectDir[i + 1] = '\0'; - strcpy(g_szSelectFile, (FileName + i + 1)); + strcpy_s(g_szSelectFile, FILE_PATH_STR_MAX, (FileName + i + 1)); //データ読み込み LoadMapData(g_szSelectFile); if (g_bErrorPassword == TRUE) MessageBox(g_hWnd, "暗証番号が違います。", "警告!", MB_OK); @@ -902,8 +907,8 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam } else if (LOWORD(wParam) == ID_MENU_SAVE) { int i; - char FileName[250] = "*.dat"; - char CurrentDir[250]; + char FileName[FILE_PATH_STR_MAX] = "*.dat"; + char CurrentDir[FILE_PATH_STR_MAX]; OPENFILENAME ofn; GetCurrentDirectory(sizeof(CurrentDir), CurrentDir); @@ -920,9 +925,9 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam if (GetSaveFileName(&ofn)) { //ディレクトリ検出 for (i = strlen(FileName); i > 0; --i) if (FileName[i] == '\\') break; - strcpy(g_szSelectDir, FileName); + strcpy_s(g_szSelectDir, FILE_PATH_STR_MAX, FileName); g_szSelectDir[i + 1] = '\0'; - strcpy(g_szSelectFile, (FileName + i + 1)); + strcpy_s(g_szSelectFile, FILE_PATH_STR_MAX, (FileName + i + 1)); //データ保存 SaveMapData(g_szSelectFile); } @@ -1016,12 +1021,12 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam else if (LOWORD(wParam) == ID_MENU_COPY) { if (g_EditMode == 0) { for (i = 0; i < MAP_ATR_MAX; ++i) g_CopyMap[i] = mapAttribute[g_SelectMapData][i]; - strcpy(g_CopyMapStr, g_StrMessage[mapAttribute[g_SelectMapData][ATR_STRING]]); + strcpy_s(g_CopyMapStr, MESSAGE_STR_MAX, g_StrMessage[mapAttribute[g_SelectMapData][ATR_STRING]]); g_CopyMap[ATR_STRING] = 0; } else if (g_EditMode == 1) { for (i = 0; i < OBJECT_ATR_MAX; ++i) g_CopyObject[i] = objectAttribute[g_SelectObjectData][i]; - strcpy(g_CopyObjectStr, g_StrMessage[objectAttribute[g_SelectObjectData][ATR_STRING]]); + strcpy_s(g_CopyObjectStr, MESSAGE_STR_MAX, g_StrMessage[objectAttribute[g_SelectObjectData][ATR_STRING]]); g_CopyObject[ATR_STRING] = 0; } } @@ -1184,9 +1189,9 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C } // ファイル名抽出 for (i = strlen(pszCmdLine); i > 0; --i) if (pszCmdLine[i] == '\\') break; - strcpy(g_szSelectFile, (pszCmdLine + i + 1)); + strcpy_s(g_szSelectFile, FILE_PATH_STR_MAX, (pszCmdLine + i + 1)); // ディレクトリ移動 - strcpy(g_szSelectDir, pszCmdLine); + strcpy_s(g_szSelectDir, FILE_PATH_STR_MAX, pszCmdLine); g_szSelectDir[i + 1] = '\0'; SetCurrentDirectory(g_szSelectDir); } @@ -1287,8 +1292,8 @@ BOOL LoadBitmap() SelectObject(g_hmDCExtra, g_hBitmapExtra); } // 現在のビットマップ名記録 - if (g_bLoadGif == TRUE) strcpy(g_mapcgOld, g_mapcgName); - else strcpy(g_mapcgOld, g_mapcgNameBmp); + if (g_bLoadGif == TRUE) strcpy_s(g_mapcgOld, BUFFER_STR_MAX, g_mapcgName); + else strcpy_s(g_mapcgOld, BUFFER_STR_MAX, g_mapcgNameBmp); // 読み出し中ダイアログ表示 Rectangle(hDC, 0, 0, CHIP_SIZE * SCREEN_CHIP_SIZE, CHIP_SIZE * SCREEN_CHIP_SIZE); @@ -1299,7 +1304,7 @@ BOOL LoadBitmap() if (g_bFileNotFound == TRUE) return FALSE; // GIF読み込み失敗時 if (g_bLoadGif == FALSE) { - strcpy(g_mapcgOld, g_mapcgNameBmp); + strcpy_s(g_mapcgOld, BUFFER_STR_MAX, g_mapcgNameBmp); if (g_pDib->ReadFile(g_mapcgNameBmp) == FALSE) { MessageBox(g_hWnd, "このマップデータに対応する画像ファイル(256色BMPファイル)が読み込めません。\n「編集−基本設定の編集」で256色BMPファイルを指定してください。\n\nこのシステムでは、GIFファイルは直接読み込めないので、\n編集用に256色BMPファイルが必要になります。", "BMPファイル読み込み失敗", MB_OK); // デバイス解放 @@ -2921,7 +2926,7 @@ void DisplayObjectDialog() int i; int number; char str[MESSAGE_STR_MAX]; - char strCut[50]; + char strCut[BUFFER_STR_MAX]; int id; int position; int type; @@ -2986,13 +2991,13 @@ void DisplayObjectDialog() || (type == OBJECT_STATUS) || (type == OBJECT_DOOR) || (type == OBJECT_SELL) || (type == OBJECT_BUY) || (type == OBJECT_SELECT) ){ SetDlgItemText( g_hDlgObject, IDC_EDIT_MESSAGE, g_StrMessage[objectAttribute[g_EditObjectData][ATR_STRING]] ); } else if( type == OBJECT_URLGATE ){ - strcpy( str, g_StrMessage[objectAttribute[g_EditObjectData][ATR_STRING]] ); + strcpy_s(str, MESSAGE_STR_MAX, g_StrMessage[objectAttribute[g_EditObjectData][ATR_STRING]]); //文字列分割 for( i = 0 ; i < (int)strlen(str) ; ++i ){ if( (str[i] == 0x0D) && (str[i+1] == 0x0A) ){ str[i] = '\0'; - strcpy( strCut, str+i+2 ); - SetDlgItemText( g_hDlgObject, IDC_EDIT_TARGET, strCut ); + strcpy_s(strCut, BUFFER_STR_MAX, str + i + 2); + SetDlgItemText(g_hDlgObject, IDC_EDIT_TARGET, strCut); break; } } @@ -3127,12 +3132,12 @@ void DisplayMapDialog() if( (type == MAP_STREET) || (type == MAP_WALL) || (type == MAP_ITEMCHECK) ){ SetDlgItemText( g_hDlgMap, IDC_EDIT_MESSAGE, g_StrMessage[mapAttribute[g_EditMapData][ATR_STRING]] ); } else if( type == MAP_URLGATE ){ - strcpy( str, g_StrMessage[mapAttribute[g_EditMapData][ATR_STRING]] ); + strcpy_s(str, MESSAGE_STR_MAX, g_StrMessage[mapAttribute[g_EditMapData][ATR_STRING]]); //文字列分割 for( i = 0 ; i < (int)strlen(str) ; ++i ){ if( (str[i] == 0x0D) && (str[i+1] == 0x0A) ){ str[i] = '\0'; - strcpy( strCut, str+i+2 ); + strcpy_s(strCut, BUFFER_STR_MAX, str + i + 2); SetDlgItemText( g_hDlgMap, IDC_EDIT_TARGET, strCut ); break; } @@ -3200,7 +3205,7 @@ void SetObjectData( HWND hWnd, int charaNumber ) int number; int length; char str[MESSAGE_STR_MAX]; - char strCut[50]; + char strCut[BUFFER_STR_MAX]; int type = objectAttribute[charaNumber][ATR_TYPE]; int position; @@ -3221,7 +3226,7 @@ void SetObjectData( HWND hWnd, int charaNumber ) } else if( type == OBJECT_URLGATE ){ GetDlgItemText( hWnd, IDC_EDIT_URL, str, MESSAGE_STR_MAX ); GetDlgItemText( hWnd, IDC_EDIT_TARGET, strCut, 50 ); - if( (strstr(strCut,"expand") != 0) || (strstr(strCut,"EXPAND") != 0) ) strcpy( strCut, "EXPAND" ); + if ((strstr(strCut, "expand") != 0) || (strstr(strCut, "EXPAND") != 0)) strcpy_s(strCut, BUFFER_STR_MAX, "EXPAND"); if( strlen(strCut) != 0 ){ length = strlen(str); str[length] = 0x0D; @@ -3315,7 +3320,7 @@ void SetMapData( HWND hWnd, int charaNumber ) } else if( type == MAP_URLGATE ){ GetDlgItemText( hWnd, IDC_EDIT_URL, str, MESSAGE_STR_MAX ); GetDlgItemText( hWnd, IDC_EDIT_TARGET, strCut, 50 ); - if( (strstr(strCut,"expand") != 0) || (strstr(strCut,"EXPAND") != 0) ) strcpy( strCut, "EXPAND" ); + if ((strstr(strCut, "expand") != 0) || (strstr(strCut, "EXPAND") != 0)) strcpy_s(strCut, BUFFER_STR_MAX, "EXPAND"); if( strlen(strCut) != 0 ){ length = strlen(str); str[length] = 0x0D; @@ -3436,13 +3441,13 @@ void SetAppearChara( int mapNumber, BOOL flag ) int i; int dataChara; int x, y; - char str[30]; - char partsNumberStr[30]; + char str[NUMBER_STR_MAX]; + char partsNumberStr[NUMBER_STR_MAX]; //拡張キャラクタ・データコンバート for( i = 0 ; i < 10 ; ++i ){ GetDlgItemText( g_hDlgExtra, g_EditId[i], str, sizeof(str) ); - strcpy( partsNumberStr, str ); + strcpy_s(partsNumberStr, NUMBER_STR_MAX, str); // プラスマイナス記号によるパーツ番号インクリメント・デクリメント if (str[0] == '+') { @@ -3732,7 +3737,9 @@ LRESULT CALLBACK DialogProcBasicMes(HWND hWnd, UINT message, WPARAM wParam, LPAR //指定文字列修正 int i; for (i = 5; i <= 9; ++i) { - if ((strstr(g_StrMessage[i], "blank") != 0) || (strstr(g_StrMessage[i], "BLANK") != 0) || (strstr(g_StrMessage[i], "BLANK") != 0)) strcpy(g_StrMessage[i], "BLANK"); + if ((strstr(g_StrMessage[i], "blank") != 0) || (strstr(g_StrMessage[i], "BLANK") != 0) || (strstr(g_StrMessage[i], "BLANK") != 0)) { + strcpy_s(g_StrMessage[i], MESSAGE_STR_MAX, "BLANK"); + } } DestroyWindow(hWnd); return 1; @@ -3901,7 +3908,7 @@ void SetMessageData(int* point, char* str) } *point = number; //メッセージ格納 - strcpy(g_StrMessage[*point], str); + strcpy_s(g_StrMessage[*point], MESSAGE_STR_MAX, str); } else if (strlen(str) == 0) { g_StrMessage[*point][0] = '\0'; @@ -3909,7 +3916,7 @@ void SetMessageData(int* point, char* str) } else { //メッセージ格納 - strcpy(g_StrMessage[*point], str); + strcpy_s(g_StrMessage[*point], MESSAGE_STR_MAX, str); } } @@ -3957,7 +3964,7 @@ void MakeNewMap() g_mapcgNameBmp[0] = '\0'; g_mapcgName[0] = '\0'; g_mapcgOld[0] = '\0'; - strcpy(g_szSelectFile, "newmap.dat"); + strcpy_s(g_szSelectFile, FILE_PATH_STR_MAX, "newmap.dat"); //タイトルテキスト設定 char sTitle[100]; sprintf(sTitle, "%s [%s]", g_szTitleName, g_szSelectFile); From 4a2cf9cdb0ea9d18cf9cf0fc5c8f73a666ef7e12 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 00:16:23 +0900 Subject: [PATCH 10/31] =?UTF-8?q?=E3=83=91=E3=83=BC=E3=83=84=E7=95=AA?= =?UTF-8?q?=E5=8F=B7=E3=81=AEStatic=20Text=E3=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=80=81=E4=B8=80=E9=83=A8=E3=81=AE=E9=96=A2=E6=95=B0=E3=82=92?= =?UTF-8?q?=E3=83=90=E3=83=83=E3=83=95=E3=82=A1=E7=AF=84=E5=9B=B2=E4=BB=98?= =?UTF-8?q?=E3=81=8D=E3=81=AE=E3=82=82=E3=81=AE=E3=81=AB=E5=B7=AE=E3=81=97?= =?UTF-8?q?=E6=9B=BF=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 170 ++++++++++++++++++++++++++++++++++++---------- WinWwamk.cpp | 186 ++++++++++++++++++++++++++------------------------- resource.h | 5 +- 3 files changed, 235 insertions(+), 126 deletions(-) diff --git a/Script2.rc b/Script2.rc index bb43e61..8187ce3 100644 --- a/Script2.rc +++ b/Script2.rc @@ -143,10 +143,10 @@ BEGIN EDITTEXT IDC_EDIT_CURRENT_POSITION,84,140,18,14,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_BORDER END -IDD_DIALOG_MONSTER DIALOG 0, 0, 147, 219 +IDD_DIALOG_MONSTER DIALOGEX 0, 0, 147, 219 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "モンスターの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "生命力",IDC_STATIC,5,36,25,8 @@ -167,12 +167,13 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,121,143,77,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,201,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,201,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,75,8 END -IDD_DIALOG_MESSAGE DIALOG 0, 0, 147, 227 +IDD_DIALOG_MESSAGE DIALOGEX 0, 0, 147, 227 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "メッセージキャラクタの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "サウンド番号",IDC_STATIC,5,36,48,8 @@ -185,6 +186,7 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,89,143,116,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,209,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,209,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,75,8 END IDD_DIALOG_CALCULATE DIALOG 0, 0, 189, 107 @@ -223,10 +225,10 @@ FONT 9, " BEGIN END -IDD_DIALOG_STATUS DIALOG 0, 0, 147, 219 +IDD_DIALOG_STATUS DIALOGEX 0, 0, 147, 219 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "ステータス変化アイテムの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "生命力",IDC_STATIC,5,36,25,8 @@ -245,12 +247,13 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,105,145,92,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,201,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,201,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,75,8 END -IDD_DIALOG_ITEM DIALOG 0, 0, 147, 219 +IDD_DIALOG_ITEM DIALOGEX 0, 0, 147, 219 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "アイテムの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "攻撃力",IDC_STATIC,5,36,25,8 @@ -269,12 +272,13 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,121,143,77,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,201,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,201,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,66,8 END -IDD_DIALOG_DOOR DIALOG 0, 0, 147, 219 +IDD_DIALOG_DOOR DIALOGEX 0, 0, 147, 219 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "扉の編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "扉の種類",IDC_STATIC,5,36,35,8 @@ -291,12 +295,13 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,121,143,77,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,201,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,201,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,66,8 END -IDD_DIALOG_SCORE DIALOG 0, 0, 147, 173 +IDD_DIALOG_SCORE DIALOGEX 0, 0, 147, 173 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "スコア表示キャラクタの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "生命力×",-1,5,36,33,8 @@ -313,6 +318,7 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,91,143,61,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,156,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,156,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,66,8 END IDD_DIALOG_EDITOBJECT DIALOGEX 0, 0, 238, 156 @@ -329,10 +335,10 @@ BEGIN EDITTEXT IDC_EDIT_CURRENT_POSITION,84,140,18,14,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_BORDER END -IDD_DIALOG_URLOBJ DIALOG 0, 0, 212, 99 +IDD_DIALOG_URLOBJ DIALOGEX 0, 0, 212, 99 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "URLゲートの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "リンク先のURLアドレス",-1,62,36,99,8 @@ -341,12 +347,13 @@ BEGIN EDITTEXT IDC_EDIT_TARGET,51,63,61,14,ES_AUTOHSCROLL DEFPUSHBUTTON "決定",IDOK,70,81,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,110,81,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,75,8 END -IDD_DIALOG_SELL DIALOG 0, 0, 147, 228 +IDD_DIALOG_SELL DIALOGEX 0, 0, 147, 228 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "物を売るキャラクタの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "販売金額",IDC_STATIC,5,36,34,8 @@ -367,12 +374,13 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,136,143,69,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,210,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,210,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,75,8 END -IDD_DIALOG_BUY DIALOG 0, 0, 147, 222 +IDD_DIALOG_BUY DIALOGEX 0, 0, 147, 222 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "物を買うキャラクタの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "買い取り金額",IDC_STATIC,5,36,50,8 @@ -387,12 +395,13 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,106,143,93,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,204,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,204,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,73,8 END -IDD_DIALOG_NORMAL DIALOG 0, 0, 138, 85 +IDD_DIALOG_NORMAL DIALOGEX 0, 0, 138, 85 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "通常物体の編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "通行区分",IDC_STATIC,5,36,36,8 @@ -401,6 +410,7 @@ BEGIN COMBOBOX IDC_COMBO_MOVE,42,48,73,120,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "決定",IDOK,35,66,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,66,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,66,8 END IDD_DIALOG_EXTRA DIALOG 0, 0, 115, 132 @@ -503,10 +513,10 @@ BEGIN PUSHBUTTON "背景パーツ拡張",IDC_BUTTON_MAP_PARTS,112,189,57,14 END -IDD_DIALOG_STREET DIALOG 0, 0, 147, 213 +IDD_DIALOG_STREET DIALOGEX 0, 0, 147, 213 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "道の編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_MAP,64,2,73,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "待ち時間",IDC_STATIC,7,36,33,8 @@ -519,12 +529,13 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,91,143,101,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,196,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,196,40,14 + LTEXT "背景番号:",IDC_STATIC_NUMBER,65,20,66,8 END -IDD_DIALOG_LOCALGATE DIALOG 0, 0, 138, 99 +IDD_DIALOG_LOCALGATE DIALOGEX 0, 0, 138, 99 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "ジャンプゲートの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_MAP,64,2,73,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "ジャンプ先 X座標",-1,5,36,58,8 @@ -535,12 +546,13 @@ BEGIN EDITTEXT IDC_EDIT_SOUND,57,63,24,12,ES_AUTOHSCROLL DEFPUSHBUTTON "決定",IDOK,35,82,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,82,40,14 + LTEXT "背景番号:",IDC_STATIC_NUMBER,65,20,66,8 END -IDD_DIALOG_URLMAP DIALOG 0, 0, 212, 99 +IDD_DIALOG_URLMAP DIALOGEX 0, 0, 212, 99 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "URLゲートの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_MAP,64,2,73,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "リンク先のURLアドレス",-1,62,36,99,8 @@ -549,18 +561,20 @@ BEGIN EDITTEXT IDC_EDIT_TARGET,51,63,61,14,ES_AUTOHSCROLL DEFPUSHBUTTON "決定",IDOK,70,81,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,110,81,40,14 + LTEXT "背景番号:",IDC_STATIC_NUMBER,65,20,66,8 END -IDD_DIALOG_WALL DIALOG 0, 0, 147, 169 +IDD_DIALOG_WALL DIALOGEX 0, 0, 147, 169 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "壁の編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_MAP,64,2,73,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP EDITTEXT IDC_EDIT_MESSAGE,2,46,143,101,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL LTEXT "表示メッセージ",IDC_STATIC,40,36,60,8 DEFPUSHBUTTON "決定",IDOK,35,151,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,151,40,14 + LTEXT "背景番号:",IDC_STATIC_NUMBER,65,20,66,8 END IDD_DIALOG_PASSWORD DIALOG 0, 0, 90, 69 @@ -575,10 +589,10 @@ BEGIN LTEXT "暗証番号",IDC_STATIC,8,35,28,8 END -IDD_DIALOG_RANDOM DIALOG 0, 0, 138, 99 +IDD_DIALOG_RANDOM DIALOGEX 0, 0, 138, 99 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "ランダムパーツの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "選択するパーツの物体番号",IDC_STATIC,5,36,117,8 @@ -594,6 +608,7 @@ BEGIN EDITTEXT IDC_EDIT_RANDOM10,103,63,20,12,ES_AUTOHSCROLL DEFPUSHBUTTON "決定",IDOK,30,81,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,70,82,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,66,8 END IDD_DIALOG_ITEMCHECK DIALOG 0, 0, 138, 159 @@ -669,10 +684,10 @@ BEGIN LTEXT "種類",IDC_STATIC,7,135,15,8 END -IDD_DIALOG_OBJSELECT DIALOG 0, 0, 147, 200 +IDD_DIALOG_OBJSELECT DIALOGEX 0, 0, 147, 200 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "二者択一パーツの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "サウンド番号",IDC_STATIC,5,36,48,8 @@ -683,6 +698,7 @@ BEGIN EDITTEXT IDC_EDIT_MESSAGE,2,76,143,101,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL DEFPUSHBUTTON "決定",IDOK,35,181,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,75,181,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,66,8 END IDD_DIALOG_QVIEW DIALOG 0, 0, 267, 37 @@ -693,10 +709,10 @@ BEGIN EDITTEXT IDC_EDIT_QVIEW,135,0,132,36,ES_MULTILINE | ES_READONLY | ES_WANTRETURN END -IDD_DIALOG_LOCALGATE_OBJ DIALOG 0, 0, 138, 99 +IDD_DIALOG_LOCALGATE_OBJ DIALOGEX 0, 0, 138, 99 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "ジャンプゲートの編集" -FONT 9, "MS ゴシック" +FONT 9, "MS ゴシック", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_OBJECT,64,2,73,135,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "ジャンプ先 X座標",-1,5,36,58,8 @@ -707,6 +723,7 @@ BEGIN EDITTEXT IDC_EDIT_SOUND,57,63,24,12,ES_AUTOHSCROLL DEFPUSHBUTTON "決定",IDOK,30,82,40,14 PUSHBUTTON "取り消し",ID_BUTTON_CANCEL,70,82,40,14 + LTEXT "物体番号:",IDC_STATIC_NUMBER,66,19,65,8 END IDD_DIALOG_BASICMES DIALOG 0, 0, 211, 280 @@ -998,6 +1015,91 @@ BEGIN 0 END +IDD_DIALOG_MESSAGE AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_MONSTER AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_OBJSELECT AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_DOOR AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_ITEM AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_LOCALGATE AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_LOCALGATE_OBJ AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_RANDOM AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_STATUS AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_SELL AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_BUY AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_URLOBJ AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_STREET AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_URLMAP AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_NORMAL AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_SCORE AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_DIALOG_WALL AFX_DIALOG_LAYOUT +BEGIN + 0 +END + #endif // 日本語 (日本) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/WinWwamk.cpp b/WinWwamk.cpp index ed07ab9..6c57ead 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -1816,7 +1816,7 @@ BOOL LoadMapData(char* FileName) //暗証番号変換 number = atoi(g_worldPassword); number = (((number / 10) - 1197) / 17) - 2357; - _itoa(number, g_worldPassword, 10); + _itoa_s(number, g_worldPassword, BUFFER_STR_MAX, 10); } ShowWindow(g_hDlgSelectObject, FALSE); ShowWindow(g_hDlgSelectMap, FALSE); @@ -1839,9 +1839,9 @@ BOOL LoadMapData(char* FileName) } //タイトルテキスト設定 - char sTitle[100]; - sprintf(sTitle, "%s [%s]", g_szTitleName, FileName); - SetWindowText(g_hWnd, sTitle); + CString titleText; + titleText.Format("%s [%s]", g_szTitleName, FileName); + SetWindowText(g_hWnd, titleText); return TRUE; } @@ -2017,8 +2017,8 @@ BOOL SaveMapData( char *FileName ) //暗証番号変換 number = atoi( g_worldPassword ); if( number != 0 ){ - number = ((number +2357) *17 +1197) *10 +(number %9); - _itoa( number, szSavePassword, 10 ); + number = ((number + 2357) * 17 + 1197) * 10 + (number % 9); + _itoa_s(number, szSavePassword, 30, 10); } else { szSavePassword[0] = '\0'; } @@ -2053,18 +2053,18 @@ BOOL SaveMapData( char *FileName ) WriteFile( hFile, g_MapData, pointer, &dwWritten, NULL ); CloseHandle( hFile ); - //タイトルテキスト設定 - char sTitle[100]; - sprintf( sTitle, "%s [%s]", g_szTitleName, FileName ); - SetWindowText( g_hWnd, sTitle ); + // タイトルテキスト設定 + CString titleText; + titleText.Format("%s [%s]", g_szTitleName, FileName); + SetWindowText(g_hWnd, titleText); - //バックアップデータ作成 - char szBackupFile[250]; + // バックアップデータ作成 + CString backupFileName; SYSTEMTIME systime; GetLocalTime( &systime ); - sprintf( szBackupFile, "backup\\%s%d.dat", FileName, systime.wHour ); - //書き込み - hFile = CreateFile( szBackupFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); + backupFileName.Format("backup\\%s%d.dat", FileName, systime.wHour); + // 書き込み + hFile = CreateFile( backupFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); if( hFile != INVALID_HANDLE_VALUE ){ WriteFile( hFile, g_MapData, pointer, &dwWritten, NULL ); CloseHandle( hFile ); @@ -2108,31 +2108,31 @@ void paintMapAll(HDC hDC) //変数定義 int i, j; int mdata; - char objectNumber[10]; HFONT numberFont = CreateFont(14, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, FF_DONTCARE); HFONT defaultFont = SelectFont(hDC, numberFont); //マップ描画 for (j = 0; j < SCREEN_CHIP_SIZE; ++j) { for (i = 0; i < SCREEN_CHIP_SIZE; ++i) { - //背景描画 + // 背景描画 mdata = map[j + mapYtop][i + mapXtop]; BitBlt(hDC, i * CHIP_SIZE, j * CHIP_SIZE + YTOP, CHIP_SIZE, CHIP_SIZE, g_hmDC, mapAttribute[mdata][ATR_X], mapAttribute[mdata][ATR_Y], SRCCOPY); - //オブジェクト描画 + // オブジェクト描画 mdata = mapObject[j + mapYtop][i + mapXtop]; if (mdata != 0) { BitBlt(hDC, i * CHIP_SIZE, j * CHIP_SIZE + YTOP, CHIP_SIZE, CHIP_SIZE, g_hmDCAnd, objectAttribute[mdata][ATR_X], objectAttribute[mdata][ATR_Y], SRCAND); BitBlt(hDC, i * CHIP_SIZE, j * CHIP_SIZE + YTOP, CHIP_SIZE, CHIP_SIZE, g_hmDCOr, objectAttribute[mdata][ATR_X], objectAttribute[mdata][ATR_Y], SRCPAINT); } - //プレーヤーキヤラクタ描画 + // プレーヤーキヤラクタ描画 if ((charaX == (i + mapXtop)) && (charaY == (j + mapYtop))) { BitBlt(hDC, i * CHIP_SIZE, j * CHIP_SIZE + YTOP, CHIP_SIZE, CHIP_SIZE, g_hmDCAnd, CHIP_SIZE * 4, 0, SRCAND); BitBlt(hDC, i * CHIP_SIZE, j * CHIP_SIZE + YTOP, CHIP_SIZE, CHIP_SIZE, g_hmDCOr, CHIP_SIZE * 4, 0, SRCPAINT); } - //透明パーツ識別マーク描画 + // 物体パーツ番号描画 if (g_ObjectNumberFlag == TRUE && mdata != 0) { - sprintf(objectNumber, "%d", mdata); + char objectNumber[10]; + sprintf_s(objectNumber, 10, "%d", mdata); TextOut(hDC, i * CHIP_SIZE, j * CHIP_SIZE + YTOP, objectNumber, strlen(objectNumber)); } } @@ -2154,7 +2154,6 @@ void PaintWindowSelectObject(HWND hWnd) hDC = BeginPaint(hWnd, &ps); int selectX = g_SelectObjectData % DIALOG_OBJECT_SELECT_COLUMN; int selectY = g_SelectObjectData / DIALOG_OBJECT_SELECT_COLUMN; - char str[50]; //イメージの描画 for (j = 0; j < DIALOG_OBJECT_SELECT_LINE; ++j) { @@ -2196,7 +2195,6 @@ void PaintWindowSelectMap(HWND hWnd) hDC = BeginPaint(hWnd, &ps); int selectX = g_SelectMapData % DIALOG_MAP_SELECT_COLUMN; int selectY = g_SelectMapData / DIALOG_MAP_SELECT_COLUMN; - char str[50]; //イメージの描画 for (j = 0; j < DIALOG_MAP_SELECT_LINE; ++j) { @@ -2581,17 +2579,16 @@ LRESULT CALLBACK EditObjectDialogProc( HWND hWnd, UINT message, WPARAM wParam, L break; case WM_PAINT: { - //オブジェクト描画 + // オブジェクト描画 HDC hDC = GetDC( hWnd ); BitBlt( hDC, 5, 4, CHIP_SIZE, CHIP_SIZE, g_hmDC, objectAttribute[GetCharaNumber(hWnd)][ATR_X], objectAttribute[GetCharaNumber(hWnd)][ATR_Y], SRCCOPY ); BitBlt( hDC, 50, 4, CHIP_SIZE, CHIP_SIZE, g_hmDC, objectAttribute[GetCharaNumber(hWnd)][ATR_X2], objectAttribute[GetCharaNumber(hWnd)][ATR_Y2], SRCCOPY ); - //文字表示 - char str[50]; - SetBkMode( hDC, TRANSPARENT ); - sprintf( str, "物体番号:%d", GetCharaNumber(hWnd) ); - TextOut( hDC,96,27,str,strlen(str) ); ReleaseDC( hWnd, hDC ); - //ウィンドウ再描画 + // 文字表示 + CString partsNumberStr; + partsNumberStr.Format("物体番号: %d", GetCharaNumber(hWnd)); + SetDlgItemText(hWnd, IDC_STATIC_NUMBER, partsNumberStr); + // ウィンドウ再描画 if( g_bRestoreObjectDialog == TRUE ){ DestroyWindow( hWnd ); return 1; @@ -2674,12 +2671,11 @@ LRESULT CALLBACK EditMapDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPAR // オブジェクト描画 HDC hDC = GetDC(hWnd); BitBlt(hDC, 5, 4, CHIP_SIZE, CHIP_SIZE, g_hmDC, mapAttribute[GetCharaNumber(hWnd)][ATR_X], mapAttribute[GetCharaNumber(hWnd)][ATR_Y], SRCCOPY); - // 文字表示 - char str[50]; - SetBkMode(hDC, TRANSPARENT); - sprintf(str, "背景番号:%d", GetCharaNumber(hWnd)); - TextOut(hDC, 96, 27, str, strlen(str)); ReleaseDC(hWnd, hDC); + // 文字表示 + CString partsNumberStr; + partsNumberStr.Format("背景番号: %d", GetCharaNumber(hWnd)); + SetDlgItemText(hWnd, IDC_STATIC_NUMBER, partsNumberStr); // ウィンドウ再描画 if (g_bRestoreMapDialog == TRUE) { DestroyWindow(hWnd); @@ -2927,7 +2923,7 @@ void DisplayObjectDialog() int number; char str[MESSAGE_STR_MAX]; char strCut[BUFFER_STR_MAX]; - int id; + int dialogId = -1; int position; int type; RECT rect; @@ -2945,18 +2941,18 @@ void DisplayObjectDialog() MessageBox( g_hWnd, "パーツ番号0の物体は編集できません。\nこのパーツはマップの物体を消去するときに指定してください。", "注意!", MB_OK ); return; } - //種類の判定 - for( position = 0 ; position < 20 ; ++position ){ - if( OBJ[position].Object == END ) break; - if( type == OBJ[position].Object ){ - id = OBJ[position].Id; + // 種類の判定 + for (position = 0; position < 20; ++position) { + if (OBJ[position].Object == END) break; + if (type == OBJ[position].Object) { + dialogId = OBJ[position].Id; break; } } - if( id == 20 ) return; + if( dialogId == -1 ) return; //ダイアログの作成 - g_hDlgObject = CreateDialog( g_hInst, MAKEINTRESOURCE(id), g_hWnd, (DLGPROC)EditObjectDialogProc ); + g_hDlgObject = CreateDialog( g_hInst, MAKEINTRESOURCE(dialogId), g_hWnd, (DLGPROC)EditObjectDialogProc ); //コンボボックスにデータ挿入 HWND hwndCombo = GetDlgItem( g_hDlgObject, IDC_COMBO_OBJECT ); for( i = 0 ; i < 13 ; ++i ) SendMessage( hwndCombo, CB_ADDSTRING, 0, (LPARAM)OBJ[i].Name ); @@ -3023,15 +3019,22 @@ void DisplayObjectDialog() int position = objectAttribute[g_EditObjectData][Object[number].Atr]; if( position > 9000 ){ position = position - 10000; - if( position >= 0 ) sprintf( str, "+%d", position ); - else sprintf( str, "%d", position ); - } else { - sprintf( str, "%d", position ); + + CString jumpValue; + if (position >= 0) { + jumpValue.Format("+%d", position); + } + else { + jumpValue.Format("%d", position); + } + SetDlgItemText(g_hDlgObject, Object[number].Id, jumpValue); } - SetDlgItemText( g_hDlgObject, Object[number].Id, str ); - } else { - _itoa( objectAttribute[g_EditObjectData][Object[number].Atr], str, 10 ); - SetDlgItemText( g_hDlgObject, Object[number].Id, str ); + else { + SetDlgItemInt( g_hDlgObject, Object[number].Id, position, FALSE); + } + } + else { + SetDlgItemInt(g_hDlgObject, Object[number].Id, objectAttribute[g_EditObjectData][Object[number].Atr], FALSE); } } //コンボボックスの場合 @@ -3042,8 +3045,7 @@ void DisplayObjectDialog() } //エディットボックスの場合 else { - _itoa( status, str, 10 ); - SetDlgItemText( g_hDlgObject, Object[number].Id, str ); + SetDlgItemInt(g_hDlgObject, Object[number].Id, status, TRUE); } } } @@ -3085,14 +3087,13 @@ void DisplayObjectDialog() //##------------------------------------------------------------------ // 背景編集ダイアログの表示 - void DisplayMapDialog() { int i; int number; char str[MESSAGE_STR_MAX]; char strCut[50]; - int id; + int dialogId = -1; int position; int type; RECT rect; @@ -3114,14 +3115,14 @@ void DisplayMapDialog() for( position = 0 ; position < 20 ; ++position ){ if( MAP[position].Object == END ) break; if( type == MAP[position].Object ){ - id = MAP[position].Id; + dialogId = MAP[position].Id; break; } } - if( id == 20 ) return; + if( dialogId == -1 ) return; //ダイアログの作成 - g_hDlgMap = CreateDialog( g_hInst, MAKEINTRESOURCE(id), g_hWnd, (DLGPROC)EditMapDialogProc ); + g_hDlgMap = CreateDialog( g_hInst, MAKEINTRESOURCE(dialogId), g_hWnd, (DLGPROC)EditMapDialogProc ); //コンボボックスにデータ挿入 HWND hwndCombo = GetDlgItem( g_hDlgMap, IDC_COMBO_MAP ); @@ -3152,15 +3153,21 @@ void DisplayMapDialog() int position = mapAttribute[g_EditMapData][Map[number].Atr]; if( position > 9000 ){ position = position - 10000; - if( position >= 0 ) sprintf( str, "+%d", position ); - else sprintf( str, "%d", position ); - } else { - sprintf( str, "%d", position ); + + CString jumpValue; + if (position >= 0) { + jumpValue.Format("+%d", position); + } + else { + jumpValue.Format("%d", position); + } + SetDlgItemText(g_hDlgMap, Map[number].Id, jumpValue); + } + else { + SetDlgItemInt(g_hDlgMap, Map[number].Id, position, FALSE); } - SetDlgItemText( g_hDlgMap, Map[number].Id, str ); } else { - _itoa( mapAttribute[g_EditMapData][Map[number].Atr], str, 10 ); - SetDlgItemText( g_hDlgMap, Map[number].Id, str ); + SetDlgItemInt(g_hDlgMap, Map[number].Id, mapAttribute[g_EditMapData][Map[number].Atr], FALSE); } } } @@ -3988,29 +3995,19 @@ void MakeNewMap() // 基本設定ダイアログ void EditMapFoundation() { - char str[100]; DestroyWindow(g_hDlgFoundation); g_hDlgFoundation = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_FOUNDATION), g_hWnd, (DLGPROC)DialogProc); //数値データ挿入 - _itoa(statusEnergyMax, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_ENERGYMAX, str); - _itoa(statusEnergy, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_INIENERGY, str); - _itoa(statusStrength, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_INISTRENGTH, str); - _itoa(statusDefence, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_INIDEFENCE, str); - _itoa(statusGold, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_INIGOLD, str); - _itoa(charaX, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_INIX, str); - _itoa(charaY, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_INIY, str); - _itoa(gameoverXp, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_GVX, str); - _itoa(gameoverYp, str, 10); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_GVY, str); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_ENERGYMAX, statusEnergyMax, FALSE); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_INIENERGY, statusEnergy, FALSE); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_INISTRENGTH, statusStrength, FALSE); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_INIDEFENCE, statusDefence, FALSE); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_INIGOLD, statusGold, FALSE); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_INIX, charaX, FALSE); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_INIY, charaY, FALSE); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_GVX, gameoverXp, FALSE); + SetDlgItemInt(g_hDlgFoundation, IDC_EDIT_GVY, gameoverYp, FALSE); //テキストデータ挿入 SetDlgItemText(g_hDlgFoundation, IDC_EDIT_WORLDNAME, g_worldName); @@ -4027,12 +4024,21 @@ void EditMapFoundation() SetDlgItemText(g_hDlgFoundation, IDC_COMBO_GIF, g_mapcgName); //各種サイズデータ挿入 - sprintf(str, "%d×%d", g_iMapSize, g_iMapSize); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_MAPSIZE, str); - sprintf(str, "%d", g_iMapPartsMax); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_MAP_PARTS, str); - sprintf(str, "%d", g_iObjectPartsMax); - SetDlgItemText(g_hDlgFoundation, IDC_EDIT_OBJ_PARTS, str); + { + CString mapSizeStr; + mapSizeStr.Format("%d×%d", g_iMapSize, g_iMapSize); + SetDlgItemText(g_hDlgFoundation, IDC_EDIT_MAPSIZE, mapSizeStr); + } + { + CString mapPartsMaxStr; + mapPartsMaxStr.Format("%d", g_iMapPartsMax); + SetDlgItemText(g_hDlgFoundation, IDC_EDIT_MAP_PARTS, mapPartsMaxStr); + } + { + CString objectPartsMaxStr; + objectPartsMaxStr.Format("%d", g_iObjectPartsMax); + SetDlgItemText(g_hDlgFoundation, IDC_EDIT_OBJ_PARTS, objectPartsMaxStr); + } } diff --git a/resource.h b/resource.h index cac7474..d2db518 100644 --- a/resource.h +++ b/resource.h @@ -158,6 +158,7 @@ #define IDC_STATIC_CURRENT_POSITION 1101 #define IDC_EDIT3 1102 #define IDC_EDIT_CURRENT_POSITION 1102 +#define IDC_STATIC_NUMBER 1103 #define ID_MENUITEM40001 40001 #define ID_MENU_NEW 40001 #define ID_MENUITEM40002 40002 @@ -206,9 +207,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 134 +#define _APS_NEXT_RESOURCE_VALUE 135 #define _APS_NEXT_COMMAND_VALUE 40039 -#define _APS_NEXT_CONTROL_VALUE 1103 +#define _APS_NEXT_CONTROL_VALUE 1104 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif From 7ba28bd6d31a5c253b1c1a8c1300cfe1a8a23661 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 00:18:20 +0900 Subject: [PATCH 11/31] =?UTF-8?q?=E3=83=91=E3=83=BC=E3=83=84=E4=B8=8A?= =?UTF-8?q?=E9=99=90=E6=8B=A1=E5=BC=B5=E6=99=82=E3=81=AE=E3=82=B9=E3=82=AF?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=AB=E7=AF=84=E5=9B=B2=E3=81=AE=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 6c57ead..6474a35 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -3693,7 +3693,7 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara else if (LOWORD(wParam) == IDC_BUTTON_MAP_PARTS) { g_iMapPartsMax += 50; if (g_iMapPartsMax > PARTS_NUMBER_MAX) g_iMapPartsMax = PARTS_NUMBER_MAX; - SetScrollRange(g_hDlgSelectMap, SB_VERT, 0, ((g_iMapPartsMax / 10) - 3), FALSE); + SetScrollRange(g_hDlgSelectMap, SB_VERT, 0, ((g_iMapPartsMax / DIALOG_MAP_SELECT_COLUMN) - DIALOG_MAP_SELECT_LINE), FALSE); char szStr[50]; sprintf(szStr, "%d", g_iMapPartsMax); SetDlgItemText(g_hDlgFoundation, IDC_EDIT_MAP_PARTS, szStr); @@ -3702,7 +3702,7 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara else if (LOWORD(wParam) == IDC_BUTTON_OBJ_PARTS) { g_iObjectPartsMax += 50; if (g_iObjectPartsMax > PARTS_NUMBER_MAX) g_iObjectPartsMax = PARTS_NUMBER_MAX; - SetScrollRange(g_hDlgSelectObject, SB_VERT, 0, ((g_iObjectPartsMax / 10) - 3), FALSE); + SetScrollRange(g_hDlgSelectObject, SB_VERT, 0, ((g_iObjectPartsMax / DIALOG_OBJECT_SELECT_COLUMN) - DIALOG_OBJECT_SELECT_LINE), FALSE); char szStr[50]; sprintf(szStr, "%d", g_iObjectPartsMax); SetDlgItemText(g_hDlgFoundation, IDC_EDIT_OBJ_PARTS, szStr); From ce5b0744c4194c56bf87d35eb35459753e19b016 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 15:34:13 +0900 Subject: [PATCH 12/31] =?UTF-8?q?=E3=81=99=E3=81=B9=E3=81=A6=E3=81=AEsprin?= =?UTF-8?q?tf=E9=96=A2=E6=95=B0=E3=82=92sprintf=5Fs=E3=81=AB=E5=B7=AE?= =?UTF-8?q?=E3=81=97=E6=9B=BF=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 124 +++++++++++++++++++++++++++------------------------ 1 file changed, 66 insertions(+), 58 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 6474a35..474572a 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -395,7 +395,7 @@ const int g_EditId[] = { }; #define MACRO_MB(x) MessageBox(NULL,x,"",MB_OK); -#define MACRO_NUMBER(x) if(TRUE){char szNum[20];sprintf(szNum,"%d",x);MACRO_MB(szNum)}; +#define MACRO_NUMBER(x) if(TRUE) { char szNum[NUMBER_STR_MAX]; sprintf_s(szNum, NUMBER_STR_MAX, "%d", x); MACRO_MB(szNum) }; @@ -1451,16 +1451,16 @@ void PaintStatus(BOOL flag) { // ステータス非表示 HDC hDC = GetDC(g_hWnd); - char str[100]; + char str[BUFFER_STR_MAX]; int x; const int y = 1; SetBkMode(g_hmDCExtra, TRANSPARENT); Rectangle(g_hmDCExtra, 0, 0, CHIP_SIZE * SCREEN_CHIP_SIZE, 20); - sprintf(str, "X=%2d ", g_MouseX / CHIP_SIZE + mapXtop); + sprintf_s(str, BUFFER_STR_MAX, "X=%2d ", g_MouseX / CHIP_SIZE + mapXtop); TextOut(g_hmDCExtra, 4, 1, str, strlen(str)); - sprintf(str, "Y=%2d ", g_MouseY / CHIP_SIZE + mapYtop); + sprintf_s(str, BUFFER_STR_MAX, "Y=%2d ", g_MouseY / CHIP_SIZE + mapYtop); TextOut(g_hmDCExtra, 50, 1, str, strlen(str)); x = 96; @@ -2082,7 +2082,7 @@ void saveMapString( char *str ) WCHAR buff[MESSAGE_STR_MAX]; if( strlen(str) != 0 ){ - length = MultiByteToWideChar( CP_ACP, 0, str, strlen(str), buff, sizeof(buff) ); + length = MultiByteToWideChar(CP_ACP, 0, str, strlen(str), buff, sizeof(buff) / 2); buff[length] = '\0'; for( i = 0 ; i < (int)wcslen(buff) ; ++i ){ @@ -2999,7 +2999,7 @@ void DisplayObjectDialog() } SetDlgItemText( g_hDlgObject, IDC_EDIT_URL, str ); } - //数値データを挿入 + // 数値データを挿入 for( number = 0 ; number < 100 ; ++number ){ if( Object[number].Object == END ) break; if( Object[number].Object == type ){ @@ -3013,7 +3013,7 @@ void DisplayObjectDialog() || ((Object[number].Atr == ATR_GOLD) && (Object[number].Object == OBJECT_STATUS)) ){ if( status > 30000 ) status = 30000 -status; } - //ジャンプゲートの場合 + // ジャンプゲートの場合 if( objectAttribute[g_EditObjectData][ATR_TYPE] == OBJECT_LOCALGATE ){ if( (Object[number].Atr == ATR_JUMP_X) || (Object[number].Atr == ATR_JUMP_Y) ){ int position = objectAttribute[g_EditObjectData][Object[number].Atr]; @@ -3037,50 +3037,53 @@ void DisplayObjectDialog() SetDlgItemInt(g_hDlgObject, Object[number].Id, objectAttribute[g_EditObjectData][Object[number].Atr], FALSE); } } - //コンボボックスの場合 + // コンボボックスの場合 else if( (objectAttribute[g_EditObjectData][ATR_TYPE] != OBJECT_LOCALGATE) && (objectAttribute[g_EditObjectData][ATR_TYPE] != OBJECT_RANDOM) && ((Object[number].Atr == ATR_MOVE) || (Object[number].Atr == ATR_MODE)) || ((objectAttribute[g_EditObjectData][ATR_TYPE] == OBJECT_DOOR) && (Object[number].Atr == ATR_NUMBER)) ){ hwndCombo = GetDlgItem( g_hDlgObject, Object[number].Id ); SendMessage( hwndCombo, CB_SETCURSEL, status, 0 ); } - //エディットボックスの場合 + // エディットボックスの場合 else { SetDlgItemInt(g_hDlgObject, Object[number].Id, status, TRUE); } } } - //ダイアログ移動 + // ダイアログ移動 GetWindowRect( g_hDlgSelectObject, &rectBox ); GetWindowRect( g_hDlgObject, &rect ); MoveWindow( g_hDlgObject, rectBox.right, rectBox.top, rect.right -rect.left, rect.bottom -rect.top, TRUE ); ShowWindow( g_hDlgObject, SW_SHOW ); - //ダイアログの作成 + // ダイアログの作成 if( (type == OBJECT_MESSAGE) || (type == OBJECT_MONSTER) || (type == OBJECT_ITEM) || (type == OBJECT_STATUS) || (type == OBJECT_DOOR) || (type == OBJECT_SELL) || (type == OBJECT_BUY) || (type == OBJECT_SELECT) || (type == OBJECT_LOCALGATE) ){ if( type == OBJECT_SELECT ) g_hDlgExtra = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_EXTRA2), g_hDlgObject, (DLGPROC)DialogProcExtraObject ); else g_hDlgExtra = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_DIALOG_EXTRA), g_hDlgObject, (DLGPROC)DialogProcExtraObject ); - //ダイアログ移動 + // ダイアログ移動 GetWindowRect( g_hDlgObject, &rectBox ); GetWindowRect( g_hDlgExtra, &rect ); MoveWindow( g_hDlgExtra, rectBox.left, rectBox.bottom, rect.right -rect.left, rect.bottom -rect.top, TRUE ); ShowWindow( g_hDlgExtra, SW_SHOW ); - //フォーカス移動 + // フォーカス移動 SetFocus( g_hDlgObject ); - //拡張出現キャラクタの設定 + // 拡張出現キャラクタの設定 AppearChara( g_EditObjectData, TRUE ); } - //タイトルバーテキスト設定 - char title[100]; - GetWindowText( g_hDlgObject, title, sizeof(title) ); - sprintf( str, "o%d. %s", g_EditObjectData, title ); - SetWindowText( g_hDlgObject, str ); - GetWindowText( g_hDlgExtra, title, sizeof(title) ); - sprintf( str, "o%d. %s", g_EditObjectData, title ); - SetWindowText( g_hDlgExtra, str ); + // タイトルバーテキスト設定 + { + char title[BUFFER_STR_MAX]; + GetWindowText(g_hDlgObject, title, sizeof(title)); + sprintf_s(str, MESSAGE_STR_MAX, "o%d. %s", g_EditObjectData, title); + SetWindowText(g_hDlgObject, str); + + GetWindowText(g_hDlgExtra, title, sizeof(title)); + sprintf_s(str, MESSAGE_STR_MAX, "o%d. %s", g_EditObjectData, title); + SetWindowText(g_hDlgExtra, str); + } } @@ -3192,13 +3195,16 @@ void DisplayMapDialog() } //タイトルバーテキスト設定 - char title[100]; - GetWindowText( g_hDlgMap, title, sizeof(title) ); - sprintf( str, "m%d. %s", g_EditMapData, title ); - SetWindowText( g_hDlgMap, str ); - GetWindowText( g_hDlgExtra, title, sizeof(title) ); - sprintf( str, "m%d. %s", g_EditMapData, title ); - SetWindowText( g_hDlgExtra, str ); + { + char title[BUFFER_STR_MAX]; + GetWindowText(g_hDlgMap, title, sizeof(title)); + sprintf_s(str, MESSAGE_STR_MAX, "m%d. %s", g_EditMapData, title); + SetWindowText(g_hDlgMap, str); + + GetWindowText(g_hDlgExtra, title, sizeof(title)); + sprintf_s(str, MESSAGE_STR_MAX, "m%d. %s", g_EditMapData, title); + SetWindowText(g_hDlgExtra, str); + } } @@ -3259,7 +3265,7 @@ void SetObjectData( HWND hWnd, int charaNumber ) objectAttribute[charaNumber][Object[number].Atr] = 30000 - atoi(str); continue; } else if( atoi(str) < -30000 ){ - sprintf( str, "「%s」の数値範囲が規定値を超えています。\n -30000 以上を指定してください。", Object[number].Name ); + sprintf_s(str, MESSAGE_STR_MAX, "「%s」の数値範囲が規定値を超えています。\n -30000 以上を指定してください。", Object[number].Name); MessageBox( g_hWnd, str, "警告!", MB_OK ); } } @@ -3280,7 +3286,7 @@ void SetObjectData( HWND hWnd, int charaNumber ) objectAttribute[charaNumber][Object[number].Atr] = position; } } else if( (Object[number].Max != 0) && ((Object[number].Max < atoi(str)) || (atoi(str) < 0)) ){ - sprintf( str, "「%s」の数値範囲が規定値を超えています。\n 0以上 %d 以下を指定してください。", Object[number].Name, Object[number].Max ); + sprintf_s(str, MESSAGE_STR_MAX, "「%s」の数値範囲が規定値を超えています。\n 0以上 %d 以下を指定してください。", Object[number].Name, Object[number].Max); MessageBox( g_hWnd, str, "警告!", MB_OK ); } else { if( (objectAttribute[g_EditObjectData][ATR_TYPE] != OBJECT_LOCALGATE) && (objectAttribute[g_EditObjectData][ATR_TYPE] != OBJECT_RANDOM) && ((Object[number].Atr == ATR_MOVE) || (Object[number].Atr == ATR_MODE)) @@ -3308,7 +3314,7 @@ void SetMapData( HWND hWnd, int charaNumber ) int number; int length; char str[MESSAGE_STR_MAX]; - char strCut[50]; + char strCut[BUFFER_STR_MAX]; int type = mapAttribute[charaNumber][ATR_TYPE]; //何も設定されていなければキャンセル @@ -3327,7 +3333,9 @@ void SetMapData( HWND hWnd, int charaNumber ) } else if( type == MAP_URLGATE ){ GetDlgItemText( hWnd, IDC_EDIT_URL, str, MESSAGE_STR_MAX ); GetDlgItemText( hWnd, IDC_EDIT_TARGET, strCut, 50 ); - if ((strstr(strCut, "expand") != 0) || (strstr(strCut, "EXPAND") != 0)) strcpy_s(strCut, BUFFER_STR_MAX, "EXPAND"); + if ((strstr(strCut, "expand") != 0) || (strstr(strCut, "EXPAND") != 0)) { + strcpy_s(strCut, BUFFER_STR_MAX, "EXPAND"); + } if( strlen(strCut) != 0 ){ length = strlen(str); str[length] = 0x0D; @@ -3354,7 +3362,7 @@ void SetMapData( HWND hWnd, int charaNumber ) } } else { if( (Map[number].Max != 0) && ((Map[number].Max < atoi(str)) || (atoi(str) < 0)) ){ - sprintf( str, "「%s」の数値範囲が規定値を超えています。\n 0以上、%d以下を指定してください。", Map[number].Name, Map[number].Max ); + sprintf_s(str, MESSAGE_STR_MAX, "「%s」の数値範囲が規定値を超えています。\n 0以上、%d以下を指定してください。", Map[number].Name, Map[number].Max); MessageBox( g_hWnd, str, "警告!", MB_OK ); } else { mapAttribute[charaNumber][Map[number].Atr] = atoi( str ); @@ -3375,7 +3383,7 @@ void AppearChara( int mapNumber, BOOL flag ) int dataChara; int dataMode; int x, y; - char str[30]; + char str[NUMBER_STR_MAX]; //拡張キャラクタ・データコンバート for( i = 0 ; i < 10 ; ++i ){ @@ -3412,12 +3420,12 @@ void AppearChara( int mapNumber, BOOL flag ) SetDlgItemText( g_hDlgExtra, g_EditId[10+i], "P" ); } else if( x > 9000 ){ x -= 10000; - sprintf( str, "%d", x ); - if( x >= 0 ) sprintf( str, "+%d", x ); + sprintf_s(str, NUMBER_STR_MAX, "%d", x); + if (x >= 0) sprintf_s(str, NUMBER_STR_MAX, "+%d", x); SetDlgItemText( g_hDlgExtra, g_EditId[10+i], str ); } else { - sprintf( str, "%d", x ); - SetDlgItemText( g_hDlgExtra, g_EditId[10+i], str ); + sprintf_s(str, NUMBER_STR_MAX, "%d", x); + SetDlgItemText(g_hDlgExtra, g_EditId[10 + i], str); } //y = y >> 8; @@ -3425,15 +3433,15 @@ void AppearChara( int mapNumber, BOOL flag ) SetDlgItemText( g_hDlgExtra, g_EditId[20+i], "P" ); } else if( y > 9000 ){ y -= 10000; - sprintf( str, "%d", y ); - if( y >= 0 ) sprintf( str, "+%d", y ); + sprintf_s(str, NUMBER_STR_MAX, "%d", y); + if (y >= 0) sprintf_s(str, NUMBER_STR_MAX, "+%d", y); SetDlgItemText( g_hDlgExtra, g_EditId[20+i], str ); } else { - sprintf( str, "%d", y ); + sprintf_s(str, NUMBER_STR_MAX, "%d", y); SetDlgItemText( g_hDlgExtra, g_EditId[20+i], str ); } - sprintf( str, "%d", dataChara ); + sprintf_s(str, NUMBER_STR_MAX, "%d", dataChara); SetDlgItemText( g_hDlgExtra, g_EditId[i], str ); } } @@ -3619,7 +3627,7 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara } //戦闘結果の計算 else if (hWnd == g_hDlgCalculate) { - char str[50]; + char str[NUMBER_STR_MAX]; int strength, defence, energy; int strengthM, defenceM, energyM; int damagy = 0; @@ -3660,16 +3668,16 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara } } } - if (turn == 0) sprintf(str, "攻撃ターン数 --"); - else sprintf(str, "攻撃ターン数 %d", turn); + if (turn == 0) sprintf_s(str, NUMBER_STR_MAX, "攻撃ターン数 --"); + else sprintf_s(str, NUMBER_STR_MAX, "攻撃ターン数 %d", turn); SetDlgItemText(hWnd, IDC_STATIC_TURN, str); - sprintf(str, "プレーヤー %d", damagy); + sprintf_s(str, NUMBER_STR_MAX, "プレーヤー %d", damagy); SetDlgItemText(hWnd, IDC_STATIC_RESULT1, str); - sprintf(str, "モンスター %d", damagyM); + sprintf_s(str, NUMBER_STR_MAX, "モンスター %d", damagyM); SetDlgItemText(hWnd, IDC_STATIC_RESULT2, str); - sprintf(str, "プレーヤー %d", attack); + sprintf_s(str, NUMBER_STR_MAX, "プレーヤー %d", attack); SetDlgItemText(hWnd, IDC_STATIC_RESULT3, str); - sprintf(str, "モンスター %d", attackM); + sprintf_s(str, NUMBER_STR_MAX, "モンスター %d", attackM); SetDlgItemText(hWnd, IDC_STATIC_RESULT4, str); } return 1; @@ -3680,10 +3688,10 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara } // マップサイズ拡張 else if (LOWORD(wParam) == IDC_BUTTON_MAPSIZE) { - char szStr[50]; + char szStr[NUMBER_STR_MAX]; g_iMapSize += 50; if (g_iMapSize > MAP_SIZE_MAX) g_iMapSize = MAP_SIZE_MAX; - sprintf(szStr, "%d×%d", g_iMapSize, g_iMapSize); + sprintf_s(szStr, NUMBER_STR_MAX, "%d×%d", g_iMapSize, g_iMapSize); SetDlgItemText(g_hDlgFoundation, IDC_EDIT_MAPSIZE, szStr); // スクロールバー設定 SetScrollRange(g_hWnd, SB_VERT, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); @@ -3695,7 +3703,7 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara if (g_iMapPartsMax > PARTS_NUMBER_MAX) g_iMapPartsMax = PARTS_NUMBER_MAX; SetScrollRange(g_hDlgSelectMap, SB_VERT, 0, ((g_iMapPartsMax / DIALOG_MAP_SELECT_COLUMN) - DIALOG_MAP_SELECT_LINE), FALSE); char szStr[50]; - sprintf(szStr, "%d", g_iMapPartsMax); + sprintf_s(szStr, NUMBER_STR_MAX, "%d", g_iMapPartsMax); SetDlgItemText(g_hDlgFoundation, IDC_EDIT_MAP_PARTS, szStr); } // 物体パーツ最大数拡張 @@ -3704,7 +3712,7 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara if (g_iObjectPartsMax > PARTS_NUMBER_MAX) g_iObjectPartsMax = PARTS_NUMBER_MAX; SetScrollRange(g_hDlgSelectObject, SB_VERT, 0, ((g_iObjectPartsMax / DIALOG_OBJECT_SELECT_COLUMN) - DIALOG_OBJECT_SELECT_LINE), FALSE); char szStr[50]; - sprintf(szStr, "%d", g_iObjectPartsMax); + sprintf_s(szStr, NUMBER_STR_MAX, "%d", g_iObjectPartsMax); SetDlgItemText(g_hDlgFoundation, IDC_EDIT_OBJ_PARTS, szStr); } break; @@ -3973,8 +3981,8 @@ void MakeNewMap() g_mapcgOld[0] = '\0'; strcpy_s(g_szSelectFile, FILE_PATH_STR_MAX, "newmap.dat"); //タイトルテキスト設定 - char sTitle[100]; - sprintf(sTitle, "%s [%s]", g_szTitleName, g_szSelectFile); + char sTitle[BUFFER_STR_MAX]; + sprintf_s(sTitle, BUFFER_STR_MAX, "%s [%s]", g_szTitleName, g_szSelectFile); SetWindowText(g_hWnd, sTitle); //基本設定の編集 @@ -4276,7 +4284,7 @@ BOOL ReadGifImage() int cxPerInch; int cyPerInch; long dx, dy; - char szStr[300]; + char szStr[FILE_PATH_STR_MAX]; //初期化 g_iColorTp = 0; @@ -4284,7 +4292,7 @@ BOOL ReadGifImage() //画像ファイル読み込み if ((han = CreateFile(g_mapcgName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { - sprintf(szStr, "GIF画像ファイル「%s」がオープンできません。\nファイルが存在するか、他のアプリケーションにより使用されていないかを確認してください。", g_mapcgName); + sprintf_s(szStr, FILE_PATH_STR_MAX, "GIF画像ファイル「%s」がオープンできません。\nファイルが存在するか、他のアプリケーションにより使用されていないかを確認してください。", g_mapcgName); MessageBox(g_hWnd, szStr, "注意", MB_OK); g_bFileNotFound = TRUE; return FALSE; From 75fbafca3b9558b404dc6d7ee80fb0849ad1cb54 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 15:42:47 +0900 Subject: [PATCH 13/31] =?UTF-8?q?OsVersion=E3=82=92=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=80=81strcat=E3=82=92strcat=5Fs=E3=81=AB=E5=B7=AE=E3=81=97?= =?UTF-8?q?=E6=9B=BF=E3=81=88=E3=80=81=E3=82=BD=E3=83=BC=E3=82=B9=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=82=92=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 173 +++++++++++++++++++++++++++------------------------ 1 file changed, 93 insertions(+), 80 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 474572a..8eb6b6b 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -1130,7 +1130,6 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C MSG msg; WNDCLASS wc; g_hInst = hInst; - OSVERSIONINFO OsVersion; RECT WindowRect, ClientRect; int SizeX, SizeY, PositionX, PositionY; @@ -3211,8 +3210,7 @@ void DisplayMapDialog() //##------------------------------------------------------------------ // 物体データの決定 - -void SetObjectData( HWND hWnd, int charaNumber ) +void SetObjectData(HWND hWnd, int charaNumber) { int i; int number; @@ -3223,78 +3221,87 @@ void SetObjectData( HWND hWnd, int charaNumber ) int position; //何も設定されていなければキャンセル - for( i = 0 ; i < OBJECT_ATR_MAX ; ++i ){ - if( objectAttribute[charaNumber][i] != 0 ) break; + for (i = 0; i < OBJECT_ATR_MAX; ++i) { + if (objectAttribute[charaNumber][i] != 0) break; } - if( i == OBJECT_ATR_MAX ) return; + if (i == OBJECT_ATR_MAX) return; //パーツ番号 objectAttribute[charaNumber][ATR_0] = charaNumber; - if( (type == OBJECT_MESSAGE) || (type == OBJECT_MONSTER) || (type == OBJECT_ITEM) || (type == OBJECT_SCORE) - || (type == OBJECT_STATUS) || (type == OBJECT_DOOR) || (type == OBJECT_SELL) || (type == OBJECT_BUY) || (type == OBJECT_SELECT) ){ + if ((type == OBJECT_MESSAGE) || (type == OBJECT_MONSTER) || (type == OBJECT_ITEM) || (type == OBJECT_SCORE) + || (type == OBJECT_STATUS) || (type == OBJECT_DOOR) || (type == OBJECT_SELL) || (type == OBJECT_BUY) || (type == OBJECT_SELECT)) { //文字データのセット - GetDlgItemText( hWnd, IDC_EDIT_MESSAGE, str, MESSAGE_STR_MAX ); - SetMessageData( &objectAttribute[charaNumber][ATR_STRING], str ); - } else if( type == OBJECT_URLGATE ){ - GetDlgItemText( hWnd, IDC_EDIT_URL, str, MESSAGE_STR_MAX ); - GetDlgItemText( hWnd, IDC_EDIT_TARGET, strCut, 50 ); - if ((strstr(strCut, "expand") != 0) || (strstr(strCut, "EXPAND") != 0)) strcpy_s(strCut, BUFFER_STR_MAX, "EXPAND"); - if( strlen(strCut) != 0 ){ + GetDlgItemText(hWnd, IDC_EDIT_MESSAGE, str, MESSAGE_STR_MAX); + SetMessageData(&objectAttribute[charaNumber][ATR_STRING], str); + } + else if (type == OBJECT_URLGATE) { + GetDlgItemText(hWnd, IDC_EDIT_URL, str, MESSAGE_STR_MAX); + GetDlgItemText(hWnd, IDC_EDIT_TARGET, strCut, 50); + if ((strstr(strCut, "expand") != 0) || (strstr(strCut, "EXPAND") != 0)) { + strcpy_s(strCut, BUFFER_STR_MAX, "EXPAND"); + } + if (strlen(strCut) != 0) { length = strlen(str); str[length] = 0x0D; - str[length+1] = 0x0A; - str[length+2] = '\0'; - strcat( str, strCut ); + str[length + 1] = 0x0A; + str[length + 2] = '\0'; + strcat_s(str, MESSAGE_STR_MAX, strCut); } - SetMessageData( &objectAttribute[charaNumber][ATR_STRING], str ); + SetMessageData(&objectAttribute[charaNumber][ATR_STRING], str); } //数値データを設定 - for( number = 0 ; number < 100 ; ++number ){ - if( Object[number].Object == END ) break; - if( Object[number].Object == type ){ - GetDlgItemText( hWnd, Object[number].Id, str, sizeof(str) ); - + for (number = 0; number < 100; ++number) { + if (Object[number].Object == END) break; + if (Object[number].Object == type) { + GetDlgItemText(hWnd, Object[number].Id, str, sizeof(str)); + //マイナス数値の指定 - if( ((Object[number].Atr == ATR_ENERGY) && (Object[number].Object == OBJECT_SELL)) - || ((Object[number].Atr == ATR_ENERGY) && (Object[number].Object == OBJECT_STATUS)) - || ((Object[number].Atr == ATR_STRENGTH) && (Object[number].Object == OBJECT_STATUS)) - || ((Object[number].Atr == ATR_DEFENCE) && (Object[number].Object == OBJECT_STATUS)) - || ((Object[number].Atr == ATR_GOLD) && (Object[number].Object == OBJECT_STATUS)) ){ - if( (atoi(str) < 0) && (atoi(str) >= -30000) ){ + if (((Object[number].Atr == ATR_ENERGY) && (Object[number].Object == OBJECT_SELL)) + || ((Object[number].Atr == ATR_ENERGY) && (Object[number].Object == OBJECT_STATUS)) + || ((Object[number].Atr == ATR_STRENGTH) && (Object[number].Object == OBJECT_STATUS)) + || ((Object[number].Atr == ATR_DEFENCE) && (Object[number].Object == OBJECT_STATUS)) + || ((Object[number].Atr == ATR_GOLD) && (Object[number].Object == OBJECT_STATUS))) { + if ((atoi(str) < 0) && (atoi(str) >= -30000)) { objectAttribute[charaNumber][Object[number].Atr] = 30000 - atoi(str); continue; - } else if( atoi(str) < -30000 ){ + } + else if (atoi(str) < -30000) { sprintf_s(str, MESSAGE_STR_MAX, "「%s」の数値範囲が規定値を超えています。\n -30000 以上を指定してください。", Object[number].Name); - MessageBox( g_hWnd, str, "警告!", MB_OK ); + MessageBox(g_hWnd, str, "警告!", MB_OK); } } - if( (objectAttribute[g_EditObjectData][ATR_TYPE] == OBJECT_SELL) && (Object[number].Atr == ATR_ITEM) ){ - if( (objectAttribute[atoi(str)][ATR_TYPE] != OBJECT_ITEM) && (objectAttribute[atoi(str)][ATR_TYPE] != OBJECT_NORMAL) && (objectAttribute[atoi(str)][ATR_TYPE] != OBJECT_MESSAGE) ){ - MessageBox( g_hWnd, "売るアイテムには、ステータス変化パーツなどのアイテム以外のパーツは指定できません。", "警告!", MB_OK ); + if ((objectAttribute[g_EditObjectData][ATR_TYPE] == OBJECT_SELL) && (Object[number].Atr == ATR_ITEM)) { + if ((objectAttribute[atoi(str)][ATR_TYPE] != OBJECT_ITEM) && (objectAttribute[atoi(str)][ATR_TYPE] != OBJECT_NORMAL) && (objectAttribute[atoi(str)][ATR_TYPE] != OBJECT_MESSAGE)) { + MessageBox(g_hWnd, "売るアイテムには、ステータス変化パーツなどのアイテム以外のパーツは指定できません。", "警告!", MB_OK); continue; } } - if( (objectAttribute[g_EditObjectData][ATR_TYPE] == OBJECT_LOCALGATE) && ((Object[number].Atr == ATR_JUMP_X) || (Object[number].Atr == ATR_JUMP_Y)) ){ - int position = atoi( str ); - if( position >= g_iMapSize ){ - MessageBox( g_hWnd, "「座標」の数値範囲が規定値を超えています。\n マップサイズ以下を指定してください。", "警告!", MB_OK ); - } else if( (position < -100) || ((position > 100) && (str[0] == '+')) ){ - MessageBox( g_hWnd, "「座標」の数値範囲が規定値を超えています。\n -100以上、100以下を指定してください。", "警告!", MB_OK ); - } else { - if( (str[0] == '+') || (str[0] == '-') ) position += 10000; + if ((objectAttribute[g_EditObjectData][ATR_TYPE] == OBJECT_LOCALGATE) && ((Object[number].Atr == ATR_JUMP_X) || (Object[number].Atr == ATR_JUMP_Y))) { + int position = atoi(str); + if (position >= g_iMapSize) { + MessageBox(g_hWnd, "「座標」の数値範囲が規定値を超えています。\n マップサイズ以下を指定してください。", "警告!", MB_OK); + } + else if ((position < -100) || ((position > 100) && (str[0] == '+'))) { + MessageBox(g_hWnd, "「座標」の数値範囲が規定値を超えています。\n -100以上、100以下を指定してください。", "警告!", MB_OK); + } + else { + if ((str[0] == '+') || (str[0] == '-')) position += 10000; objectAttribute[charaNumber][Object[number].Atr] = position; } - } else if( (Object[number].Max != 0) && ((Object[number].Max < atoi(str)) || (atoi(str) < 0)) ){ + } + else if ((Object[number].Max != 0) && ((Object[number].Max < atoi(str)) || (atoi(str) < 0))) { sprintf_s(str, MESSAGE_STR_MAX, "「%s」の数値範囲が規定値を超えています。\n 0以上 %d 以下を指定してください。", Object[number].Name, Object[number].Max); - MessageBox( g_hWnd, str, "警告!", MB_OK ); - } else { - if( (objectAttribute[g_EditObjectData][ATR_TYPE] != OBJECT_LOCALGATE) && (objectAttribute[g_EditObjectData][ATR_TYPE] != OBJECT_RANDOM) && ((Object[number].Atr == ATR_MOVE) || (Object[number].Atr == ATR_MODE)) - || ((objectAttribute[g_EditObjectData][ATR_TYPE] == OBJECT_DOOR) && (Object[number].Atr == ATR_NUMBER)) ){ + MessageBox(g_hWnd, str, "警告!", MB_OK); + } + else { + if ((objectAttribute[g_EditObjectData][ATR_TYPE] != OBJECT_LOCALGATE) && (objectAttribute[g_EditObjectData][ATR_TYPE] != OBJECT_RANDOM) && ((Object[number].Atr == ATR_MOVE) || (Object[number].Atr == ATR_MODE)) + || ((objectAttribute[g_EditObjectData][ATR_TYPE] == OBJECT_DOOR) && (Object[number].Atr == ATR_NUMBER))) { //コンボボックスのデータ - position = SendMessage( GetDlgItem(hWnd,Object[number].Id), CB_GETCURSEL, 0, 0 ); + position = SendMessage(GetDlgItem(hWnd, Object[number].Id), CB_GETCURSEL, 0, 0); objectAttribute[charaNumber][Object[number].Atr] = position; - } else { + } + else { //エディットボックス objectAttribute[charaNumber][Object[number].Atr] = atoi(str); } @@ -3307,7 +3314,6 @@ void SetObjectData( HWND hWnd, int charaNumber ) //##------------------------------------------------------------------ // 背景データの決定 - void SetMapData( HWND hWnd, int charaNumber ) { int i; @@ -3326,46 +3332,51 @@ void SetMapData( HWND hWnd, int charaNumber ) //パーツ番号 mapAttribute[charaNumber][ATR_0] = charaNumber; - if( (type == MAP_STREET) || (type == MAP_WALL) || (type == MAP_ITEMCHECK) ){ + if ((type == MAP_STREET) || (type == MAP_WALL) || (type == MAP_ITEMCHECK)) { //文字データのセット - GetDlgItemText( hWnd, IDC_EDIT_MESSAGE, str, MESSAGE_STR_MAX ); - SetMessageData( &mapAttribute[charaNumber][ATR_STRING], str ); - } else if( type == MAP_URLGATE ){ - GetDlgItemText( hWnd, IDC_EDIT_URL, str, MESSAGE_STR_MAX ); - GetDlgItemText( hWnd, IDC_EDIT_TARGET, strCut, 50 ); + GetDlgItemText(hWnd, IDC_EDIT_MESSAGE, str, MESSAGE_STR_MAX); + SetMessageData(&mapAttribute[charaNumber][ATR_STRING], str); + } + else if (type == MAP_URLGATE) { + GetDlgItemText(hWnd, IDC_EDIT_URL, str, MESSAGE_STR_MAX); + GetDlgItemText(hWnd, IDC_EDIT_TARGET, strCut, 50); if ((strstr(strCut, "expand") != 0) || (strstr(strCut, "EXPAND") != 0)) { strcpy_s(strCut, BUFFER_STR_MAX, "EXPAND"); } - if( strlen(strCut) != 0 ){ + if (strlen(strCut) != 0) { length = strlen(str); str[length] = 0x0D; - str[length+1] = 0x0A; - str[length+2] = '\0'; - strcat( str, strCut ); + str[length + 1] = 0x0A; + str[length + 2] = '\0'; + strcat_s(str, MESSAGE_STR_MAX, strCut); } - SetMessageData( &mapAttribute[charaNumber][ATR_STRING], str ); + SetMessageData(&mapAttribute[charaNumber][ATR_STRING], str); } //数値データを設定 - for( number = 0 ; number < 100 ; ++number ){ - if( Map[number].Object == END ) break; - if( Map[number].Object == type ){ - GetDlgItemText( hWnd, Map[number].Id, str, sizeof(str) ); - if( (Map[number].Atr == ATR_JUMP_X) || (Map[number].Atr == ATR_JUMP_Y) ){ - int position = atoi( str ); - if( position >= g_iMapSize ){ - MessageBox( g_hWnd, "「座標」の数値範囲が規定値を超えています。\n マップサイズ以下を指定してください。", "警告!", MB_OK ); - } else if( (position < -100) || ((position > 100) && (str[0] == '+')) ){ - MessageBox( g_hWnd, "「座標」の数値範囲が規定値を超えています。\n -100以上、100以下を指定してください。", "警告!", MB_OK ); - } else { - if( (str[0] == '+') || (str[0] == '-') ) position += 10000; + for (number = 0; number < 100; ++number) { + if (Map[number].Object == END) break; + if (Map[number].Object == type) { + GetDlgItemText(hWnd, Map[number].Id, str, sizeof(str)); + if ((Map[number].Atr == ATR_JUMP_X) || (Map[number].Atr == ATR_JUMP_Y)) { + int position = atoi(str); + if (position >= g_iMapSize) { + MessageBox(g_hWnd, "「座標」の数値範囲が規定値を超えています。\n マップサイズ以下を指定してください。", "警告!", MB_OK); + } + else if ((position < -100) || ((position > 100) && (str[0] == '+'))) { + MessageBox(g_hWnd, "「座標」の数値範囲が規定値を超えています。\n -100以上、100以下を指定してください。", "警告!", MB_OK); + } + else { + if ((str[0] == '+') || (str[0] == '-')) position += 10000; mapAttribute[charaNumber][Map[number].Atr] = position; } - } else { - if( (Map[number].Max != 0) && ((Map[number].Max < atoi(str)) || (atoi(str) < 0)) ){ + } + else { + if ((Map[number].Max != 0) && ((Map[number].Max < atoi(str)) || (atoi(str) < 0))) { sprintf_s(str, MESSAGE_STR_MAX, "「%s」の数値範囲が規定値を超えています。\n 0以上、%d以下を指定してください。", Map[number].Name, Map[number].Max); - MessageBox( g_hWnd, str, "警告!", MB_OK ); - } else { - mapAttribute[charaNumber][Map[number].Atr] = atoi( str ); + MessageBox(g_hWnd, str, "警告!", MB_OK); + } + else { + mapAttribute[charaNumber][Map[number].Atr] = atoi(str); } } } @@ -3605,7 +3616,9 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara else if ((atol(g_worldPassword) < 1000) && (atol(g_worldPassword) > 0)) { MessageBox(hWnd, "拡張クラスを使用しない場合や、CGI によるステータス引継ぎをおこなわない場合は、\n保守のため暗証番号はなるべく4桁以上にしておくことをお勧めします。\n拡張クラスからの起動やステータス引継ぎができないようになります。", "推奨", MB_OK); } - if (g_worldPassword[0] != '\0') ltoa(atol(g_worldPassword), g_worldPassword, 10); + if (g_worldPassword[0] != '\0') { + _ltoa_s(atol(g_worldPassword), g_worldPassword, 10); + } GetDlgItemText(g_hDlgFoundation, IDC_COMBO_BMP, g_mapcgNameBmp, sizeof(g_mapcgNameBmp)); GetDlgItemText(g_hDlgFoundation, IDC_COMBO_GIF, g_mapcgName, sizeof(g_mapcgName)); From ae80f6beb8fbb91afbc35fcb52da2bd51a5975cc Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 15:46:37 +0900 Subject: [PATCH 14/31] =?UTF-8?q?=E3=82=AF=E3=82=A4=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E3=81=AEsprintf=E3=82=92sprintf=5Fs=E3=81=AB=E5=B7=AE?= =?UTF-8?q?=E3=81=97=E6=9B=BF=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit :memo: 繝溘ル繝槭ャ繝励ョ螳溯」縺ィ繧ウ繝ウ繝輔Μ繧ッ繝医☆繧句庄閭ス諤ァ縺後≠繧 --- WinWwamk.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 8eb6b6b..8bd98d9 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -2711,24 +2711,24 @@ LRESULT CALLBACK QuickViewDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPA BitBlt(hDC, 5, 4, CHIP_SIZE, CHIP_SIZE, g_hmDC, mapAttribute[g_SelectMapData][ATR_X], mapAttribute[g_SelectMapData][ATR_Y], SRCCOPY); SetDlgItemText(g_hDlgQuickView, IDC_EDIT_QVIEW, g_StrMessage[mapAttribute[g_SelectMapData][ATR_STRING]]); //文字表示 - char str[50]; + char str[BUFFER_STR_MAX]; SetBkColor(hDC, GetSysColor(COLOR_3DFACE)); - sprintf(str, "背景パーツ番号:%3d ", g_SelectMapData); + sprintf_s(str, BUFFER_STR_MAX, "背景パーツ番号:%3d ", g_SelectMapData); TextOut(hDC, 50, 5, str, strlen(str)); type = mapAttribute[g_SelectMapData][ATR_TYPE]; - sprintf(str, "種類:%s ", g_MapName[type]); + sprintf_s(str, BUFFER_STR_MAX, "種類:%s ", g_MapName[type]); TextOut(hDC, 50, 26, str, strlen(str)); } else if (g_EditMode == 1) { BitBlt(hDC, 5, 4, CHIP_SIZE, CHIP_SIZE, g_hmDC, objectAttribute[g_SelectObjectData][ATR_X], objectAttribute[g_SelectObjectData][ATR_Y], SRCCOPY); SetDlgItemText(g_hDlgQuickView, IDC_EDIT_QVIEW, g_StrMessage[objectAttribute[g_SelectObjectData][ATR_STRING]]); //文字表示 - char str[50]; + char str[BUFFER_STR_MAX]; SetBkColor(hDC, GetSysColor(COLOR_3DFACE)); - sprintf(str, "物体パーツ番号:%3d ", g_SelectObjectData); + sprintf_s(str, BUFFER_STR_MAX, "物体パーツ番号:%3d ", g_SelectObjectData); TextOut(hDC, 50, 5, str, strlen(str)); type = objectAttribute[g_SelectObjectData][ATR_TYPE]; - sprintf(str, "種類:%s ", g_ObjectName[type]); + sprintf_s(str, BUFFER_STR_MAX, "種類:%s ", g_ObjectName[type]); TextOut(hDC, 50, 26, str, strlen(str)); } ReleaseDC(hWnd, hDC); From 4bd3c1a8e83a518f8d2b761320832d3d3b6a4984 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 16:46:30 +0900 Subject: [PATCH 15/31] =?UTF-8?q?g=5FhWnd=E3=81=8CNULL=E3=81=AE=E5=A0=B4?= =?UTF-8?q?=E5=90=88=E3=81=ABFALSE=E3=82=92=E8=BF=94=E3=81=99=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3=E3=80=81GIF=E8=AA=AD?= =?UTF-8?q?=E3=81=BF=E8=BE=BC=E3=81=BF=E3=81=AB=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 8bd98d9..0f8ce75 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -1127,7 +1127,6 @@ void DeleteCheckMenu() // WWA作成ツール int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int CmdShow) { - MSG msg; WNDCLASS wc; g_hInst = hInst; RECT WindowRect, ClientRect; @@ -1170,6 +1169,9 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C ShowWindow(g_hWnd, CmdShow); UpdateWindow(g_hWnd); } + else { + return FALSE; + } // 初期ファイル名設定 unsigned int i, j; @@ -1240,6 +1242,7 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C // 初期化完了 g_bInitial = TRUE; + MSG msg; if (g_hWnd != NULL) { while (GetMessage(&msg, NULL, 0, 0)) { // ダイアログメッセージ @@ -1300,9 +1303,14 @@ BOOL LoadBitmap() // 画像メモリにGIF描画 g_bLoadGif = ReadGifImage(); - if (g_bFileNotFound == TRUE) return FALSE; // GIF読み込み失敗時 if (g_bLoadGif == FALSE) { + if (g_bFileNotFound == TRUE) { + char errorStr[FILE_PATH_STR_MAX]; + sprintf_s(errorStr, FILE_PATH_STR_MAX, "GIF画像ファイル「%s」がオープンできません。\nファイルが存在するか、他のアプリケーションにより使用されていないかを確認してください。", g_mapcgName); + MessageBox(g_hWnd, errorStr, "注意", MB_OK); + return FALSE; + } strcpy_s(g_mapcgOld, BUFFER_STR_MAX, g_mapcgNameBmp); if (g_pDib->ReadFile(g_mapcgNameBmp) == FALSE) { MessageBox(g_hWnd, "このマップデータに対応する画像ファイル(256色BMPファイル)が読み込めません。\n「編集−基本設定の編集」で256色BMPファイルを指定してください。\n\nこのシステムでは、GIFファイルは直接読み込めないので、\n編集用に256色BMPファイルが必要になります。", "BMPファイル読み込み失敗", MB_OK); @@ -4297,25 +4305,32 @@ BOOL ReadGifImage() int cxPerInch; int cyPerInch; long dx, dy; - char szStr[FILE_PATH_STR_MAX]; //初期化 g_iColorTp = 0; g_bFileNotFound = FALSE; //画像ファイル読み込み - if ((han = CreateFile(g_mapcgName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { - sprintf_s(szStr, FILE_PATH_STR_MAX, "GIF画像ファイル「%s」がオープンできません。\nファイルが存在するか、他のアプリケーションにより使用されていないかを確認してください。", g_mapcgName); - MessageBox(g_hWnd, szStr, "注意", MB_OK); + han = CreateFile(g_mapcgName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (han == INVALID_HANDLE_VALUE) { g_bFileNotFound = TRUE; return FALSE; } siz = GetFileSize(han, NULL); hgb = GlobalAlloc(GPTR, siz); - ReadFile(han, hgb, siz, &dw, NULL); + BOOL readResult = ReadFile(han, hgb, siz, &dw, NULL); + if (readResult == FALSE) { + return FALSE; + } CloseHandle(han); + //ストリームを作成 - CreateStreamOnHGlobal(hgb, TRUE, &ist); + HRESULT streamResult; + streamResult = CreateStreamOnHGlobal(hgb, TRUE, &ist); + if (streamResult == E_INVALIDARG || streamResult == E_OUTOFMEMORY) { + return FALSE; + } + //イメージをロード OleLoadPicture(ist, siz, TRUE, IID_IPicture, (LPVOID*)& ipi); From 39477cac6be97accd29ab42701abdc40086eaa8a Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 19:46:54 +0900 Subject: [PATCH 16/31] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=81=AE=E7=B7=A8=E9=9B=86=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E3=81=AE=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E3=82=92=E5=BE=AE=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Script2.rc b/Script2.rc index 8187ce3..5c35ff0 100644 --- a/Script2.rc +++ b/Script2.rc @@ -475,13 +475,13 @@ FONT 9, " BEGIN DEFPUSHBUTTON "決定",IDOK,30,210,50,14 PUSHBUTTON "取り消し",IDCANCEL,81,210,50,14 - LTEXT "ワールド名",IDC_STATIC,31,4,32,8 + LTEXT "ワールド名",IDC_STATIC,31,7,32,8 EDITTEXT IDC_EDIT_WORLDNAME,66,4,75,14 LTEXT "GIF画像ファイル名",IDC_STATIC,8,24,55,8 EDITTEXT IDC_COMBO_GIF,66,21,75,14 - LTEXT "BMP画像ファイル名",IDC_STATIC_BMP,5,56,58,8 + LTEXT "BMP画像ファイル名",IDC_STATIC_BMP,5,58,58,8 EDITTEXT IDC_COMBO_BMP,66,55,75,14 - LTEXT "暗証番号(ID番号)",IDC_STATIC,9,40,55,8 + LTEXT "暗証番号(ID番号)",IDC_STATIC,9,41,55,8 EDITTEXT IDC_EDIT_PASSWORD,66,38,40,14,ES_AUTOHSCROLL LTEXT "プレイヤー初期X座標",IDC_STATIC,7,91,64,8 LTEXT "プレイヤー初期Y座標",IDC_STATIC,7,107,64,8 From 06cb3842cf47deaf608a83fc0d61fe21fd9e36bd Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 19:58:41 +0900 Subject: [PATCH 17/31] =?UTF-8?q?=E3=83=9E=E3=83=83=E3=83=97=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E3=81=AE=E8=AA=AD=E8=BE=BC=E3=81=A8=E7=94=BB?= =?UTF-8?q?=E5=83=8F=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE=E8=AA=AD=E8=BE=BC?= =?UTF-8?q?=E3=81=ABtry-catch=E3=82=92=E5=88=A9=E7=94=A8=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 72 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 27 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 0f8ce75..cdeac30 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -1303,14 +1303,11 @@ BOOL LoadBitmap() // 画像メモリにGIF描画 g_bLoadGif = ReadGifImage(); + if (g_bFileNotFound == TRUE) { + return FALSE; + } // GIF読み込み失敗時 if (g_bLoadGif == FALSE) { - if (g_bFileNotFound == TRUE) { - char errorStr[FILE_PATH_STR_MAX]; - sprintf_s(errorStr, FILE_PATH_STR_MAX, "GIF画像ファイル「%s」がオープンできません。\nファイルが存在するか、他のアプリケーションにより使用されていないかを確認してください。", g_mapcgName); - MessageBox(g_hWnd, errorStr, "注意", MB_OK); - return FALSE; - } strcpy_s(g_mapcgOld, BUFFER_STR_MAX, g_mapcgNameBmp); if (g_pDib->ReadFile(g_mapcgNameBmp) == FALSE) { MessageBox(g_hWnd, "このマップデータに対応する画像ファイル(256色BMPファイル)が読み込めません。\n「編集−基本設定の編集」で256色BMPファイルを指定してください。\n\nこのシステムでは、GIFファイルは直接読み込めないので、\n編集用に256色BMPファイルが必要になります。", "BMPファイル読み込み失敗", MB_OK); @@ -1559,14 +1556,24 @@ BOOL LoadMapData(char* FileName) DestroyWindow(g_hDlgSelectChara); // データオープン - hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); - if (hFile == INVALID_HANDLE_VALUE) { - MessageBox(g_hWnd, "マップデータファイルが読み込みできません。", "注意", MB_OK); + try + { + BOOL readResult; + hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); + if (hFile == INVALID_HANDLE_VALUE) { + throw "マップデータファイルが読込できません。"; + } + readResult = ReadFile(hFile, LPVOID(&PressData), sizeof(PressData), &BytesRead, 0); + if (readResult == FALSE) { + throw "マップデータファイルが読込できません。"; + } + CloseHandle(hFile); + } + catch (char* errorMessage) + { + MessageBox(g_hWnd, errorMessage, "注意", MB_OK); return FALSE; } - // データ読み込み - ReadFile(hFile, LPVOID(&PressData), sizeof(PressData), &BytesRead, 0); - CloseHandle(hFile); // データ解凍 int i, j; @@ -4311,23 +4318,34 @@ BOOL ReadGifImage() g_bFileNotFound = FALSE; //画像ファイル読み込み - han = CreateFile(g_mapcgName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - if (han == INVALID_HANDLE_VALUE) { - g_bFileNotFound = TRUE; - return FALSE; - } - siz = GetFileSize(han, NULL); - hgb = GlobalAlloc(GPTR, siz); - BOOL readResult = ReadFile(han, hgb, siz, &dw, NULL); - if (readResult == FALSE) { - return FALSE; + try { + han = CreateFile(g_mapcgName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (han == INVALID_HANDLE_VALUE) { + throw TRUE; + } + siz = GetFileSize(han, NULL); + hgb = GlobalAlloc(GPTR, siz); + BOOL readResult = ReadFile(han, hgb, siz, &dw, NULL); + if (readResult == FALSE) { + throw FALSE; + } + CloseHandle(han); + + //ストリームを作成 + HRESULT streamResult; + streamResult = CreateStreamOnHGlobal(hgb, TRUE, &ist); + if (streamResult == E_INVALIDARG || streamResult == E_OUTOFMEMORY) { + throw FALSE; + } } - CloseHandle(han); + // 画像データの読込に失敗した場合 + catch (BOOL fileNotFound) + { + g_bFileNotFound = fileNotFound; - //ストリームを作成 - HRESULT streamResult; - streamResult = CreateStreamOnHGlobal(hgb, TRUE, &ist); - if (streamResult == E_INVALIDARG || streamResult == E_OUTOFMEMORY) { + char errorStr[FILE_PATH_STR_MAX]; + sprintf_s(errorStr, FILE_PATH_STR_MAX, "GIF画像ファイル「%s」がオープンできません。\nファイルが存在するか、他のアプリケーションにより使用されていないかを確認してください。", g_mapcgName); + MessageBox(g_hWnd, errorStr, "注意", MB_OK); return FALSE; } From ca61b75dc2cd07ba06b2e4e9e72ed581026e5915 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 20:22:22 +0900 Subject: [PATCH 18/31] =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=81=AE=E3=82=B5=E3=82=A4=E3=82=BA=E3=82=921?= =?UTF-8?q?=E3=83=9E=E3=82=B9=E5=88=86=E6=8B=A1=E5=A4=A7=E3=80=81=E3=83=9E?= =?UTF-8?q?=E3=82=A6=E3=82=B9=E3=83=9B=E3=82=A4=E3=83=BC=E3=83=AB=E3=81=AE?= =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB=E9=87=8F=E3=82=92?= =?UTF-8?q?2=E5=80=8D=E3=81=AB=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 6 +++--- WinWwamk.cpp | 12 +++++++----- WinWwamk.ini | 5 ++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Script2.rc b/Script2.rc index 3bdcaf8..43b76a7 100644 --- a/Script2.rc +++ b/Script2.rc @@ -738,7 +738,7 @@ BEGIN GROUPBOX "",IDC_STATIC,8,210,196,44 END -IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 277, 133 +IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 283, 139 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "ミニマップ" @@ -977,9 +977,9 @@ BEGIN IDD_DIALOG_MINIMAP, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 258 + RIGHTMARGIN, 264 TOPMARGIN, 7 - BOTTOMMARGIN, 115 + BOTTOMMARGIN, 122 END END #endif // APSTUDIO_INVOKED diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 7653070..bd27231 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -129,8 +129,8 @@ int mapYtop = 0; int miniMapXtop = 0; int miniMapYtop = 0; -const int miniMapWidth = 40; -const int miniMapHeight = 20; +const int miniMapWidth = 41; +const int miniMapHeight = 21; //ステータス int statusEnergyMax; @@ -784,8 +784,8 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam case WM_MOUSEWHEEL: { int scrollLines; - int scrollDelta = GET_WHEEL_DELTA_WPARAM(wParam); - BOOL parameterResult = SystemParametersInfo(SPI_GETWHEELSCROLLLINES, NULL, &scrollLines, 0); + const int scrollDelta = GET_WHEEL_DELTA_WPARAM(wParam); + const BOOL parameterResult = SystemParametersInfo(SPI_GETWHEELSCROLLLINES, NULL, &scrollLines, 0); if (parameterResult == FALSE) { scrollLines = 1; } @@ -4035,8 +4035,10 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case WM_MOUSEWHEEL: { int scrollSize; - int scrollDelta = GET_WHEEL_DELTA_WPARAM(wParam); + const int scrollDelta = GET_WHEEL_DELTA_WPARAM(wParam); SystemParametersInfo(SPI_GETWHEELSCROLLLINES, NULL, &scrollSize, 0); + // スクロールサイズはスクロール行数の2倍の量 + scrollSize *= 2; // 横方向 if (GET_KEYSTATE_WPARAM(wParam) == MK_SHIFT) { if (scrollDelta < 0) { diff --git a/WinWwamk.ini b/WinWwamk.ini index 2819bae..750f597 100644 --- a/WinWwamk.ini +++ b/WinWwamk.ini @@ -1,4 +1,3 @@ [Main] -TemplateFile=template.html -PositionX=20 -PositionY=20 +PositionX=0 +PositionY=0 From 37dd796339917e68d1def7dbf7bfb7120dc13060 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Fri, 3 May 2019 22:08:27 +0900 Subject: [PATCH 19/31] =?UTF-8?q?=E5=AE=9A=E6=95=B0MINIMAP=5FSIZE=5FDIVIDE?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=81=E3=83=9F=E3=83=8B=E3=83=9E?= =?UTF-8?q?=E3=83=83=E3=83=97=E7=94=A8=E3=81=AEAND=E3=81=A8OR=E3=81=AE?= =?UTF-8?q?=E3=83=93=E3=83=83=E3=83=88=E3=83=9E=E3=83=83=E3=83=97=E3=80=81?= =?UTF-8?q?HDC=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 50 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index bd27231..8f755a8 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -96,6 +96,7 @@ #define SCREEN_CHIP_SIZE 11 // 1チップのサイズ (ピクセル単位) #define CHIP_SIZE 40 +#define MINIMAP_SIZE_DIVIDE 4 // パーツ選択ダイアログで表示するパーツ行数 (リソースファイルの変更も忘れずに) #define DIALOG_OBJECT_SELECT_LINE 4 @@ -201,19 +202,23 @@ HWND g_hDlgBasicMes = NULL; HWND g_hDlgMiniMap = NULL; HDC g_hmDC = NULL; HDC g_hmDCHalf = NULL; -HDC g_hmDCMini = NULL; -HDC g_hmDCMiniMap = NULL; HDC g_hmDCAnd = NULL; HDC g_hmDCOr = NULL; HDC g_hmDCExtra = NULL; +HDC g_hmDCMini = NULL; +HDC g_hmDCMiniAnd = NULL; +HDC g_hmDCMiniOr = NULL; +HDC g_hmDCMiniMap = NULL; HBITMAP g_hBitmap = NULL; HBITMAP g_hBitmapHalf = NULL; -HBITMAP g_hBitmapMini = NULL; -HBITMAP g_hBitmapMiniMap = NULL; HBITMAP g_hBitmapGif = NULL; HBITMAP g_hBitmapAnd = NULL; HBITMAP g_hBitmapOr = NULL; HBITMAP g_hBitmapExtra = NULL; +HBITMAP g_hBitmapMini = NULL; +HBITMAP g_hBitmapMiniAnd = NULL; +HBITMAP g_hBitmapMiniOr = NULL; +HBITMAP g_hBitmapMiniMap = NULL; TRACKMOUSEEVENT g_MapEditTracking; TRACKMOUSEEVENT g_MiniMapTracking; @@ -1343,10 +1348,12 @@ BOOL LoadBitmap() if (g_hmDC == NULL) { g_hmDC = CreateCompatibleDC(hDC); g_hmDCHalf = CreateCompatibleDC(hDC); - g_hmDCMini = CreateCompatibleDC(hDC); - g_hmDCMiniMap = CreateCompatibleDC(hDC); g_hmDCAnd = CreateCompatibleDC(hDC); g_hmDCOr = CreateCompatibleDC(hDC); + g_hmDCMini = CreateCompatibleDC(hDC); + g_hmDCMiniAnd = CreateCompatibleDC(hDC); + g_hmDCMiniOr = CreateCompatibleDC(hDC); + g_hmDCMiniMap = CreateCompatibleDC(hDC); g_hmDCExtra = CreateCompatibleDC(hDC); g_hBitmapExtra = CreateCompatibleBitmap(hDC, CHIP_SIZE * SCREEN_CHIP_SIZE, 20); @@ -1395,14 +1402,6 @@ BOOL LoadBitmap() // 1/2サイズのCGを描画$$ StretchBlt(g_hmDCHalf, 0, 0, 200, (g_iLoadCGHeight / 2), g_hmDC, 0, 0, CHIP_SIZE * 10, g_iLoadCGHeight, SRCCOPY); - // ミニマップサイズのCG領域確保 - if (g_hBitmapMini != NULL) { - DeleteObject(g_hBitmapMini); - } - g_hBitmapMini = CreateCompatibleBitmap(hDC, 100, (g_iLoadCGHeight / 4)); - SelectObject(g_hmDCMini, g_hBitmapMini); - StretchBlt(g_hmDCMini, 0, 0, 100, (g_iLoadCGHeight / 4), g_hmDC, 0, 0, 400, g_iLoadCGHeight, SRCCOPY); - // AND画像領域確保 if (g_hBitmapAnd != NULL) DeleteObject(g_hBitmapAnd); g_hBitmapAnd = CreateBitmap(CHIP_SIZE * 10, g_iLoadCGHeight, 1, 1, NULL); @@ -1411,6 +1410,7 @@ BOOL LoadBitmap() if (g_iColorTp == 0) g_iColorTp = GetPixel(g_hmDC, 60, 20); SetBkColor(g_hmDC, g_iColorTp); BitBlt(g_hmDCAnd, 0, 0, CHIP_SIZE * 10, g_iLoadCGHeight, g_hmDC, 0, 0, SRCCOPY); + // AND画像反転 BitBlt(g_hmDCAnd, 0, 0, CHIP_SIZE * 10, g_iLoadCGHeight, NULL, 0, 0, DSTINVERT); // OR画像領域確保 @@ -1423,6 +1423,21 @@ BOOL LoadBitmap() // AND画像反転 BitBlt(g_hmDCAnd, 0, 0, CHIP_SIZE * 10, g_iLoadCGHeight, NULL, 0, 0, DSTINVERT); + // ミニマップのCG領域確保 + HDC* miniMapHDCs[] = { &g_hmDCMini, &g_hmDCMiniAnd, &g_hmDCMiniOr }; + HDC* baseHDCs[] = { &g_hmDC, &g_hmDCAnd, &g_hmDCOr }; + HBITMAP* miniMapBitmaps[] = { &g_hBitmapMini, &g_hBitmapMiniAnd, &g_hBitmapMiniOr }; + for (int i = 0; i < 3; i++) { + if (*miniMapBitmaps[i] != NULL) { + DeleteObject(*miniMapBitmaps[i]); + } + const int imageWidth = CHIP_SIZE * 10 / MINIMAP_SIZE_DIVIDE; + const int imageHeight = g_iLoadCGHeight / MINIMAP_SIZE_DIVIDE; + *miniMapBitmaps[i] = CreateCompatibleBitmap(hDC, imageWidth, imageHeight); + SelectObject(*miniMapHDCs[i], *miniMapBitmaps[i]); + StretchBlt(*miniMapHDCs[i], 0, 0, imageWidth, imageHeight, *baseHDCs[i], 0, 0, CHIP_SIZE * 10, g_iLoadCGHeight, SRCCOPY); + } + // デバイス解放 ReleaseDC(g_hWnd, hDC); // 再描画 @@ -1568,8 +1583,11 @@ void CreateMiniMap() for (x = 0; x < g_iMapSize; x++) { mapNumber = map[y][x]; BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMini, mapAttribute[mapNumber][ATR_X] / 4, mapAttribute[mapNumber][ATR_Y] / 4, SRCCOPY); - // objNumber = mapObject[y][x]; - // BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMini, objectAttribute[objNumber][ATR_X] / 4, mapAttribute[objNumber][ATR_Y] / 4, SRCCOPY); + objNumber = mapObject[y][x]; + if (objNumber != 0) { + BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMiniAnd, objectAttribute[objNumber][ATR_X] / 4, objectAttribute[objNumber][ATR_Y] / 4, SRCAND); + BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMiniOr, objectAttribute[objNumber][ATR_X] / 4, objectAttribute[objNumber][ATR_Y] / 4, SRCPAINT); + } } } } From 466207f70f48ec2dd8605d8a084783c6992f47a2 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Mon, 6 May 2019 00:03:21 +0900 Subject: [PATCH 20/31] =?UTF-8?q?=E3=82=AF=E3=82=A4=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E3=82=A6=E3=82=A4=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=82=A6=E3=81=AE=E4=BD=8D=E7=BD=AE=E3=82=84=E3=82=B5=E3=82=A4?= =?UTF-8?q?=E3=82=BA=E3=82=92=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/Script2.rc b/Script2.rc index ac8769b..4409642 100644 --- a/Script2.rc +++ b/Script2.rc @@ -698,16 +698,16 @@ BEGIN LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,66,8 END -IDD_DIALOG_QVIEW DIALOGEX 0, 0, 267, 37 +IDD_DIALOG_QVIEW DIALOGEX 0, 0, 263, 36 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "クイックビューウィンドウ" -FONT 8, "MS ゴシック", 0, 0, 0x0 +FONT 9, "MS ゴシック", 400, 0, 0x80 BEGIN - EDITTEXT IDC_EDIT_QVIEW,135,0,132,36,ES_MULTILINE | ES_READONLY | ES_WANTRETURN + EDITTEXT IDC_EDIT_QVIEW,126,0,138,36,ES_MULTILINE | ES_READONLY | ES_WANTRETURN CONTROL "",IDC_PICTURE_QVIEW,"Static",SS_OWNERDRAW,6,6,24,24 - LTEXT "スタティック",IDC_STATIC_QVIEW_NUMBER,36,6,96,8 - LTEXT "スタティック",IDC_STATIC_QVIEW_TYPE,36,18,96,8 + LTEXT "スタティック",IDC_STATIC_QVIEW_NUMBER,36,6,90,8 + LTEXT "スタティック",IDC_STATIC_QVIEW_TYPE,36,18,90,8 END IDD_DIALOG_LOCALGATE_OBJ DIALOGEX 0, 0, 138, 99 @@ -972,7 +972,7 @@ BEGIN IDD_DIALOG_QVIEW, DIALOG BEGIN - RIGHTMARGIN, 264 + RIGHTMARGIN, 260 END IDD_DIALOG_LOCALGATE_OBJ, DIALOG @@ -1042,11 +1042,6 @@ BEGIN 0 END -IDD_DIALOG_MESSAGE AFX_DIALOG_LAYOUT -BEGIN - 0 -END - IDD_DIALOG_MONSTER AFX_DIALOG_LAYOUT BEGIN 0 From b5d44edfb9e9ee8196b96b2d3e13b61a63da5b08 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Mon, 6 May 2019 00:04:14 +0900 Subject: [PATCH 21/31] =?UTF-8?q?MINIMAP=5FCHIP=5FSIZE=20=E3=82=92?= =?UTF-8?q?=E5=AE=9A=E7=BE=A9=E3=80=81=E3=82=AF=E3=82=A4=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E3=82=A6=E3=82=A4=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=82=A6=E3=81=AE=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=80=81=E4=BD=BF=E7=94=A8=E3=81=97=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=A4=89=E6=95=B0=E3=82=84=E5=8D=B1=E3=81=AA?= =?UTF-8?q?=E3=81=84=E5=87=A6=E7=90=86=E3=81=AE=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index ec2c06e..d304e03 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -102,6 +102,7 @@ // 1チップのサイズ (ピクセル単位) #define CHIP_SIZE 40 #define MINIMAP_SIZE_DIVIDE 4 +#define MINIMAP_CHIP_SIZE CHIP_SIZE / MINIMAP_SIZE_DIVIDE // パーツ選択ダイアログで表示するパーツ行数 (リソースファイルの変更も忘れずに) #define DIALOG_OBJECT_SELECT_LINE 4 @@ -1607,7 +1608,7 @@ void CreateMiniMap() void PaintMiniMap(HWND hWnd) { - int i, j, mdata; + int i; HDC hDC; PAINTSTRUCT ps; HPEN screenPen, currentPen; @@ -2918,6 +2919,7 @@ LRESULT CALLBACK QuickViewDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPA char* partsMessageString; int* partsNumber; char* partsTypeString; + CString partsCaptionString; if (g_EditMode == 0) { partsImageX = &mapAttribute[g_SelectMapData][ATR_X]; @@ -2925,6 +2927,7 @@ LRESULT CALLBACK QuickViewDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPA partsMessageString = g_StrMessage[mapAttribute[g_SelectMapData][ATR_STRING]]; partsNumber = &g_SelectMapData; partsTypeString = g_MapName[mapAttribute[g_SelectMapData][ATR_TYPE]]; + partsCaptionString = "背景パーツ"; } else { partsImageX = &objectAttribute[g_SelectObjectData][ATR_X]; @@ -2932,6 +2935,7 @@ LRESULT CALLBACK QuickViewDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPA partsMessageString = g_StrMessage[objectAttribute[g_SelectObjectData][ATR_STRING]]; partsNumber = &g_SelectObjectData; partsTypeString = g_ObjectName[objectAttribute[g_SelectObjectData][ATR_TYPE]]; + partsCaptionString = "物体パーツ"; } { @@ -2943,7 +2947,7 @@ LRESULT CALLBACK QuickViewDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPA // パーツ番号 CString partsNumberText; - partsNumberText.Format("背景パーツ %4d番", *partsNumber); + partsNumberText.Format("%s %4d番", partsCaptionString.GetString(), *partsNumber); SetDlgItemText(g_hDlgQuickView, IDC_STATIC_QVIEW_NUMBER, partsNumberText); // 種類 @@ -4159,8 +4163,17 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA // クリック座標からマップの位置を移動 void JumpMapFromMiniMap(HWND hWnd, int mouseX, int mouseY) { - const int x = floor(mouseX / 10) + miniMapXtop; - const int y = floor(mouseY / 10) + miniMapYtop; + int x = miniMapXtop; + int y = miniMapYtop; + // 座標をミニマップ座標単位で計算 (そのまま割ることは用途上適していないため) + { + for (int mouseXStock = mouseX; mouseXStock > 0; mouseXStock -= MINIMAP_CHIP_SIZE) { + x++; + } + for (int mouseYStock = mouseY; mouseYStock > 0; mouseYStock -= MINIMAP_CHIP_SIZE) { + y++; + } + } mapXtop = x - 5; mapYtop = y - 5; From ff042c52d479db583882ba699abaf7e7b8f2bf74 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Mon, 6 May 2019 00:34:22 +0900 Subject: [PATCH 22/31] =?UTF-8?q?=E5=AE=9A=E6=95=B0=E3=81=AE=E5=AE=9A?= =?UTF-8?q?=E7=BE=A9=E6=96=B9=E6=B3=95=E3=81=A7MINIMAP=5FWIDTH/HEIGHT?= =?UTF-8?q?=E3=81=A8MINIMAP=5FCHIP=5FSIZE=E3=82=92=E4=BA=A4=E6=8F=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 2 +- WinWwamk.cpp | 136 +++++++++++++++++++++++++-------------------------- 2 files changed, 69 insertions(+), 69 deletions(-) diff --git a/Script2.rc b/Script2.rc index 4409642..36fb21a 100644 --- a/Script2.rc +++ b/Script2.rc @@ -755,7 +755,7 @@ BEGIN GROUPBOX "",IDC_STATIC,8,210,196,44 END -IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 283, 139 +IDD_DIALOG_MINIMAP DIALOGEX 0, 0, 284, 139 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "ミニマップ" diff --git a/WinWwamk.cpp b/WinWwamk.cpp index d304e03..611f4f3 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -102,7 +102,8 @@ // 1チップのサイズ (ピクセル単位) #define CHIP_SIZE 40 #define MINIMAP_SIZE_DIVIDE 4 -#define MINIMAP_CHIP_SIZE CHIP_SIZE / MINIMAP_SIZE_DIVIDE +#define MINIMAP_WIDTH 41 +#define MINIMAP_HEIGHT 21 // パーツ選択ダイアログで表示するパーツ行数 (リソースファイルの変更も忘れずに) #define DIALOG_OBJECT_SELECT_LINE 4 @@ -133,11 +134,10 @@ char g_mapcgOld[BUFFER_STR_MAX]; int mapX, mapY; int mapXtop = 0; int mapYtop = 0; -int miniMapXtop = 0; -int miniMapYtop = 0; +int minimapXtop = 0; +int minimapYtop = 0; -const int miniMapWidth = 41; -const int miniMapHeight = 21; +const int minimapChipSize = CHIP_SIZE / MINIMAP_SIZE_DIVIDE; //ステータス int statusEnergyMax; @@ -439,7 +439,7 @@ void PaintStatus( BOOL flag ); // ミニマップ作成 void CreateMiniMap(); // ミニマップ描画 -void PaintMiniMap( HWND hWnd ); +void PaintMinimap( HWND hWnd ); // 選択ダイアログプロシージャ LRESULT CALLBACK SelectObjectDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); @@ -1606,7 +1606,7 @@ void CreateMiniMap() //##------------------------------------------------------------------ // ミニマップ描画 -void PaintMiniMap(HWND hWnd) +void PaintMinimap(HWND hWnd) { int i; HDC hDC; @@ -1615,7 +1615,7 @@ void PaintMiniMap(HWND hWnd) HGDIOBJ currentBrush; hDC = BeginPaint(hWnd, &ps); - BitBlt(hDC, 0, 0, miniMapWidth * 10, miniMapHeight * 10, g_hmDCMiniMap, miniMapXtop * 10, miniMapYtop * 10, SRCCOPY); + BitBlt(hDC, 0, 0, MINIMAP_WIDTH * minimapChipSize, MINIMAP_HEIGHT * minimapChipSize, g_hmDCMiniMap, minimapXtop * minimapChipSize, minimapYtop * minimapChipSize, SRCCOPY); // 画面境界線描画 screenPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255)); @@ -1625,16 +1625,16 @@ void PaintMiniMap(HWND hWnd) SelectObject(hDC, screenPen); int screenLinePos; - for (i = 0; i < miniMapWidth; ++i) { - if ((i + miniMapXtop) % 10 == 0) { - screenLinePos = i * 10 + 5; - DrawLine(hDC, screenLinePos, 0, screenLinePos, miniMapHeight * 10); + for (i = 0; i < MINIMAP_WIDTH; ++i) { + if ((i + minimapXtop) % minimapChipSize == 0) { + screenLinePos = (i * minimapChipSize) + (minimapChipSize / 2); + DrawLine(hDC, screenLinePos, 0, screenLinePos, MINIMAP_HEIGHT * minimapChipSize); } } - for (i = 0; i < miniMapHeight; ++i) { - if ((i + miniMapYtop) % 10 == 0) { - screenLinePos = i * 10 + 5; - DrawLine(hDC, 0, screenLinePos, miniMapWidth * 10, screenLinePos); + for (i = 0; i < MINIMAP_HEIGHT; ++i) { + if ((i + minimapYtop) % minimapChipSize == 0) { + screenLinePos = (i * minimapChipSize) + (minimapChipSize / 2); + DrawLine(hDC, 0, screenLinePos, MINIMAP_WIDTH * minimapChipSize, screenLinePos); } } DeleteObject(screenPen); @@ -1642,9 +1642,9 @@ void PaintMiniMap(HWND hWnd) SelectObject(hDC, currentPen); SelectObject(hDC, currentBrush); { - const int currentX = (mapXtop - miniMapXtop) * 10; - const int currentY = (mapYtop - miniMapYtop) * 10; - Rectangle(hDC, currentX, currentY, currentX + 109, currentY + 109); + const int currentX = (mapXtop - minimapXtop) * minimapChipSize; + const int currentY = (mapYtop - minimapYtop) * minimapChipSize; + Rectangle(hDC, currentX, currentY, currentX + minimapChipSize * SCREEN_CHIP_SIZE, currentY + minimapChipSize * SCREEN_CHIP_SIZE); } DeleteObject(currentPen); DeleteObject(currentBrush); @@ -1828,8 +1828,8 @@ BOOL LoadMapData(char* FileName) // スクロールバー設定 SetScrollRange(g_hWnd, SB_VERT, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); SetScrollRange(g_hWnd, SB_HORZ, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); - SetScrollRange(g_hDlgMiniMap, SB_VERT, 0, g_iMapSize - miniMapHeight, FALSE); - SetScrollRange(g_hDlgMiniMap, SB_HORZ, 0, g_iMapSize - miniMapWidth, FALSE); + SetScrollRange(g_hDlgMiniMap, SB_VERT, 0, g_iMapSize - MINIMAP_HEIGHT, FALSE); + SetScrollRange(g_hDlgMiniMap, SB_HORZ, 0, g_iMapSize - MINIMAP_WIDTH, FALSE); // パーツ最大数設定 g_iMapPartsMax = ((iDataMapCount - 1) / 50) * 50 + 50; @@ -3935,8 +3935,8 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara // スクロールバー設定 SetScrollRange(g_hWnd, SB_VERT, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); SetScrollRange(g_hWnd, SB_HORZ, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); - SetScrollRange(g_hDlgMiniMap, SB_VERT, 0, (g_iMapSize - miniMapHeight), FALSE); - SetScrollRange(g_hDlgMiniMap, SB_HORZ, 0, (g_iMapSize - miniMapWidth), FALSE); + SetScrollRange(g_hDlgMiniMap, SB_VERT, 0, (g_iMapSize - MINIMAP_HEIGHT), FALSE); + SetScrollRange(g_hDlgMiniMap, SB_HORZ, 0, (g_iMapSize - MINIMAP_WIDTH), FALSE); } // 背景パーツ最大数拡張 else if (LOWORD(wParam) == IDC_BUTTON_MAP_PARTS) { @@ -4016,8 +4016,8 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA switch (message) { case WM_INITDIALOG: - SetScrollRange(hWnd, SB_VERT, 0, g_iMapSize - miniMapHeight, FALSE); - SetScrollRange(hWnd, SB_HORZ, 0, g_iMapSize - miniMapWidth, FALSE); + SetScrollRange(hWnd, SB_VERT, 0, g_iMapSize - MINIMAP_HEIGHT, FALSE); + SetScrollRange(hWnd, SB_HORZ, 0, g_iMapSize - MINIMAP_WIDTH, FALSE); g_MiniMapTracking = { sizeof(TRACKMOUSEEVENT), TME_LEAVE, @@ -4051,56 +4051,56 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case WM_HSCROLL: if (LOWORD(wParam) == SB_LINEDOWN) { - if (miniMapXtop < g_iMapSize - miniMapWidth) ++miniMapXtop; - SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + if (minimapXtop < g_iMapSize - MINIMAP_WIDTH) ++minimapXtop; + SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); } else if (LOWORD(wParam) == SB_LINEUP) { - if (miniMapXtop > 0) --miniMapXtop; - SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + if (minimapXtop > 0) --minimapXtop; + SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); } else if (LOWORD(wParam) == SB_THUMBPOSITION) { - miniMapXtop = HIWORD(wParam); - SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + minimapXtop = HIWORD(wParam); + SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); } else if (LOWORD(wParam) == SB_THUMBTRACK) { - miniMapXtop = HIWORD(wParam); - SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + minimapXtop = HIWORD(wParam); + SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); } else if (LOWORD(wParam) == SB_PAGEDOWN) { - if (miniMapXtop <= g_iMapSize - miniMapWidth - 5) miniMapXtop += 5; - SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + if (minimapXtop <= g_iMapSize - MINIMAP_WIDTH - 5) minimapXtop += 5; + SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); } else if (LOWORD(wParam) == SB_PAGEUP) { - if (miniMapXtop >= 5) miniMapXtop -= 5; - SetScrollPos(g_hDlgMiniMap, SB_HORZ, miniMapXtop, 1); + if (minimapXtop >= 5) minimapXtop -= 5; + SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); } InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; case WM_VSCROLL: if (LOWORD(wParam) == SB_LINEDOWN) { - if (miniMapYtop < g_iMapSize - miniMapHeight) ++miniMapYtop; - SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + if (minimapYtop < g_iMapSize - MINIMAP_HEIGHT) ++minimapYtop; + SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); } else if (LOWORD(wParam) == SB_LINEUP) { - if (miniMapYtop > 0) --miniMapYtop; - SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + if (minimapYtop > 0) --minimapYtop; + SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); } else if (LOWORD(wParam) == SB_THUMBPOSITION) { - miniMapYtop = HIWORD(wParam); - SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + minimapYtop = HIWORD(wParam); + SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); } else if (LOWORD(wParam) == SB_THUMBTRACK) { - miniMapYtop = HIWORD(wParam); - SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + minimapYtop = HIWORD(wParam); + SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); } else if (LOWORD(wParam) == SB_PAGEDOWN) { - if (miniMapYtop <= g_iMapSize - miniMapHeight - 5) miniMapYtop += 5; - SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + if (minimapYtop <= g_iMapSize - MINIMAP_HEIGHT - 5) minimapYtop += 5; + SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); } else if (LOWORD(wParam) == SB_PAGEUP) { - if (miniMapYtop >= 5) miniMapYtop -= 5; - SetScrollPos(g_hDlgMiniMap, SB_VERT, miniMapYtop, 1); + if (minimapYtop >= 5) minimapYtop -= 5; + SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); } InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; @@ -4114,34 +4114,34 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA // 横方向 if (GET_KEYSTATE_WPARAM(wParam) == MK_SHIFT) { if (scrollDelta < 0) { - miniMapXtop += scrollSize; - if (miniMapXtop > (g_iMapSize - miniMapWidth)) { - miniMapXtop = g_iMapSize - miniMapWidth; + minimapXtop += scrollSize; + if (minimapXtop > (g_iMapSize - MINIMAP_WIDTH)) { + minimapXtop = g_iMapSize - MINIMAP_WIDTH; } } else if (scrollDelta > 0) { - miniMapXtop -= scrollSize; - if (miniMapXtop < 0) { - miniMapXtop = 0; + minimapXtop -= scrollSize; + if (minimapXtop < 0) { + minimapXtop = 0; } } - SetScrollPos(hWnd, SB_HORZ, miniMapXtop, 1); + SetScrollPos(hWnd, SB_HORZ, minimapXtop, 1); } // 縦方向 else { if (scrollDelta < 0) { - miniMapYtop += scrollSize; - if (miniMapYtop > (g_iMapSize - miniMapHeight)) { - miniMapYtop = g_iMapSize - miniMapHeight; + minimapYtop += scrollSize; + if (minimapYtop > (g_iMapSize - MINIMAP_HEIGHT)) { + minimapYtop = g_iMapSize - MINIMAP_HEIGHT; } } else if (scrollDelta > 0) { - miniMapYtop -= scrollSize; - if (miniMapYtop < 0) { - miniMapYtop = 0; + minimapYtop -= scrollSize; + if (minimapYtop < 0) { + minimapYtop = 0; } } - SetScrollPos(hWnd, SB_VERT, miniMapYtop, 1); + SetScrollPos(hWnd, SB_VERT, minimapYtop, 1); } InvalidateRect(hWnd, NULL, FALSE); break; @@ -4155,7 +4155,7 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA break; case WM_PAINT: - PaintMiniMap(hWnd); + PaintMinimap(hWnd); break; } return 0; @@ -4163,14 +4163,14 @@ LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARA // クリック座標からマップの位置を移動 void JumpMapFromMiniMap(HWND hWnd, int mouseX, int mouseY) { - int x = miniMapXtop; - int y = miniMapYtop; + int x = minimapXtop; + int y = minimapYtop; // 座標をミニマップ座標単位で計算 (そのまま割ることは用途上適していないため) { - for (int mouseXStock = mouseX; mouseXStock > 0; mouseXStock -= MINIMAP_CHIP_SIZE) { + for (int mouseXStock = mouseX; mouseXStock > 0; mouseXStock -= minimapChipSize) { x++; } - for (int mouseYStock = mouseY; mouseYStock > 0; mouseYStock -= MINIMAP_CHIP_SIZE) { + for (int mouseYStock = mouseY; mouseYStock > 0; mouseYStock -= minimapChipSize) { y++; } } From f25940a0bc021800e06f89a7389baa32df9198fb Mon Sep 17 00:00:00 2001 From: Aokashi Date: Mon, 6 May 2019 01:05:48 +0900 Subject: [PATCH 23/31] =?UTF-8?q?=E3=83=91=E3=83=BC=E3=83=84=E9=81=B8?= =?UTF-8?q?=E6=8A=9E=E3=82=A6=E3=82=A4=E3=83=B3=E3=83=89=E3=82=A6=E3=81=AE?= =?UTF-8?q?=E3=83=91=E3=83=BC=E3=83=84=E7=95=AA=E5=8F=B7=E3=81=AE=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E9=A0=98=E5=9F=9F=E3=82=92=E6=8B=A1=E5=A4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Script2.rc b/Script2.rc index 36fb21a..2a63647 100644 --- a/Script2.rc +++ b/Script2.rc @@ -138,8 +138,8 @@ FONT 9, " BEGIN PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,114,108,53,14 PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,174,108,53,14 - LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,111,48,8,SS_CENTERIMAGE - LTEXT "左上",IDC_STATIC_CURRENT_POSITION,60,111,48,8 + LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,111,54,8,SS_CENTERIMAGE + LTEXT "左上",IDC_STATIC_CURRENT_POSITION,66,111,42,8 END IDD_DIALOG_MONSTER DIALOGEX 0, 0, 147, 219 @@ -328,8 +328,8 @@ FONT 9, " BEGIN PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,114,108,53,14 PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,174,108,53,14 - LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,111,48,8,SS_CENTERIMAGE - LTEXT "左上",IDC_STATIC_CURRENT_POSITION,60,111,48,8 + LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,111,54,8,SS_CENTERIMAGE + LTEXT "左上",IDC_STATIC_CURRENT_POSITION,66,111,42,8 END IDD_DIALOG_URLOBJ DIALOGEX 0, 0, 212, 99 From cb73e5d82763a0f33f270c723d47d01a65bb5483 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Mon, 6 May 2019 22:53:10 +0900 Subject: [PATCH 24/31] =?UTF-8?q?=E3=82=AB=E3=83=BC=E3=82=BD=E3=83=AB?= =?UTF-8?q?=E3=82=AD=E3=83=BC=E3=81=AE=E7=A7=BB=E5=8B=95=E6=99=82=E3=81=AB?= =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83=E3=83=97=E3=81=AE=E6=9E=A0?= =?UTF-8?q?=E3=81=8C=E7=A7=BB=E5=8B=95=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 611f4f3..12511fd 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -529,21 +529,25 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam if (mapYtop < g_iMapSize - SCREEN_CHIP_SIZE) ++mapYtop; SetScrollPos(g_hWnd, SB_VERT, mapYtop, 1); InvalidateRect(hWnd, NULL, FALSE); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if (LOWORD(wParam) == VK_UP) { if (mapYtop > 0) --mapYtop; SetScrollPos(g_hWnd, SB_VERT, mapYtop, 1); InvalidateRect(hWnd, NULL, FALSE); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if (LOWORD(wParam) == VK_RIGHT) { if (mapXtop < g_iMapSize - SCREEN_CHIP_SIZE) ++mapXtop; SetScrollPos(g_hWnd, SB_HORZ, mapXtop, 1); InvalidateRect(hWnd, NULL, FALSE); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if (LOWORD(wParam) == VK_LEFT) { if (mapXtop > 0) --mapXtop; SetScrollPos(g_hWnd, SB_HORZ, mapXtop, 1); InvalidateRect(hWnd, NULL, FALSE); + InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } break; } From 4241595474d4f4639881e302a85b972a0027129a Mon Sep 17 00:00:00 2001 From: Aokashi Date: Tue, 7 May 2019 00:10:41 +0900 Subject: [PATCH 25/31] =?UTF-8?q?=E3=83=91=E3=83=BC=E3=83=84=E5=87=BA?= =?UTF-8?q?=E7=8F=BE=E3=82=A6=E3=82=A4=E3=83=B3=E3=83=89=E3=82=A6=E3=81=AE?= =?UTF-8?q?IDOK=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E6=99=82=E3=81=AB1?= =?UTF-8?q?=E3=82=92=E8=BF=94=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 繝代シ繝蜃コ迴セ繧ヲ繧、繝ウ繝峨え縺ァEnter繧ュ繝シ繧呈款縺吶→縺吶∋縺ヲ縺ョ繧ヲ繧、繝ウ繝峨え縺碁國繧後※縺励∪縺荳榊キ蜷医ョ菫ョ豁」 --- WinWwamk.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index cdeac30..add3baf 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -3534,16 +3534,18 @@ void SetAppearChara( int mapNumber, BOOL flag ) MessageBox( g_hWnd, "出現パーツ指定の「Y座標」の数値範囲が規定値を超えています。\nマップサイズ以下で指定してください。", "警告!", MB_OK ); } else if( (y < -100) || ((str[0] == '+') && (y > 100)) ){ MessageBox( g_hWnd, "出現パーツ指定の「相対Y座標」の数値範囲が規定値を超えています。\n -100 から +100 までで指定してください。", "警告!", MB_OK ); - } else { - if( (str[0] == '+') || (str[0] == '-') ) y += 10000; - else if( (str[0] == 'p') || (str[0] == 'P') ) y = 9000; - else if( (str[0] == '\0') && (partsNumberStr[0] != '\0') ) y = 10000; - + } + else { + if ((str[0] == '+') || (str[0] == '-')) y += 10000; + else if ((str[0] == 'p') || (str[0] == 'P')) y = 9000; + else if ((str[0] == '\0') && (partsNumberStr[0] != '\0')) y = 10000; + //y = y << 8; - if( flag == TRUE ){ - objectAttribute[mapNumber][20+i*4+2] = y; - } else { - mapAttribute[mapNumber][20+i*4+2] = y; + if (flag == TRUE) { + objectAttribute[mapNumber][20 + i * 4 + 2] = y; + } + else { + mapAttribute[mapNumber][20 + i * 4 + 2] = y; } } } @@ -3866,6 +3868,7 @@ LRESULT CALLBACK DialogProcExtraObject(HWND hWnd, UINT message, WPARAM wParam, L } if (wParam == IDOK) { DestroyWindow(g_hDlgObject); + return 1; } break; } @@ -3905,6 +3908,7 @@ LRESULT CALLBACK DialogProcExtraMap(HWND hWnd, UINT message, WPARAM wParam, LPAR } if (wParam == IDOK) { DestroyWindow(g_hDlgMap); + return 1; } break; } From 6ff155acb8e8addea952e51c49800cfbe578f74f Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sat, 19 Oct 2019 23:25:16 +0900 Subject: [PATCH 26/31] =?UTF-8?q?=E5=AE=9A=E6=95=B0=20MESSAG=5FFIRST=5FCHA?= =?UTF-8?q?RA=20=E3=82=92=E5=AE=9A=E7=BE=A9=E3=80=81=E6=9C=80=E5=88=9D?= =?UTF-8?q?=E3=81=AE=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E9=A0=98?= =?UTF-8?q?=E5=9F=9F=E3=82=92=E8=AA=AD=E3=82=80=E3=81=93=E3=82=80=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index add3baf..aeb3607 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -87,6 +87,7 @@ #define PARTS_NUMBER_MAX 4000 #define FILE_DATA_MAX (4000 +1000 +1000) *1024 //(マップ+パーツ+メッセージ領域) #define MESSAGE_NUMBER_MAX 5000 +#define MESSAGE_FIRST_CHARA 10 #define MESSAGE_STR_MAX 1500+10 #define MAP_ATR_MAX 60 @@ -1700,7 +1701,8 @@ BOOL LoadMapData(char* FileName) // 各メッセージデータが利用されているか確認する配列 BOOL usedMessage[MESSAGE_NUMBER_MAX]; - for (i = 0; i < MESSAGE_NUMBER_MAX; ++i) usedMessage[i] = FALSE; + for (i = 0; i < MESSAGE_FIRST_CHARA; ++i) usedMessage[i] = TRUE; + for (; i < MESSAGE_NUMBER_MAX; ++i) usedMessage[i] = FALSE; if (g_MapData[DATA_VERSION] <= 29) { g_iMapAtrMax = 40; @@ -3941,7 +3943,7 @@ void SetMessageData(int* point, char* str) //メッセージナンバー設定 if ((strlen(str) > 0) && (*point == 0)) { - for (number = 10; number < MESSAGE_NUMBER_MAX; ++number) { + for (number = MESSAGE_FIRST_CHARA; number < MESSAGE_NUMBER_MAX; ++number) { for (i = 0; i < PARTS_NUMBER_MAX; ++i) { if ((objectAttribute[i][ATR_STRING] == number) || (mapAttribute[i][ATR_STRING] == number)) { break; From dee738cfb58e6bda035efc7861dbc11f7914ba19 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sat, 19 Sep 2020 14:34:52 +0900 Subject: [PATCH 27/31] =?UTF-8?q?=E3=83=9F=E3=83=8B=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=97=E9=96=A2=E4=BF=82=E3=81=AE=E3=82=BD=E3=83=BC=E3=82=B9?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 1 - WinWwamk.cpp | 350 --------------------------------------------------- 2 files changed, 351 deletions(-) diff --git a/Script2.rc b/Script2.rc index 2a63647..6c689e8 100644 --- a/Script2.rc +++ b/Script2.rc @@ -63,7 +63,6 @@ BEGIN MENUITEM "クイックビューウインドウの表示", ID_MENU_QVIEW, GRAYED MENUITEM "物体パーツ選択ウインドウの表示", ID_MENU_OBJWINDOW, GRAYED MENUITEM "背景パーツ選択ウインドウの表示", ID_MENU_MAPWINDOW, GRAYED - MENUITEM "ミニマップウインドウの表示", ID_MENU_MINIWINDOW, GRAYED END END diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 57eff83..a3555a9 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -102,9 +102,6 @@ #define SCREEN_CHIP_SIZE 11 // 1チップのサイズ (ピクセル単位) #define CHIP_SIZE 40 -#define MINIMAP_SIZE_DIVIDE 4 -#define MINIMAP_WIDTH 41 -#define MINIMAP_HEIGHT 21 // パーツ選択ダイアログで表示するパーツ行数 (リソースファイルの変更も忘れずに) #define DIALOG_OBJECT_SELECT_LINE 4 @@ -135,10 +132,6 @@ char g_mapcgOld[BUFFER_STR_MAX]; int mapX, mapY; int mapXtop = 0; int mapYtop = 0; -int minimapXtop = 0; -int minimapYtop = 0; - -const int minimapChipSize = CHIP_SIZE / MINIMAP_SIZE_DIVIDE; //ステータス int statusEnergyMax; @@ -206,29 +199,19 @@ HWND g_hDlgFoundation = NULL; HWND g_hDlgCalculate = NULL; HWND g_hDlgQuickView = NULL; HWND g_hDlgBasicMes = NULL; -HWND g_hDlgMiniMap = NULL; HDC g_hmDC = NULL; HDC g_hmDCHalf = NULL; HDC g_hmDCAnd = NULL; HDC g_hmDCOr = NULL; HDC g_hmDCExtra = NULL; -HDC g_hmDCMini = NULL; -HDC g_hmDCMiniAnd = NULL; -HDC g_hmDCMiniOr = NULL; -HDC g_hmDCMiniMap = NULL; HBITMAP g_hBitmap = NULL; HBITMAP g_hBitmapHalf = NULL; HBITMAP g_hBitmapGif = NULL; HBITMAP g_hBitmapAnd = NULL; HBITMAP g_hBitmapOr = NULL; HBITMAP g_hBitmapExtra = NULL; -HBITMAP g_hBitmapMini = NULL; -HBITMAP g_hBitmapMiniAnd = NULL; -HBITMAP g_hBitmapMiniOr = NULL; -HBITMAP g_hBitmapMiniMap = NULL; TRACKMOUSEEVENT g_MapEditTracking; -TRACKMOUSEEVENT g_MiniMapTracking; int g_AtrSelectChara; // CG選択用 int g_EditMode; @@ -437,10 +420,6 @@ void PaintWindow(); void paintMapAll( HDC hDC ); // ステータス描画 void PaintStatus( BOOL flag ); -// ミニマップ作成 -void CreateMiniMap(); -// ミニマップ描画 -void PaintMinimap( HWND hWnd ); // 選択ダイアログプロシージャ LRESULT CALLBACK SelectObjectDialogProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); @@ -454,10 +433,6 @@ LRESULT CALLBACK SelectCGCharaProc( HWND hWnd, UINT message, WPARAM wParam, LPAR LRESULT CALLBACK DialogProcBasicMes( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); // クイックビューダイアログプロシージャ LRESULT CALLBACK QuickViewDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); -// ミニマップダイアログプロシージャ -LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); - -void JumpMapFromMiniMap(HWND hWnd, int x, int y); // 線と四角の描画 void DrawLine( HDC hDC, int x, int y, int x2, int y2 ); @@ -530,25 +505,21 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam if (mapYtop < g_iMapSize - SCREEN_CHIP_SIZE) ++mapYtop; SetScrollPos(g_hWnd, SB_VERT, mapYtop, 1); InvalidateRect(hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if (LOWORD(wParam) == VK_UP) { if (mapYtop > 0) --mapYtop; SetScrollPos(g_hWnd, SB_VERT, mapYtop, 1); InvalidateRect(hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if (LOWORD(wParam) == VK_RIGHT) { if (mapXtop < g_iMapSize - SCREEN_CHIP_SIZE) ++mapXtop; SetScrollPos(g_hWnd, SB_HORZ, mapXtop, 1); InvalidateRect(hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } else if (LOWORD(wParam) == VK_LEFT) { if (mapXtop > 0) --mapXtop; SetScrollPos(g_hWnd, SB_HORZ, mapXtop, 1); InvalidateRect(hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } break; } @@ -562,7 +533,6 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ShowWindow(g_hDlgSelectChara, TRUE); ShowWindow(g_hDlgExtra, TRUE); ShowWindow(g_hDlgQuickView, TRUE); - ShowWindow(g_hDlgMiniMap, TRUE); } else if (wParam == SIZE_MINIMIZED) { ShowWindow(g_hDlgSelectObject, FALSE); @@ -572,7 +542,6 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ShowWindow(g_hDlgSelectChara, FALSE); ShowWindow(g_hDlgExtra, FALSE); ShowWindow(g_hDlgQuickView, FALSE); - ShowWindow(g_hDlgMiniMap, FALSE); } break; } @@ -677,9 +646,7 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam } } } - CreateMiniMap(); InvalidateRect(hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } break; @@ -766,7 +733,6 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam mapObject[y / CHIP_SIZE + mapYtop][x / CHIP_SIZE + mapXtop] = 0; } InvalidateRect(hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; case WM_VSCROLL: @@ -795,7 +761,6 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam SetScrollPos(g_hWnd, SB_VERT, mapYtop, 1); } InvalidateRect(g_hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; case WM_MOUSEWHEEL: { @@ -839,7 +804,6 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam SetScrollPos(g_hWnd, SB_VERT, mapYtop, 1); } InvalidateRect(g_hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; } @@ -869,7 +833,6 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam SetScrollPos(g_hWnd, SB_HORZ, mapXtop, 1); } InvalidateRect(g_hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); break; case WM_PAINT: @@ -952,7 +915,6 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam LoadMapData(g_szSelectFile); if (g_bErrorPassword == TRUE) MessageBox(g_hWnd, "暗証番号が違います。", "警告!", MB_OK); LoadBitmap(); - CreateMiniMap(); } } else if (LOWORD(wParam) == ID_MENU_SAVE) { @@ -1067,11 +1029,6 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ShowWindow( g_hDlgSelectMap, TRUE ); EnableMenuItem( GetMenu(g_hWnd), ID_MENU_MAPWINDOW, MF_GRAYED ); } - // ミニマップウインドウの表示 - else if (LOWORD(wParam) == ID_MENU_MINIWINDOW) { - ShowWindow(g_hDlgMiniMap, TRUE); - EnableMenuItem(GetMenu(g_hWnd), ID_MENU_MINIWINDOW, MF_GRAYED); - } // パーツのコピー else if (LOWORD(wParam) == ID_MENU_COPY) { if (g_EditMode == 0) { @@ -1111,9 +1068,7 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam DestroyWindow(g_hDlgSelectChara); g_bUpdate = TRUE; RestoreUndoData(); - CreateMiniMap(); InvalidateRect(g_hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); InvalidateRect(g_hDlgSelectObject, NULL, FALSE); InvalidateRect(g_hDlgSelectMap, NULL, FALSE); } @@ -1135,9 +1090,7 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam mapObject[mapYtop + y][mapXtop + x] = g_ObjectBuffer[y][x]; } } - CreateMiniMap(); InvalidateRect(g_hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); } // ツールの終了 else if (LOWORD(wParam) == ID_MENU_END) { @@ -1263,7 +1216,6 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C if (g_bErrorPassword == TRUE) MessageBox(g_hWnd, "暗証番号が違います。", "警告!", MB_OK); // ビットマップ読み込み LoadBitmap(); - CreateMiniMap(); RECT rect; RECT rectBox; @@ -1287,13 +1239,6 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C ShowWindow(g_hDlgSelectMap, SW_SHOW); ShowWindow(g_hDlgSelectObject, SW_SHOW); - // ミニマップ - g_hDlgMiniMap = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_MINIMAP), g_hWnd, (DLGPROC)MiniMapDialogProc); - GetWindowRect(g_hDlgSelectMap, &rectBox); - GetWindowRect(g_hDlgMiniMap, &rect); - MoveWindow(g_hDlgMiniMap, rectBox.left, rectBox.bottom, rect.right - rect.left, rect.bottom - rect.top, TRUE); - ShowWindow(g_hDlgMiniMap, SW_SHOW); - // 画面色数取得 HDC hDC = GetDC(g_hWnd); if (GetDeviceCaps(hDC, BITSPIXEL) == 8) { @@ -1331,7 +1276,6 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR pszCmdLine, int C if (IsDialogMessage(g_hDlgSelectMap, &msg)) continue; else if (IsDialogMessage(g_hDlgSelectObject, &msg)) continue; else if (IsDialogMessage(g_hDlgQuickView, &msg)) continue; - else if (IsDialogMessage(g_hDlgMiniMap, &msg)) continue; else if (IsDialogMessage(g_hDlgExtra, &msg)) continue; else if (IsDialogMessage(g_hDlgCalculate, &msg)) continue; else if (IsDialogMessage(g_hDlgFoundation, &msg)) continue; @@ -1363,10 +1307,6 @@ BOOL LoadBitmap() g_hmDCHalf = CreateCompatibleDC(hDC); g_hmDCAnd = CreateCompatibleDC(hDC); g_hmDCOr = CreateCompatibleDC(hDC); - g_hmDCMini = CreateCompatibleDC(hDC); - g_hmDCMiniAnd = CreateCompatibleDC(hDC); - g_hmDCMiniOr = CreateCompatibleDC(hDC); - g_hmDCMiniMap = CreateCompatibleDC(hDC); g_hmDCExtra = CreateCompatibleDC(hDC); g_hBitmapExtra = CreateCompatibleBitmap(hDC, CHIP_SIZE * SCREEN_CHIP_SIZE, 20); @@ -1438,26 +1378,10 @@ BOOL LoadBitmap() // AND画像反転 BitBlt(g_hmDCAnd, 0, 0, CHIP_SIZE * 10, g_iLoadCGHeight, NULL, 0, 0, DSTINVERT); - // ミニマップのCG領域確保 - HDC* miniMapHDCs[] = { &g_hmDCMini, &g_hmDCMiniAnd, &g_hmDCMiniOr }; - HDC* baseHDCs[] = { &g_hmDC, &g_hmDCAnd, &g_hmDCOr }; - HBITMAP* miniMapBitmaps[] = { &g_hBitmapMini, &g_hBitmapMiniAnd, &g_hBitmapMiniOr }; - for (int i = 0; i < 3; i++) { - if (*miniMapBitmaps[i] != NULL) { - DeleteObject(*miniMapBitmaps[i]); - } - const int imageWidth = CHIP_SIZE * 10 / MINIMAP_SIZE_DIVIDE; - const int imageHeight = g_iLoadCGHeight / MINIMAP_SIZE_DIVIDE; - *miniMapBitmaps[i] = CreateCompatibleBitmap(hDC, imageWidth, imageHeight); - SelectObject(*miniMapHDCs[i], *miniMapBitmaps[i]); - StretchBlt(*miniMapHDCs[i], 0, 0, imageWidth, imageHeight, *baseHDCs[i], 0, 0, CHIP_SIZE * 10, g_iLoadCGHeight, SRCCOPY); - } - // デバイス解放 ReleaseDC(g_hWnd, hDC); // 再描画 InvalidateRect(g_hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); InvalidateRect(g_hDlgSelectObject, NULL, FALSE); InvalidateRect(g_hDlgSelectMap, NULL, FALSE); @@ -1579,86 +1503,6 @@ void PaintStatus(BOOL flag) } -// ミニマップ作成 -void CreateMiniMap() -{ - int y, x; - int objNumber, mapNumber; - HDC hDC; - hDC = GetDC(g_hDlgMiniMap); - - // ミニマップのCG領域確保 - if (g_hBitmapMiniMap != NULL) { - DeleteObject(g_hBitmapMiniMap); - } - g_hBitmapMiniMap = CreateCompatibleBitmap(hDC, g_iMapSize * 10, g_iMapSize * 10); - SelectObject(g_hmDCMiniMap, g_hBitmapMiniMap); - - for (y = 0; y < g_iMapSize; y++) { - for (x = 0; x < g_iMapSize; x++) { - mapNumber = map[y][x]; - BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMini, mapAttribute[mapNumber][ATR_X] / 4, mapAttribute[mapNumber][ATR_Y] / 4, SRCCOPY); - objNumber = mapObject[y][x]; - if (objNumber != 0) { - BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMiniAnd, objectAttribute[objNumber][ATR_X] / 4, objectAttribute[objNumber][ATR_Y] / 4, SRCAND); - BitBlt(g_hmDCMiniMap, x * 10, y * 10, 10, 10, g_hmDCMiniOr, objectAttribute[objNumber][ATR_X] / 4, objectAttribute[objNumber][ATR_Y] / 4, SRCPAINT); - } - } - } -} - - -//##------------------------------------------------------------------ -// ミニマップ描画 - -void PaintMinimap(HWND hWnd) -{ - int i; - HDC hDC; - PAINTSTRUCT ps; - HPEN screenPen, currentPen; - HGDIOBJ currentBrush; - - hDC = BeginPaint(hWnd, &ps); - BitBlt(hDC, 0, 0, MINIMAP_WIDTH * minimapChipSize, MINIMAP_HEIGHT * minimapChipSize, g_hmDCMiniMap, minimapXtop * minimapChipSize, minimapYtop * minimapChipSize, SRCCOPY); - - // 画面境界線描画 - screenPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255)); - currentPen = CreatePen(PS_INSIDEFRAME, 2, RGB(255, 0, 0)); - currentBrush = GetStockObject(NULL_BRUSH); - - SelectObject(hDC, screenPen); - - int screenLinePos; - for (i = 0; i < MINIMAP_WIDTH; ++i) { - if ((i + minimapXtop) % minimapChipSize == 0) { - screenLinePos = (i * minimapChipSize) + (minimapChipSize / 2); - DrawLine(hDC, screenLinePos, 0, screenLinePos, MINIMAP_HEIGHT * minimapChipSize); - } - } - for (i = 0; i < MINIMAP_HEIGHT; ++i) { - if ((i + minimapYtop) % minimapChipSize == 0) { - screenLinePos = (i * minimapChipSize) + (minimapChipSize / 2); - DrawLine(hDC, 0, screenLinePos, MINIMAP_WIDTH * minimapChipSize, screenLinePos); - } - } - DeleteObject(screenPen); - - SelectObject(hDC, currentPen); - SelectObject(hDC, currentBrush); - { - const int currentX = (mapXtop - minimapXtop) * minimapChipSize; - const int currentY = (mapYtop - minimapYtop) * minimapChipSize; - Rectangle(hDC, currentX, currentY, currentX + minimapChipSize * SCREEN_CHIP_SIZE, currentY + minimapChipSize * SCREEN_CHIP_SIZE); - } - DeleteObject(currentPen); - DeleteObject(currentBrush); - - EndPaint(hWnd, &ps); -} - - - //##------------------------------------------------------------------ // 数値変換 int unsignedByte(char numberByte) { @@ -1833,8 +1677,6 @@ BOOL LoadMapData(char* FileName) // スクロールバー設定 SetScrollRange(g_hWnd, SB_VERT, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); SetScrollRange(g_hWnd, SB_HORZ, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); - SetScrollRange(g_hDlgMiniMap, SB_VERT, 0, g_iMapSize - MINIMAP_HEIGHT, FALSE); - SetScrollRange(g_hDlgMiniMap, SB_HORZ, 0, g_iMapSize - MINIMAP_WIDTH, FALSE); // パーツ最大数設定 g_iMapPartsMax = ((iDataMapCount - 1) / 50) * 50 + 50; @@ -2014,12 +1856,10 @@ BOOL LoadMapData(char* FileName) ShowWindow(g_hDlgSelectObject, FALSE); ShowWindow(g_hDlgSelectMap, FALSE); ShowWindow(g_hDlgQuickView, FALSE); - ShowWindow(g_hDlgMiniMap, FALSE); DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_PASSWORD), g_hWnd, (DLGPROC)DialogProcPassword); ShowWindow(g_hDlgSelectObject, TRUE); ShowWindow(g_hDlgSelectMap, TRUE); ShowWindow(g_hDlgQuickView, TRUE); - ShowWindow(g_hDlgMiniMap, TRUE); } //Undoセット SetUndoData(); @@ -3867,9 +3707,7 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara else { if (strcmp(g_mapcgNameBmp, g_mapcgOld) != 0) LoadBitmap(); } - CreateMiniMap(); InvalidateRect(g_hWnd, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); g_bUpdate = TRUE; } //戦闘結果の計算 @@ -3943,8 +3781,6 @@ LRESULT CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara // スクロールバー設定 SetScrollRange(g_hWnd, SB_VERT, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); SetScrollRange(g_hWnd, SB_HORZ, 0, (g_iMapSize - SCREEN_CHIP_SIZE), FALSE); - SetScrollRange(g_hDlgMiniMap, SB_VERT, 0, (g_iMapSize - MINIMAP_HEIGHT), FALSE); - SetScrollRange(g_hDlgMiniMap, SB_HORZ, 0, (g_iMapSize - MINIMAP_WIDTH), FALSE); } // 背景パーツ最大数拡張 else if (LOWORD(wParam) == IDC_BUTTON_MAP_PARTS) { @@ -4017,191 +3853,6 @@ LRESULT CALLBACK DialogProcBasicMes(HWND hWnd, UINT message, WPARAM wParam, LPAR return 0; } -//##------------------------------------------------------------------ -// ミニマップダイアログプロシージャ -LRESULT CALLBACK MiniMapDialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) { - - case WM_INITDIALOG: - SetScrollRange(hWnd, SB_VERT, 0, g_iMapSize - MINIMAP_HEIGHT, FALSE); - SetScrollRange(hWnd, SB_HORZ, 0, g_iMapSize - MINIMAP_WIDTH, FALSE); - g_MiniMapTracking = { - sizeof(TRACKMOUSEEVENT), - TME_LEAVE, - hWnd - }; - break; - - case WM_LBUTTONDOWN: { - g_MapJumping = TRUE; - TrackMouseEvent(&g_MiniMapTracking); - - JumpMapFromMiniMap(hWnd, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); - break; - } - - case WM_MOUSEMOVE: { - if (g_MapJumping == FALSE) { - break; - } - - const int x = GET_X_LPARAM(lParam); - const int y = GET_Y_LPARAM(lParam); - JumpMapFromMiniMap(hWnd, x, y); - break; - } - - case WM_MOUSELEAVE: - case WM_LBUTTONUP: - g_MapJumping = FALSE; - break; - - case WM_HSCROLL: - if (LOWORD(wParam) == SB_LINEDOWN) { - if (minimapXtop < g_iMapSize - MINIMAP_WIDTH) ++minimapXtop; - SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); - } - else if (LOWORD(wParam) == SB_LINEUP) { - if (minimapXtop > 0) --minimapXtop; - SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); - } - else if (LOWORD(wParam) == SB_THUMBPOSITION) { - minimapXtop = HIWORD(wParam); - SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); - } - else if (LOWORD(wParam) == SB_THUMBTRACK) { - minimapXtop = HIWORD(wParam); - SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); - } - else if (LOWORD(wParam) == SB_PAGEDOWN) { - if (minimapXtop <= g_iMapSize - MINIMAP_WIDTH - 5) minimapXtop += 5; - SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); - } - else if (LOWORD(wParam) == SB_PAGEUP) { - if (minimapXtop >= 5) minimapXtop -= 5; - SetScrollPos(g_hDlgMiniMap, SB_HORZ, minimapXtop, 1); - } - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); - break; - - case WM_VSCROLL: - if (LOWORD(wParam) == SB_LINEDOWN) { - if (minimapYtop < g_iMapSize - MINIMAP_HEIGHT) ++minimapYtop; - SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); - } - else if (LOWORD(wParam) == SB_LINEUP) { - if (minimapYtop > 0) --minimapYtop; - SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); - } - else if (LOWORD(wParam) == SB_THUMBPOSITION) { - minimapYtop = HIWORD(wParam); - SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); - } - else if (LOWORD(wParam) == SB_THUMBTRACK) { - minimapYtop = HIWORD(wParam); - SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); - } - else if (LOWORD(wParam) == SB_PAGEDOWN) { - if (minimapYtop <= g_iMapSize - MINIMAP_HEIGHT - 5) minimapYtop += 5; - SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); - } - else if (LOWORD(wParam) == SB_PAGEUP) { - if (minimapYtop >= 5) minimapYtop -= 5; - SetScrollPos(g_hDlgMiniMap, SB_VERT, minimapYtop, 1); - } - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); - break; - - case WM_MOUSEWHEEL: { - int scrollSize; - const int scrollDelta = GET_WHEEL_DELTA_WPARAM(wParam); - SystemParametersInfo(SPI_GETWHEELSCROLLLINES, NULL, &scrollSize, 0); - // スクロールサイズはスクロール行数の2倍の量 - scrollSize *= 2; - // 横方向 - if (GET_KEYSTATE_WPARAM(wParam) == MK_SHIFT) { - if (scrollDelta < 0) { - minimapXtop += scrollSize; - if (minimapXtop > (g_iMapSize - MINIMAP_WIDTH)) { - minimapXtop = g_iMapSize - MINIMAP_WIDTH; - } - } - else if (scrollDelta > 0) { - minimapXtop -= scrollSize; - if (minimapXtop < 0) { - minimapXtop = 0; - } - } - SetScrollPos(hWnd, SB_HORZ, minimapXtop, 1); - } - // 縦方向 - else { - if (scrollDelta < 0) { - minimapYtop += scrollSize; - if (minimapYtop > (g_iMapSize - MINIMAP_HEIGHT)) { - minimapYtop = g_iMapSize - MINIMAP_HEIGHT; - } - } - else if (scrollDelta > 0) { - minimapYtop -= scrollSize; - if (minimapYtop < 0) { - minimapYtop = 0; - } - } - SetScrollPos(hWnd, SB_VERT, minimapYtop, 1); - } - InvalidateRect(hWnd, NULL, FALSE); - break; - } - - case WM_COMMAND: - if (wParam == IDCANCEL) { - EnableMenuItem(GetMenu(g_hWnd), ID_MENU_MINIWINDOW, MF_ENABLED); - ShowWindow(hWnd, FALSE); - } - break; - - case WM_PAINT: - PaintMinimap(hWnd); - break; - } - return 0; -} - -// クリック座標からマップの位置を移動 -void JumpMapFromMiniMap(HWND hWnd, int mouseX, int mouseY) { - int x = minimapXtop; - int y = minimapYtop; - // 座標をミニマップ座標単位で計算 (そのまま割ることは用途上適していないため) - { - for (int mouseXStock = mouseX; mouseXStock > 0; mouseXStock -= minimapChipSize) { - x++; - } - for (int mouseYStock = mouseY; mouseYStock > 0; mouseYStock -= minimapChipSize) { - y++; - } - } - - mapXtop = x - 5; - mapYtop = y - 5; - if (mapXtop < 0) { - mapXtop = 0; - } - else if (mapXtop + 11 > g_iMapSize) { - mapXtop = g_iMapSize - 11; - } - if (mapYtop < 0) { - mapYtop = 0; - } - else if (mapYtop + 11 > g_iMapSize) { - mapYtop = g_iMapSize - 11; - } - - InvalidateRect(g_hWnd, NULL, FALSE); - InvalidateRect(hWnd, NULL, FALSE); -} - //##------------------------------------------------------------------ // パスワードダイアログプロシージャ @@ -4428,7 +4079,6 @@ void MakeNewMap() InvalidateRect(g_hDlgSelectObject, NULL, FALSE); InvalidateRect(g_hDlgSelectMap, NULL, FALSE); InvalidateRect(g_hDlgQuickView, NULL, FALSE); - InvalidateRect(g_hDlgMiniMap, NULL, FALSE); MessageBox(g_hWnd, "マップを新規作成しました。\n画面には何も表示されなくなりますがこれで正常です。\n使用するGIF画像ファイルを選択後、\n新たにパーツを作成してマップに配置していってください。", "マップの新規作成", MB_OK); } From 6e02543e0f95b164505ee28b5345d49b95de21c1 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sat, 19 Sep 2020 14:44:22 +0900 Subject: [PATCH 28/31] =?UTF-8?q?=E3=83=91=E3=83=BC=E3=83=84=E9=81=B8?= =?UTF-8?q?=E6=8A=9E=E3=82=A6=E3=82=A4=E3=83=B3=E3=83=89=E3=82=A6=E3=81=AE?= =?UTF-8?q?=E7=B8=A6=E5=B9=85=E3=82=92=E6=8B=A1=E5=BC=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Script2.rc | 20 ++++++++++---------- WinWwamk.cpp | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Script2.rc b/Script2.rc index 6c689e8..e61b4fd 100644 --- a/Script2.rc +++ b/Script2.rc @@ -129,16 +129,16 @@ END // Dialog // -IDD_DIALOG_EDITMAP DIALOGEX 0, 0, 239, 126 +IDD_DIALOG_EDITMAP DIALOGEX 0, 0, 239, 156 STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "背景パーツ選択" FONT 9, "MS Pゴシック", 0, 0, 0x0 BEGIN - PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,114,108,53,14 - PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,174,108,53,14 - LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,111,54,8,SS_CENTERIMAGE - LTEXT "左上",IDC_STATIC_CURRENT_POSITION,66,111,42,8 + PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,114,138,53,14 + PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,174,138,53,14 + LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,141,54,8,SS_CENTERIMAGE + LTEXT "左上",IDC_STATIC_CURRENT_POSITION,66,141,42,8 END IDD_DIALOG_MONSTER DIALOGEX 0, 0, 147, 219 @@ -319,16 +319,16 @@ BEGIN LTEXT "物体番号:",IDC_STATIC_NUMBER,65,20,66,8 END -IDD_DIALOG_EDITOBJECT DIALOGEX 0, 0, 239, 126 +IDD_DIALOG_EDITOBJECT DIALOGEX 0, 0, 239, 156 STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "物体パーツ選択" FONT 9, "MS Pゴシック", 0, 0, 0x0 BEGIN - PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,114,108,53,14 - PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,174,108,53,14 - LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,111,54,8,SS_CENTERIMAGE - LTEXT "左上",IDC_STATIC_CURRENT_POSITION,66,111,42,8 + PUSHBUTTON "選択パーツ編集",IDC_BUTTON_EDITMAP,114,138,53,14 + PUSHBUTTON "選択パーツ消去",IDC_BUTTON_MAP_ERASE,174,138,53,14 + LTEXT "パーツ番号",IDC_STATIC_PARTS_NUMBER,6,141,54,8,SS_CENTERIMAGE + LTEXT "左上",IDC_STATIC_CURRENT_POSITION,66,141,42,8 END IDD_DIALOG_URLOBJ DIALOGEX 0, 0, 212, 99 diff --git a/WinWwamk.cpp b/WinWwamk.cpp index a3555a9..67d6580 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -104,9 +104,9 @@ #define CHIP_SIZE 40 // パーツ選択ダイアログで表示するパーツ行数 (リソースファイルの変更も忘れずに) -#define DIALOG_OBJECT_SELECT_LINE 4 +#define DIALOG_OBJECT_SELECT_LINE 5 #define DIALOG_OBJECT_SELECT_COLUMN 10 -#define DIALOG_MAP_SELECT_LINE 4 +#define DIALOG_MAP_SELECT_LINE 5 #define DIALOG_MAP_SELECT_COLUMN 10 int DATA_MAP_COUNT; From 9f50947ab6f022c0481f9849ced4b88550801913 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sat, 19 Sep 2020 15:02:22 +0900 Subject: [PATCH 29/31] =?UTF-8?q?=E3=83=91=E3=83=BC=E3=83=84=E4=B8=80?= =?UTF-8?q?=E8=A6=A7=E3=81=AE=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E3=81=A7=E5=AE=9A=E6=95=B0=E3=82=92=E9=81=A9?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 67d6580..6ac038b 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -843,7 +843,7 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam // カーソルキー操作 if (GetActiveWindow() == g_hDlgSelectMap) { if (LOWORD(wParam) == ID_MENU_DOWN) { - if (g_ScrMap < ((g_iMapPartsMax / 10) - 3)) ++g_ScrMap; + if (g_ScrMap < ((g_iMapPartsMax / DIALOG_MAP_SELECT_COLUMN) - DIALOG_MAP_SELECT_LINE)) ++g_ScrMap; SetScrollPos(g_hDlgSelectMap, SB_VERT, g_ScrMap, 1); InvalidateRect(g_hDlgSelectMap, NULL, FALSE); break; @@ -857,7 +857,7 @@ LRESULT WINAPI MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam } else if (GetActiveWindow() == g_hDlgSelectObject) { if (LOWORD(wParam) == ID_MENU_DOWN) { - if (g_ScrObject < ((g_iObjectPartsMax / 10) - 3)) ++g_ScrObject; + if (g_ScrObject < ((g_iObjectPartsMax / DIALOG_OBJECT_SELECT_COLUMN) - DIALOG_OBJECT_SELECT_LINE)) ++g_ScrObject; SetScrollPos(g_hDlgSelectObject, SB_VERT, g_ScrObject, 1); InvalidateRect(g_hDlgSelectObject, NULL, FALSE); break; @@ -1684,8 +1684,8 @@ BOOL LoadMapData(char* FileName) g_iObjectPartsMax = ((iDataObjectCount - 1) / 50) * 50 + 50; if (g_iObjectPartsMax < 200) g_iObjectPartsMax = 200; // スクロールバー設定 - SetScrollRange(g_hDlgSelectMap, SB_VERT, 0, ((g_iMapPartsMax / 10) - 3), FALSE); - SetScrollRange(g_hDlgSelectObject, SB_VERT, 0, ((g_iObjectPartsMax / 10) - 3), FALSE); + SetScrollRange(g_hDlgSelectMap, SB_VERT, 0, ((g_iMapPartsMax / DIALOG_MAP_SELECT_COLUMN) - DIALOG_MAP_SELECT_LINE), FALSE); + SetScrollRange(g_hDlgSelectObject, SB_VERT, 0, ((g_iObjectPartsMax / DIALOG_OBJECT_SELECT_COLUMN) - DIALOG_OBJECT_SELECT_LINE), FALSE); ZeroMemory(&map, sizeof(map)); ZeroMemory(&mapObject, sizeof(mapObject)); From 2f626a5543f0c976c7ff1fcab6d062238a56b994 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sat, 19 Sep 2020 15:13:10 +0900 Subject: [PATCH 30/31] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E8=A1=A8=E8=A8=98=E3=81=A8=E7=94=9F=E6=88=90=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E5=86=85=E5=AE=B9=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WinWwamk.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/WinWwamk.cpp b/WinWwamk.cpp index 6ac038b..0b86156 100644 --- a/WinWwamk.cpp +++ b/WinWwamk.cpp @@ -235,7 +235,7 @@ char PressData[FILE_DATA_MAX]; char g_szSettingFile[FILE_PATH_STR_MAX] = "./WinWwamk.ini"; //設定ファイル名 char g_szSelectFile[FILE_PATH_STR_MAX] = "wwamap.dat"; //ファイル名 -char g_szTitleName[] = "WWA Wingマップ作成ツール Ver3.1.8"; +char g_szTitleName[] = "WWA Wingマップ作成ツール Ver3.5.2"; char g_szSelectDir[FILE_PATH_STR_MAX]; int g_MouseX, g_MouseY; int g_MouseDragX, g_MouseDragY; @@ -4240,7 +4240,6 @@ BOOL ExecBrowser() " \n" " \n" " \n" - " \n" " " + MapWorldName + "\n" "\n" "\n" @@ -4249,7 +4248,6 @@ BOOL ExecBrowser() " id=\"wwa-wrapper\"\n" " class=\"wwa-size-box\"\n" " data-wwa-mapdata=\"" + MapDataFileName + "\"\n" - " data-wwa-loader=\"wwaload.js\"\n" " data-wwa-urlgate-enable=\"true\"\n" " data-wwa-title-img=\"cover.gif\"\n" " >\n" From fea7ae4b2a48bec6666be9164fefae03e2e72b28 Mon Sep 17 00:00:00 2001 From: Aokashi Date: Sat, 19 Sep 2020 15:18:43 +0900 Subject: [PATCH 31/31] =?UTF-8?q?README=E3=82=92=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index a80ce90..c0e63f1 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,13 @@ WWA菴懈舌ヤ繝シ繝ォ縺ョWWA Wing繧ォ繧ケ繧ソ繝槭う繧コ迚医〒縺吶 縺セ縺譛ャ螳カ縺九i 譛ャ螳カ縺ョ繧ス繝シ繧ケ縺ッ [繧ュ繝」繝ゥ繝舌Φ繧オ繝シ繧ッ繝ォ縺ョ繝壹シ繧ク](http://www.wwajp.com/making.html) 縺九i繝繧ヲ繝ウ繝ュ繝シ繝峨〒縺阪∪縺吶 +## 譛ャ繝励Ο繧ク繧ァ繧ッ繝医ョ騾イ陦後↓縺、縺縺ヲ +迴セ蝨ィ縲仝WA繧イ繝シ繝縺ョ菴懈舌ヤ繝シ繝ォ縺ッ縺薙ョ縺サ縺九↓繧 [WWA Maker](https://github.com/WWAWing/WWAMaker) 縺ァ繝輔Ν繝ェ繝。繧、繧ッ繧帝イ繧√※縺縺セ縺吶 + +WWA Maker 縺ョ螳梧舌↓縺ッ縲 [WWA Wing](https://github.com/WWAWing/WWAWing) 縺ィ縺ョ隱ソ謨エ縺悟ソ隕√↓縺ェ繧頑凾髢薙′縺九°繧玖ヲ矩壹@縺ァ縺吶 + +縺薙ョ繝励Ο繧ク繧ァ繧ッ繝医ッ WWA Maker 縺ョ螳梧舌∪縺ァ縺ョ郢九℃縺ィ縺励※縲 WWA 繝槭ャ繝嶺ス懈舌ヤ繝シ繝ォ繧医j繧ゆセソ蛻ゥ縺ェ菴懈舌ヤ繝シ繝ォ繧堤岼謖縺励※髢狗匱繧謾ケ濶ッ繧帝イ繧√※縺縺セ縺吶 + ## 蟋九a譁ケ 縺薙ョ繝励Ο繧ク繧ァ繧ッ繝医ッ縲 Visual Studio 2019 縺ォ蟇セ蠢懊@縺ヲ縺縺セ縺吶 @@ -23,6 +30,10 @@ WWA菴懈舌ヤ繝シ繝ォ縺ョWWA Wing繧ォ繧ケ繧ソ繝槭う繧コ迚医〒縺吶 縺セ縺譛ャ螳カ縺九i Visual Studio 繧定オキ蜍輔@縲 繧ス繝ェ繝・繝シ繧キ繝ァ繝ウ繝輔ぃ繧、繝ォ `WinWwamk.sln` 繧帝幕縺上→縲∝ス薙ヤ繝シ繝ォ縺ョ髢狗匱逕サ髱「縺瑚。ィ遉コ縺輔l縺セ縺吶 縺ゅ→縺ッ縲 `WinWwamk.cpp` 繧帝幕縺縺ヲ縲∽ク企Κ縺ョ荳芽ァ偵懊ち繝ウ縺九i螳溯。後☆繧九%縺ィ縺後〒縺阪∪縺吶 +### 荳驛ィ繝輔ぃ繧、繝ォ縺ョ繧ウ繝溘ャ繝医↓縺、縺縺ヲ +GitHub 縺ァ縺ッ繝ェ繧ス繝シ繧ケ繝輔ぃ繧、繝ォ縺ェ縺ゥ縺ョ繧ウ繝溘ャ繝医〒譁蟄怜喧縺代′逋コ逕溘@縺ヲ縺縺セ縺吶′縲∵悽菴懈舌ヤ繝シ繝ォ縺ョ蜍穂ス懊↓蠖ア髻ソ縺ッ縺ゅj縺セ縺帙s縲 +(蜈縲譛ャ菴懈舌ヤ繝シ繝ォ縺ッ縺縺縺カ蜑阪↓髢狗匱縺輔l縺溘b縺ョ縺ョ縺溘a縲∵枚蟄励さ繝シ繝峨′荳閾エ縺励↑縺邂謇縺悟、壹>縺ァ縺) + ## 驟榊ク繝輔ぃ繧、繝ォ縺ョ蜀螳ケ縺ォ縺、縺縺ヲ WWA繝槭ャ繝嶺ス懈舌ヤ繝シ繝ォ縺ョ繧ス繝シ繧ケ繧ウ繝シ繝峨↓縺ゅk隱ャ譏弱r謚懃イ九@縺ヲ縺縺セ縺吶