| version 1.5, 2003/11/07 20:07:58 | version 1.14, 2007/10/26 14:38:34 | 
| Line 1 | Line 1 | 
 | #include        "compiler.h" | #include        "compiler.h" | 
 | #include        "resource.h" | #include        "resource.h" | 
 | #include        "np2.h" | #include        "np2.h" | 
 |  | #include        "oemtext.h" | 
 | #include        "np2class.h" | #include        "np2class.h" | 
 | #include        "np2info.h" |  | 
 | #include        "dialog.h" | #include        "dialog.h" | 
 | #include        "dialogs.h" | #include        "dialogs.h" | 
 | #include        "np2ver.h" | #include        "np2ver.h" | 
 | #include        "pccore.h" | #include        "pccore.h" | 
 |  | #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\r\n"                                          \ |  | 
| "MEM: !MEM1\r\n"                                                        \ |  | 
| "GDC: !GDC\r\n"                                                         \ |  | 
| "TEXT: !TEXT\r\n"                                                       \ |  | 
| "GRPH: !GRPH\r\n"                                                       \ |  | 
| "SOUND: !EXSND\r\n"                                                     \ |  | 
| "\r\n"                                                                          \ |  | 
| "BIOS: !BIOS\r\n"                                                       \ |  | 
| "RHYTHM: !RHYTHM\r\n"                                           \ |  | 
| "\r\n"                                                                          \ |  | 
| "SCREEN: !DISP"; |  | 
 |  |  | 
 |  | 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 about_init(HWND hWnd) { |  | 
 |  |  | 
| char    work[128]; | static void onInitDialog(HWND hWnd) | 
|  | { | 
|  | OEMCHAR szWork[128]; | 
 | RECT    rect; | RECT    rect; | 
 |  | RECT    rectMore; | 
 |  | RECT    rectInfo; | 
 |  | int             nHeight; | 
 | POINT   pt; | POINT   pt; | 
| RECT    parent; | #if defined(OSLANG_UTF8) | 
|  | TCHAR   szWork2[128]; | 
|  | #endif  // defined(OSLANG_UTF8) | 
 |  |  | 
| milstr_ncpy(work, str_np2title, sizeof(work)); | milstr_ncpy(szWork, str_np2title, NELEMENTS(szWork)); | 
| milstr_ncat(work, np2version, sizeof(work)); | milstr_ncat(szWork, np2version, NELEMENTS(szWork)); | 
 | #if defined(NP2VER_WIN9X) | #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 | #endif | 
| SetDlgItemText(hWnd, IDC_NP2VER, work); |  | 
 | GetWindowRect(hWnd, &rect); | GetWindowRect(hWnd, &rect); | 
| aboutsize.cx = rect.right - rect.left; | s_szAbout.cx = rect.right - rect.left; | 
| aboutsize.cy = rect.bottom - rect.top; | s_szAbout.cy = rect.bottom - rect.top; | 
| pt.x = 0; |  | 
| pt.y = 0; | if ((dlgs_getitemrect(hWnd, IDC_MORE, &rectMore)) && | 
| ClientToScreen(GetParent(hWnd), &pt); | (dlgs_getitemrect(hWnd, IDC_NP2INFO, &rectInfo))) | 
| GetClientRect(GetParent(hWnd), &parent); | { | 
| np2class_move(hWnd, | nHeight = s_szAbout.cy - (rectInfo.bottom - rectMore.bottom); | 
| pt.x + ((parent.right - parent.left - aboutsize.cx) / 2), | GetClientRect(GetParent(hWnd), &rect); | 
| pt.y + ((parent.bottom - parent.top - aboutsize.cy) / 2), | pt.x = (rect.right - rect.left - s_szAbout.cx) / 2; | 
| aboutsize.cx, 84); | 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)); | SetFocus(GetDlgItem(hWnd, IDOK)); | 
 | } | } | 
 |  |  | 
| static void about_more(HWND hWnd) { | static void onMore(HWND hWnd) | 
|  | { | 
| char    infostr[1024]; | OEMCHAR szInfo[1024]; | 
 | RECT    rect; | RECT    rect; | 
|  | #if defined(OSLANG_UTF8) | 
| np2info(infostr, np2infostr, sizeof(infostr)); | TCHAR   szInfo2[1024]; | 
| SetDlgItemText(hWnd, IDC_NP2INFO, infostr); | #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); | EnableWindow(GetDlgItem(hWnd, IDC_MORE), FALSE); | 
 | GetWindowRect(hWnd, &rect); | 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)); | SetFocus(GetDlgItem(hWnd, IDOK)); | 
 | } | } | 
 |  |  | 
| LRESULT CALLBACK AboutDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { | LRESULT CALLBACK AboutDialogProc(HWND hWnd, UINT uMsg, | 
|  | WPARAM wParam, LPARAM lParam) | 
| switch (msg) { | { | 
|  | switch(uMsg) | 
|  | { | 
 | case WM_INITDIALOG: | case WM_INITDIALOG: | 
| about_init(hWnd); | onInitDialog(hWnd); | 
| return(FALSE); | break; | 
 |  |  | 
 | case WM_COMMAND: | case WM_COMMAND: | 
| switch (LOWORD(wp)) { | switch (LOWORD(wParam)) | 
|  | { | 
 | case IDOK: | case IDOK: | 
 | EndDialog(hWnd, IDOK); | EndDialog(hWnd, IDOK); | 
| break; | return TRUE; | 
 |  |  | 
 | case IDC_MORE: | case IDC_MORE: | 
| about_more(hWnd); | onMore(hWnd); | 
 | break; | break; | 
 |  |  | 
 | default: |  | 
 | return(FALSE); |  | 
 | } | } | 
 | break; | break; | 
 |  |  | 
 | case WM_CLOSE: | case WM_CLOSE: | 
 | PostMessage(hWnd, WM_COMMAND, IDOK, 0); | PostMessage(hWnd, WM_COMMAND, IDOK, 0); | 
 | break; | break; | 
 |  |  | 
 | default: |  | 
 | return(FALSE); |  | 
 | } | } | 
| return(TRUE); | return FALSE; | 
 | } | } | 
 |  |  |