BOOL CALLBACK AboutBox_Proc (HWND dialog, UINT message,WPARAM wparam,LPARAM lparam) { switch(message) { case WM_INITDIALOG: { char buf[256] = {0}; memset(&buf[0], 0, sizeof(buf)); sprintf(buf, "DeSmuME%s", EMU_DESMUME_VERSION_STRING()); SetDlgItemText(dialog, IDC_TXT_VERSION, buf); sprintf(buf, "compiled %s - %s %s", __DATE__, __TIME__, EMU_DESMUME_COMPILER_DETAIL()); SetDlgItemText(dialog, IDC_TXT_COMPILED, buf); gList = GetDlgItem(dialog, IDC_AUTHORS_LIST); SetWindowLongPtr(gList, GWLP_WNDPROC, (LONG_PTR)ListProc); GetClientRect(gList, &gRc); gPosY = gRc.bottom; SetTimer(dialog, ABOUT_TIMER_ID, 20, (TIMERPROC) NULL); break; } case WM_COMMAND: { if((HIWORD(wparam) == BN_CLICKED)&&(((int)LOWORD(wparam)) == IDC_FERMER)) { KillTimer(dialog, ABOUT_TIMER_ID); EndDialog(dialog,0); return 1; } break; } case WM_TIMER: { gPosY--; InvalidateRect(gList, &gRc, false); break; } } return 0; }
BOOL CALLBACK AboutBox_Proc (HWND dialog, UINT message,WPARAM wparam,LPARAM lparam) { switch(message) { case WM_INITDIALOG: { // Support Unicode text display wchar_t wstr[256]; wchar_t wstr1[256]; wchar_t wstr2[256]; GetDlgItemTextW(dialog, IDC_TXT_VERSION, wstr,256); MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, EMU_DESMUME_VERSION_STRING(), -1, wstr1, 255); MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, EMU_DESMUME_COMPILER_DETAIL(), -1, wstr2, 255); wcscat(wstr, wcscat(wstr1, wstr2)); SetDlgItemTextW(dialog, IDC_TXT_VERSION, wstr); GetDlgItemTextW(dialog, IDC_TXT_COMPILED, wstr,256); MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, __DATE__, -1, wstr1, 255); MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, __TIME__, -1, wstr2, 255); wcscat(wstr, wcscat(wcscat(wstr1, L" "), wstr2)); SetDlgItemTextW(dialog, IDC_TXT_COMPILED, wstr); for (int i = 0; i < SIZE_SCROLL_BUFFER; i++) strcpy((char *)scroll_buffer[i], "\n"); for (int i = 0; i < TEAM; i++) { strcpy((char *)scroll_buffer[i + PER_PAGE_TEAM], team[i]); strcat((char *)scroll_buffer[i + PER_PAGE_TEAM], "\n"); } SetTimer(dialog, ABOUT_TIMER_ID, 400, (TIMERPROC) NULL); scroll_start = 1; break; } case WM_COMMAND: { if((HIWORD(wparam) == BN_CLICKED)&&(((int)LOWORD(wparam)) == IDC_FERMER)) { KillTimer(dialog, ABOUT_TIMER_ID); EndDialog(dialog,0); return 1; } break; } case WM_TIMER: { char buf[4096]; memset(buf, 0, sizeof(buf)); for (int i = 0; i < PER_PAGE_TEAM; i++) if(i+scroll_start < SIZE_SCROLL_BUFFER) strcat(buf, (char *)scroll_buffer[i + scroll_start]); scroll_start++; if (scroll_start >= SIZE_SCROLL_BUFFER) scroll_start = 0; SetDlgItemText(dialog, IDC_AUTHORS_LIST, buf); break; } } return 0; }