--- np2/win9x/dialog/d_about.cpp 2004/03/23 18:34:05 1.8 +++ np2/win9x/dialog/d_about.cpp 2007/10/26 14:38:34 1.14 @@ -1,6 +1,7 @@ #include "compiler.h" #include "resource.h" #include "np2.h" +#include "oemtext.h" #include "np2class.h" #include "dialog.h" #include "dialogs.h" @@ -9,96 +10,103 @@ #include "np2info.h" -static SIZE aboutsize; +static SIZE s_szAbout; -static const char str_np2title[] = "Neko Project II "; -static const char np2infostr[] = \ - "CPU: %CPU% %CLOCK%\n" \ - "MEM: %MEM1%\n" \ - "GDC: %GDC%\n" \ - "TEXT: %TEXT%\n" \ - "GRPH: %GRPH%\n" \ - "SOUND: %EXSND%\n" \ - "\n" \ - "BIOS: %BIOS%\n" \ - "RHYTHM: %RHYTHM%\n" \ - "\n" \ - "SCREEN: %DISP%"; - - -static void about_init(HWND hWnd) { - - char work[128]; - RECT rectwindow; - RECT rectclient; +static const OEMCHAR str_np2title[] = OEMTEXT(PROJECTNAME) \ + OEMTEXT(PROJECTSUBNAME) \ + OEMTEXT(" "); +static const OEMCHAR np2infostr[] = OEMTEXT("CPU: %CPU% %CLOCK%\nMEM: %MEM1%\nGDC: %GDC%\n %GDC2%\nTEXT: %TEXT%\nGRPH: %GRPH%\nSOUND: %EXSND%\n\nBIOS: %BIOS%\nRHYTHM: %RHYTHM%\n\nSCREEN: %DISP%"); + + +static void onInitDialog(HWND hWnd) +{ + OEMCHAR szWork[128]; + RECT rect; + RECT rectMore; + RECT rectInfo; + int nHeight; POINT pt; - RECT parent; +#if defined(OSLANG_UTF8) + TCHAR szWork2[128]; +#endif // defined(OSLANG_UTF8) - milstr_ncpy(work, str_np2title, sizeof(work)); - milstr_ncat(work, np2version, sizeof(work)); + milstr_ncpy(szWork, str_np2title, NELEMENTS(szWork)); + milstr_ncat(szWork, np2version, NELEMENTS(szWork)); #if defined(NP2VER_WIN9X) - milstr_ncat(work, NP2VER_WIN9X, sizeof(work)); + milstr_ncat(szWork, NP2VER_WIN9X, NELEMENTS(szWork)); +#endif +#if defined(OSLANG_UTF8) + oemtotchar(szWork2, NELEMENTS(szWork2), szWork, -1); + SetDlgItemText(hWnd, IDC_NP2VER, szWork2); +#else + SetDlgItemText(hWnd, IDC_NP2VER, szWork); #endif - SetDlgItemText(hWnd, IDC_NP2VER, work); - GetWindowRect(hWnd, &rectwindow); - GetClientRect(hWnd, &rectclient); - aboutsize.cx = rectwindow.right - rectwindow.left; - aboutsize.cy = rectwindow.bottom - rectwindow.top; - pt.x = 0; - pt.y = 0; - ClientToScreen(GetParent(hWnd), &pt); - GetClientRect(GetParent(hWnd), &parent); - np2class_move(hWnd, - pt.x + ((parent.right - parent.left - aboutsize.cx) / 2), - pt.y + ((parent.bottom - parent.top - aboutsize.cy) / 2), - aboutsize.cx, - aboutsize.cy + 60 - (rectclient.bottom - rectclient.top)); + + GetWindowRect(hWnd, &rect); + s_szAbout.cx = rect.right - rect.left; + s_szAbout.cy = rect.bottom - rect.top; + + if ((dlgs_getitemrect(hWnd, IDC_MORE, &rectMore)) && + (dlgs_getitemrect(hWnd, IDC_NP2INFO, &rectInfo))) + { + nHeight = s_szAbout.cy - (rectInfo.bottom - rectMore.bottom); + GetClientRect(GetParent(hWnd), &rect); + pt.x = (rect.right - rect.left - s_szAbout.cx) / 2; + pt.y = (rect.bottom - rect.top - s_szAbout.cy) / 2; + ClientToScreen(GetParent(hWnd), &pt); + np2class_move(hWnd, pt.x, pt.y, s_szAbout.cx, nHeight); + } SetFocus(GetDlgItem(hWnd, IDOK)); } -static void about_more(HWND hWnd) { - - char infostr[1024]; +static void onMore(HWND hWnd) +{ + OEMCHAR szInfo[1024]; RECT rect; - - np2info(infostr, np2infostr, sizeof(infostr), NULL); - SetDlgItemText(hWnd, IDC_NP2INFO, infostr); +#if defined(OSLANG_UTF8) + TCHAR szInfo2[1024]; +#endif // defined(OSLANG_UTF8) + + np2info(szInfo, np2infostr, NELEMENTS(szInfo), NULL); +#if defined(OSLANG_UTF8) + oemtotchar(szInfo2, NELEMENTS(szInfo2), szInfo, -1); + SetDlgItemText(hWnd, IDC_NP2INFO, szInfo2); +#else + SetDlgItemText(hWnd, IDC_NP2INFO, szInfo); +#endif EnableWindow(GetDlgItem(hWnd, IDC_MORE), FALSE); GetWindowRect(hWnd, &rect); - np2class_move(hWnd, rect.left, rect.top, aboutsize.cx, aboutsize.cy); + np2class_move(hWnd, rect.left, rect.top, s_szAbout.cx, s_szAbout.cy); SetFocus(GetDlgItem(hWnd, IDOK)); } -LRESULT CALLBACK AboutDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { - - switch (msg) { +LRESULT CALLBACK AboutDialogProc(HWND hWnd, UINT uMsg, + WPARAM wParam, LPARAM lParam) +{ + switch(uMsg) + { case WM_INITDIALOG: - about_init(hWnd); - return(FALSE); + onInitDialog(hWnd); + break; case WM_COMMAND: - switch (LOWORD(wp)) { + switch (LOWORD(wParam)) + { case IDOK: EndDialog(hWnd, IDOK); - break; + return TRUE; case IDC_MORE: - about_more(hWnd); + onMore(hWnd); break; - - default: - return(FALSE); } break; case WM_CLOSE: PostMessage(hWnd, WM_COMMAND, IDOK, 0); break; - - default: - return(FALSE); } - return(TRUE); + return FALSE; }