static INT_PTR CALLBACK WaitProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM) // LPARAM lParam { switch (Msg) { case WM_INITDIALOG: hRomsDlg = hDlg; nOldSelect = nBurnDrvActive; memset(gameAv, 0, sizeof(gameAv)); SendDlgItemMessage(hDlg, IDC_WAIT_PROG, PBM_SETRANGE, 0, MAKELPARAM(0, nBurnDrvCount)); SendDlgItemMessage(hDlg, IDC_WAIT_PROG, PBM_SETSTEP, (WPARAM)1, 0); ShowWindow(GetDlgItem(hDlg, IDC_WAIT_LABEL_A), TRUE); SendMessage(GetDlgItem(hDlg, IDC_WAIT_LABEL_A), WM_SETTEXT, (WPARAM)0, (LPARAM)_T("Scanning ROMs...")); ShowWindow(GetDlgItem(hDlg, IDCANCEL), TRUE); avOk = false; hScanThread = (HANDLE)_beginthreadex(NULL, 0, AnalyzingRoms, NULL, 0, &ScanThreadId); hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if (hParent == NULL) { RECT rect; int x, y; SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0); x = 315 + GetSystemMetrics(SM_CXDLGFRAME) * 2 + 6; y = 74 + GetSystemMetrics(SM_CYDLGFRAME) * 2 + 6; SetForegroundWindow(hDlg); SetWindowPos(hDlg, HWND_TOPMOST, (rect.right - rect.left) / 2 - x / 2, (rect.bottom - rect.top) / 2 - y / 2, x, y, 0); RedrawWindow(hDlg, NULL, NULL, 0); ShowWindow(hDlg, SW_SHOWNORMAL); } else { WndInMid(hDlg, hParent); SetFocus(hDlg); // Enable Esc=close } break; case WM_COMMAND: if (LOWORD(wParam) == IDCANCEL) { PostMessage(hDlg, WM_CLOSE, 0, 0); } break; case WM_CLOSE: QuitRomsScan(); EndDialog(hDlg, 0); hRomsDlg = NULL; hParent = NULL; } return 0; }
int SFactdCreate() { if (bShotsFactory) { return 1; } bShotsFactory = 1; bOldPause = bRunPause; bRunPause = 1; AudBlankSound(); hSFactdlg=FBACreateDialog(hAppInst,MAKEINTRESOURCE(IDD_CAPTURE),hScrnWnd,DialogProc); if (hSFactdlg==NULL) return 1; WndInMid(hSFactdlg,hScrnWnd); ShowWindow(hSFactdlg,SW_NORMAL); SFactdUpdate(); return 0; }
int InpdX2Create() { DestroyWindow(hInpdX1Dlg); hInpdX1Dlg=NULL; // Make sure exitted DestroyWindow(hInpdX2Dlg); hInpdX2Dlg=NULL; // Make sure exitted hInpdX2Dlg=CreateDialog(hAppInst,MAKEINTRESOURCE(IDD_INPCX2),hInpDIPSWDlg,DialogProc); if (hInpdX2Dlg==NULL) { return 1; } WndInMid(hInpdX2Dlg,hInpDIPSWDlg); ShowWindow(hInpdX2Dlg,SW_NORMAL); return 0; }
int InpDIPSWCreate() { if (bDrvOkay == 0) { // No game is loaded return 1; } bOK = false; DestroyWindow(hInpDIPSWDlg); // Make sure exitted hInpDIPSWDlg = FBACreateDialog(hAppInst, MAKEINTRESOURCE(IDD_INPDIP), hScrnWnd, DialogProc); if (hInpDIPSWDlg == NULL) { return 1; } WndInMid(hInpDIPSWDlg, hScrnWnd); ShowWindow(hInpDIPSWDlg, SW_NORMAL); return 0; }
static INT_PTR CALLBACK ProgressProc(HWND hDlg, UINT Msg, WPARAM /*wParam*/, LPARAM /*lParam*/) { if (Msg == WM_INITDIALOG) { TCHAR szText[128] = _T(""); hProgressDlg = hDlg; SendDlgItemMessage(hDlg, IDC_WAIT_PROG, PBM_SETRANGE32, nProgressMin, nProgressMax); _stprintf(szText, FBALoadStringEx(hAppInst, IDS_PROGRESS_LOADING, true), BurnDrvGetText(DRV_NAME)); SendDlgItemMessage(hDlg, IDC_WAIT_LABEL_B1, WM_SETTEXT, 0, (LPARAM)szText); ShowWindow(GetDlgItem(hDlg, IDC_WAIT_LABEL_B1), TRUE); ShowWindow(GetDlgItem(hDlg, IDC_WAIT_LABEL_B2), TRUE); WndInMid(hDlg, hScrnWnd); SetForegroundWindow(hDlg); SetWindowPos(hDlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); return TRUE; } return 0; }
static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { int var; static bool chOk; switch (Msg) { case WM_INITDIALOG: { chOk = false; // Setup edit controls values (ROMs Paths) for(int x = 0; x < 8; x++) { SetDlgItemText(hDlg, IDC_ROMSDIR_EDIT1 + x, szAppRomPaths[x]); } // Setup the tabs hTabControl = GetDlgItem(hDlg, IDC_ROMPATH_TAB); TC_ITEM tcItem; tcItem.mask = TCIF_TEXT; UINT idsString[8] = { IDS_ROMPATH_1,IDS_ROMPATH_2,IDS_ROMPATH_3,IDS_ROMPATH_4,IDS_ROMPATH_5,IDS_ROMPATH_6,IDS_ROMPATH_7,IDS_ROMPATH_8 }; for(int nIndex = 0; nIndex < 8; nIndex++) { tcItem.pszText = FBALoadStringEx(hAppInst, idsString[nIndex], true); TabCtrl_InsertItem(hTabControl, nIndex, &tcItem); } int TabPage = TabCtrl_GetCurSel(hTabControl); // hide all controls excluding the selected controls for(int x = 0; x < 8; x++) { if(x != TabPage) { ShowWindow(GetDlgItem(hDlg, IDC_ROMSDIR_BR1 + x), SW_HIDE); // browse buttons ShowWindow(GetDlgItem(hDlg, IDC_ROMSDIR_EDIT1 + x), SW_HIDE); // edit controls } } // Show the proper controls ShowWindow(GetDlgItem(hDlg, IDC_ROMSDIR_BR1 + TabPage), SW_SHOW); // browse buttons ShowWindow(GetDlgItem(hDlg, IDC_ROMSDIR_EDIT1 + TabPage), SW_SHOW); // edit controls UpdateWindow(hDlg); WndInMid(hDlg, hParent); SetFocus(hDlg); // Enable Esc=close break; } case WM_NOTIFY: { NMHDR* pNmHdr = (NMHDR*)lParam; if (pNmHdr->code == TCN_SELCHANGE) { int TabPage = TabCtrl_GetCurSel(hTabControl); // hide all controls excluding the selected controls for(int x = 0; x < 8; x++) { if(x != TabPage) { ShowWindow(GetDlgItem(hDlg, IDC_ROMSDIR_BR1 + x), SW_HIDE); // browse buttons ShowWindow(GetDlgItem(hDlg, IDC_ROMSDIR_EDIT1 + x), SW_HIDE); // edit controls } } // Show the proper controls ShowWindow(GetDlgItem(hDlg, IDC_ROMSDIR_BR1 + TabPage), SW_SHOW); // browse buttons ShowWindow(GetDlgItem(hDlg, IDC_ROMSDIR_EDIT1 + TabPage), SW_SHOW); // edit controls UpdateWindow(hDlg); return FALSE; } break; } case WM_COMMAND: { LPMALLOC pMalloc = NULL; BROWSEINFO bInfo; ITEMIDLIST* pItemIDList = NULL; TCHAR buffer[MAX_PATH]; if (LOWORD(wParam) == IDOK) { for (int i = 0; i < 8; i++) { // if (GetDlgItemText(hDlg, IDC_ROMSDIR_EDIT1 + i, buffer, sizeof(buffer)) && lstrcmp(szAppRomPaths[i], buffer)) { GetDlgItemText(hDlg, IDC_ROMSDIR_EDIT1 + i, buffer, sizeof(buffer)); if (lstrcmp(szAppRomPaths[i], buffer)) chOk = true; lstrcpy(szAppRomPaths[i], buffer); // } } SendMessage(hDlg, WM_CLOSE, 0, 0); break; } else { if (LOWORD(wParam) >= IDC_ROMSDIR_BR1 && LOWORD(wParam) <= IDC_ROMSDIR_BR8) { var = IDC_ROMSDIR_EDIT1 + LOWORD(wParam) - IDC_ROMSDIR_BR1; } else { if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDCANCEL) { SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } } SHGetMalloc(&pMalloc); memset(&bInfo, 0, sizeof(bInfo)); bInfo.hwndOwner = hDlg; bInfo.pszDisplayName = buffer; bInfo.lpszTitle = FBALoadStringEx(hAppInst, IDS_ROMS_SELECT_DIR, true); bInfo.ulFlags = BIF_EDITBOX | BIF_RETURNONLYFSDIRS; pItemIDList = SHBrowseForFolder(&bInfo); if (pItemIDList) { if (SHGetPathFromIDList(pItemIDList, buffer)) { int strLen = _tcslen(buffer); if (strLen) { if (buffer[strLen - 1] != _T('\\')) { buffer[strLen] = _T('\\'); buffer[strLen + 1] = _T('\0'); } SetDlgItemText(hDlg, var, buffer); } } pMalloc->Free(pItemIDList); } pMalloc->Release(); break; } case WM_CLOSE: { hParent = NULL; EndDialog(hDlg, 0); if (chOk) { bRescanRoms = true; CreateROMInfo(hDlg); } } } return 0; }
static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { if (Msg == WM_INITDIALOG) { // EnableWindow(hScrnWnd, FALSE); hInpCheatDlg = hDlg; InpCheatInit(); if (!kNetGame && bAutoPause) { bRunPause = 1; } WndInMid(hDlg, hScrnWnd); SetFocus(hDlg); // Enable Esc=close return TRUE; } if (Msg == WM_CLOSE) { EnableWindow(hScrnWnd, TRUE); DestroyWindow(hInpCheatDlg); return 0; } if (Msg == WM_DESTROY) { InpCheatCancel(); InpCheatExit(); return 0; } if (Msg == WM_COMMAND) { int Id = LOWORD(wParam); int Notify = HIWORD(wParam); if (Id == IDOK && Notify == BN_CLICKED) { // OK button bOK = true; SendMessage(hDlg, WM_CLOSE, 0, 0); return 0; } if (Id == IDCANCEL && Notify == BN_CLICKED) { // cancel = close SendMessage(hDlg, WM_CLOSE, 0, 0); return 0; } if (Id == IDC_INPCX1_VALUE && Notify == CBN_SELCHANGE) { int nSel = SendMessage(GetDlgItem(hInpCheatDlg, IDC_INPCX1_VALUE), CB_GETCURSEL, 0, 0); CheatEnable(nCurrentCheat, nSel); InpCheatListMake(); return 0; } if (Id == IDC_INPC_RESET && Notify == BN_CLICKED) { CheatInfo* pCurrentCheat = pCheatInfo; nCurrentCheat = 0; while (pCurrentCheat) { CheatEnable(nCurrentCheat, -1); pCurrentCheat = pCurrentCheat->pNext; nCurrentCheat++; } InpCheatListMake(); // refresh view SendMessage(GetDlgItem(hInpCheatDlg, IDC_INPCX1_VALUE), CB_RESETCONTENT, 0, 0); return 0; } } if (Msg == WM_NOTIFY && lParam) { int Id = LOWORD(wParam); NMHDR *pnm = (NMHDR*)lParam; if (Id == IDC_INPCHEAT_LIST && pnm->code == LVN_ITEMCHANGED) { if (((NM_LISTVIEW*)lParam)->uNewState & LVIS_SELECTED) { InpCheatSelect(); } return 0; } if (Id == IDC_INPCHEAT_LIST && ((pnm->code == NM_DBLCLK) || (pnm->code == NM_RDBLCLK))) { // Select the next item of the currently selected one. int nSel_Dbl = SendMessage(GetDlgItem(hInpCheatDlg, IDC_INPCX1_VALUE), CB_GETCURSEL, 0, 0); int nCount = SendMessage(GetDlgItem(hInpCheatDlg, IDC_INPCX1_VALUE), CB_GETCOUNT, 0, 0); if ((nSel_Dbl != LB_ERR) && (nCount > 1)) { if (pnm->code == NM_DBLCLK) { if (++nSel_Dbl >= nCount) nSel_Dbl = 0; } else { if (--nSel_Dbl < 0) nSel_Dbl = nCount - 1; } SendMessage(GetDlgItem(hInpCheatDlg, IDC_INPCX1_VALUE), CB_SETCURSEL, nSel_Dbl, 0); CheatEnable(nCurrentCheat, nSel_Dbl); InpCheatListMake(); } return 0; } } return 0; }
static INT_PTR CALLBACK FBAPopupProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { switch (Msg) { // Grab the handle to the font we need to use case WM_SETFONT: { hEditFont = (HFONT)wParam; break; } case WM_DRAWITEM: { if (((LPDRAWITEMSTRUCT)lParam)->CtlID == IDC_MESSAGE_ICON) { DrawIconEx(((LPDRAWITEMSTRUCT)lParam)->hDC, 0, 0, (HICON)LoadImage(NULL, MAKEINTRESOURCE(nIcon), IMAGE_ICON, 0, 0, LR_LOADTRANSPARENT | LR_SHARED), 32, 32, 0, NULL, DI_NORMAL | DI_DEFAULTSIZE); } break; } case WM_INITDIALOG: { int nBeep = -1; TCHAR szCaption[1024] = _T(""); TCHAR* pszTypeEnglish; TCHAR* pszTypeLocal; nIcon = 0; switch (nPopupFlags & 7) { case PUF_TYPE_ERROR: nIcon = OIC_ERROR; nBeep = MB_ICONHAND; pszTypeEnglish = FBALoadStringEx(hAppInst, IDS_ERR_ERROR, false); pszTypeLocal = FBALoadStringEx(hAppInst, IDS_ERR_ERROR, true); break; case PUF_TYPE_WARNING: nIcon = OIC_WARNING; nBeep = MB_ICONEXCLAMATION; pszTypeEnglish = FBALoadStringEx(hAppInst, IDS_ERR_WARNING, false); pszTypeLocal = FBALoadStringEx(hAppInst, IDS_ERR_WARNING, true); break; default: nIcon = OIC_INFORMATION; nBeep = MB_ICONASTERISK; pszTypeEnglish = FBALoadStringEx(hAppInst, IDS_ERR_INFORMATION, false); pszTypeLocal = FBALoadStringEx(hAppInst, IDS_ERR_INFORMATION, true); break; } // Set the icon SendDlgItemMessage(hDlg, IDC_MESSAGE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadImage(NULL, MAKEINTRESOURCE(nIcon), IMAGE_ICON, 32, 32, LR_SHARED)); // Set the caption _sntprintf(szCaption, 1024, _T(APP_TITLE) _T(" %s"), pszTypeLocal); SetWindowText(hDlg, szCaption); { SIZE sizee = { 0, 0 }; SIZE sizel = { 0, 0 }; POINT p = { 0, 0 }; RECT rect; HWND hWnd; { hWnd = GetDlgItem(hDlg, IDC_MESSAGE_EDIT_ENG); HDC hDC = GetDC(hWnd); HFONT hFont = (HFONT)SelectObject(hDC, hEditFont); for (TCHAR* szText = pszBufferEnglish; ; ) { SIZE line; int nLen; for (nLen = 0; szText[nLen] && szText[nLen] != _T('\n'); nLen++) { } GetTextExtentPoint32(hDC, szText, nLen ? nLen : 1, &line); if (sizee.cx < line.cx) { sizee.cx = line.cx; } sizee.cy += line.cy; if (!szText[nLen]) { break; } szText += nLen + 1; } if (bLocalisationActive && pszBufferLocal) { for (TCHAR* szText = pszBufferLocal; ; ) { SIZE line; int nLen; for (nLen = 0; szText[nLen] && szText[nLen] != _T('\n'); nLen++) { } GetTextExtentPoint32(hDC, szText, nLen ? nLen : 1, &line); if (sizel.cx < line.cx) { sizel.cx = line.cx; } sizel.cy += line.cy; if (!szText[nLen]) { break; } szText += nLen + 1; } } SelectObject(hDC, hFont); ReleaseDC(hWnd, hDC); } // Set minimum size if needed hWnd = GetDlgItem(hDlg, IDOK); GetWindowRect(hWnd, &rect); if (sizee.cx < (rect.right - rect.left)) { sizee.cx = rect.right - rect.left; } ClientToScreen(hDlg, &p); GetWindowRect(hDlg, &rect); // Size dialog and edit control containing message text if (bLocalisationActive && pszBufferLocal) { if (sizel.cx < sizee.cx) { sizel.cx = sizee.cx; } else { sizee.cx = sizel.cx; } if (sizel.cy < 32) { sizel.cy = 32; } MoveWindow(hDlg, rect.left, rect.top, rect.right - rect.left + sizee.cx, rect.bottom - rect.top + sizee.cy + sizel.cy + 12, FALSE); hWnd = GetDlgItem(hDlg, IDC_MESSAGE_EDIT_LOCAL); GetWindowRect(hWnd, &rect); SetWindowPos(hWnd, NULL, 0, 0, rect.right - rect.left + sizel.cx, rect.bottom - rect.top + sizel.cy, SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW); SendMessage(hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)pszBufferLocal); SendMessage(hWnd, EM_SETMARGINS, EC_LEFTMARGIN, 3); ShowWindow(hWnd, SW_SHOW); hWnd = GetDlgItem(hDlg, IDC_MESSAGE_BACK); SetWindowPos(hWnd, NULL, 0, 0, 9999, rect.bottom - p.y + sizel.cy + 6, SWP_NOZORDER | SWP_NOREDRAW); ShowWindow(hWnd, SW_SHOW); p.y -= rect.bottom - rect.top + sizel.cy + 12; } else { if (sizee.cy < 32) { sizee.cy = 32; } MoveWindow(hDlg, rect.left, rect.top, rect.right - rect.left + sizee.cx, rect.bottom - rect.top + sizee.cy, FALSE); } hWnd = GetDlgItem(hDlg, IDC_MESSAGE_EDIT_ENG); SendMessage(hWnd, EM_SETBKGNDCOLOR, 0, GetSysColor(COLOR_3DFACE)); GetWindowRect(hWnd, &rect); SetWindowPos(hWnd, NULL, rect.left - p.x, rect.top - p.y, rect.right - rect.left + sizee.cx, rect.bottom - rect.top + sizee.cy, (pszBufferLocal ? 0 : SWP_NOMOVE) | SWP_NOZORDER | SWP_NOREDRAW); SendMessage(hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)pszBufferEnglish); SendMessage(hWnd, EM_SETMARGINS, EC_LEFTMARGIN, 3); // Center button GetClientRect(hDlg, &rect); p.x = (rect.right - rect.left) / 2; hWnd = GetDlgItem(hDlg, IDOK); GetWindowRect(hWnd, &rect); SetWindowPos(hWnd, NULL, p.x - (rect.right - rect.left) / 2, rect.top - p.y + sizee.cy, 0, 0, SWP_NOSIZE | SWP_NOZORDER); } WndInMid(hDlg, hScrnWnd); SetForegroundWindow(hDlg); MessageBeep(nBeep); return TRUE; } case WM_COMMAND: { if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDOK) { SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } case WM_CLOSE: { EndDialog(hDlg, 0); break; } } return 0; }
static BOOL CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { if (Msg == WM_INITDIALOG) { // EnableWindow(hScrnWnd, FALSE); hInpDIPSWDlg = hDlg; InpDIPSWInit(); if (!kNetGame && bAutoPause) { bRunPause = 1; } WndInMid(hDlg, hScrnWnd); SetFocus(hDlg); // Enable Esc=close return TRUE; } if (Msg == WM_CLOSE) { EnableWindow(hScrnWnd, TRUE); DestroyWindow(hInpDIPSWDlg); return 0; } if (Msg == WM_DESTROY) { InpDIPSWCancel(); InpDIPSWExit(); return 0; } if (Msg == WM_COMMAND) { int Id = LOWORD(wParam); int Notify = HIWORD(wParam); if (Id == IDOK && Notify == BN_CLICKED) { // OK button bOK = true; SendMessage(hDlg, WM_CLOSE, 0, 0); return 0; } if (Id == IDCANCEL && Notify == BN_CLICKED) { // cancel = close SendMessage(hDlg, WM_CLOSE, 0, 0); return 0; } // New DIPswitch value selected if (Id == IDC_INPCX1_VALUE && Notify == CBN_SELCHANGE) { BurnDIPInfo bdi = {0, 0, 0, 0, NULL}; struct GameInp *pgi; int nSel = SendMessage(GetDlgItem(hInpDIPSWDlg, IDC_INPCX1_VALUE), CB_GETCURSEL, 0, 0); int j = 0; for (int i = 0; i <= nSel; i++) { do { BurnDrvGetDIPInfo(&bdi, nDIPGroup + 1 + j++); } while (bdi.nFlags == 0); } pgi = GameInp + bdi.nInput + nDIPOffset; pgi->Input.Constant.nConst = (pgi->Input.Constant.nConst & ~bdi.nMask) | (bdi.nSetting & bdi.nMask); if (bdi.nFlags & 0x40) { while (BurnDrvGetDIPInfo(&bdi, nDIPGroup + 1 + j++) == 0) { if (bdi.nFlags == 0) { pgi = GameInp + bdi.nInput + nDIPOffset; pgi->Input.Constant.nConst = (pgi->Input.Constant.nConst & ~bdi.nMask) | (bdi.nSetting & bdi.nMask); } else { break; } } } InpDIPSWListMake(); return 0; } // New DIPswitch selected if (Id == IDC_INPC_RESET && Notify == BN_CLICKED) { InpDIPSWResetDIPs(); InpDIPSWListMake(); // refresh view SendMessage(GetDlgItem(hInpDIPSWDlg, IDC_INPCX1_VALUE), CB_RESETCONTENT, 0, 0); return 0; } } if (Msg == WM_NOTIFY && lParam) { int Id = LOWORD(wParam); NMHDR* pnm = (NMHDR*)lParam; if (Id == IDC_INPCHEAT_LIST && pnm->code == LVN_ITEMCHANGED) { if (((NM_LISTVIEW*)lParam)->uNewState & LVIS_SELECTED) { InpDIPSWSelect(); } return 0; } if (Id == IDC_INPCHEAT_LIST && pnm->code == NM_CUSTOMDRAW) { NMLVCUSTOMDRAW* plvcd = (NMLVCUSTOMDRAW*)lParam; switch (plvcd->nmcd.dwDrawStage) { case CDDS_PREPAINT: { SetWindowLong(hInpDIPSWDlg, DWL_MSGRESULT, CDRF_NOTIFYITEMDRAW); return 1; } case CDDS_ITEMPREPAINT: { BurnDIPInfo bdi; BurnDrvGetDIPInfo(&bdi, plvcd->nmcd.lItemlParam); if (bdi.nFlags == 0xFD) { plvcd->clrTextBk = RGB(0xFF, 0xDF, 0xBB); SetWindowLong(hInpDIPSWDlg, DWL_MSGRESULT, CDRF_NEWFONT); } return 1; } } } } return 0; }
static INT_PTR CALLBACK CPUClockProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM) // LPARAM lParam { switch (Msg) { case WM_INITDIALOG: { TCHAR szText[16]; nExitStatus = 0; WndInMid(hDlg, hScrnWnd); // Initialise slider SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELONG(0x80, 0x0200)); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETLINESIZE, (WPARAM)0, (LPARAM)0x05); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)0x10); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)0x0100); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)0x0120); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)0x0140); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)0x0180); // Set slider to current value SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nBurnCPUSpeedAdjust); // Set the edit control to current value _stprintf(szText, _T("%i"), nBurnCPUSpeedAdjust * 100 / 256); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); return TRUE; } case WM_COMMAND: { switch (HIWORD(wParam)) { case BN_CLICKED: { if (LOWORD(wParam) == IDOK) { nExitStatus = 1; SendMessage(hDlg, WM_CLOSE, 0, 0); } if (LOWORD(wParam) == IDCANCEL) { nExitStatus = -1; SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } case EN_UPDATE: { if (nExitStatus == 0) { TCHAR szText[16] = _T(""); bool bValid = 1; int nValue; if (SendDlgItemMessage(hDlg, IDC_CPUCLOCK_EDIT, WM_GETTEXTLENGTH, (WPARAM)0, (LPARAM)0) < 16) { SendDlgItemMessage(hDlg, IDC_CPUCLOCK_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); } // Scan string in the edit control for illegal characters for (int i = 0; szText[i]; i++) { if (!_istdigit(szText[i])) { bValid = 0; break; } } if (bValid) { nValue = _tcstol(szText, NULL, 0); if (nValue < 25) { nValue = 25; } else { if (nValue > 400) { nValue = 400; } } nValue = (int)((double)nValue * 256.0 / 100.0 + 0.5); // Set slider to current value SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nValue); } } break; } } break; } case WM_HSCROLL: { switch (LOWORD(wParam)) { case TB_BOTTOM: case TB_ENDTRACK: case TB_LINEDOWN: case TB_LINEUP: case TB_PAGEDOWN: case TB_PAGEUP: case TB_THUMBPOSITION: case TB_THUMBTRACK: case TB_TOP: { if (nExitStatus == 0) { TCHAR szText[16]; int nValue; // Update the contents of the edit control nValue = SendDlgItemMessage(hDlg, IDC_CPUCLOCK_SLIDER, TBM_GETPOS, (WPARAM)0, (LPARAM)0); nValue = (int)((double)nValue * 100.0 / 256.0 + 0.5); _stprintf(szText, _T("%i"), nValue); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); } break; } } break; } case WM_CLOSE: if (nExitStatus == 1) { TCHAR szText[16] = _T(""); SendDlgItemMessage(hDlg, IDC_CPUCLOCK_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); nBurnCPUSpeedAdjust = _tcstol(szText, NULL, 0); if (nBurnCPUSpeedAdjust < 25) { nBurnCPUSpeedAdjust = 25; } else { if (nBurnCPUSpeedAdjust > 400) { nBurnCPUSpeedAdjust = 400; } } nBurnCPUSpeedAdjust = (int)((double)nBurnCPUSpeedAdjust * 256.0 / 100.0 + 0.5); } EndDialog(hDlg, 0); break; } return 0; }
static INT_PTR CALLBACK GammaProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM) // LPARAM lParam { static double nPrevGamma; switch (Msg) { case WM_INITDIALOG: { TCHAR szText[16]; int nPos; nPrevGamma = nGamma; nExitStatus = 0; WndInMid(hDlg, hScrnWnd); // Initialise gamma slider SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELONG(1, 20000)); SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_SETLINESIZE, (WPARAM)0, (LPARAM)200); SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)250); SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)7500); SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)10001); SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)12500); // Set slider to value of nGamma if (nGamma > 1.0) { // Gamma > 1 nPos = int((nGamma - 1.0) * 10000.0 + 10001.0); } else { // Gamma < 1 nPos = int(10000.0f - ((1.0 / nGamma) * 10000.0 - 10000.0)); } SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nPos); // Set the edit control to the value of nGamma _stprintf(szText, _T("%0.2f"), nGamma); SendDlgItemMessage(hDlg, IDC_GAMMA_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); // Update the screen ComputeGammaLUT(); if (bVidOkay) { VidRedraw(); VidPaint(0); } return TRUE; } case WM_COMMAND: { switch (HIWORD(wParam)) { case BN_CLICKED: { if (LOWORD(wParam) == IDOK) { nExitStatus = 1; SendMessage(hDlg, WM_CLOSE, 0, 0); } if (LOWORD(wParam) == IDCANCEL) { nExitStatus = -1; SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } case EN_UPDATE: { if (nExitStatus == 0) { TCHAR szText[16] = _T(""); bool bPoint = 0; bool bValid = 1; if (SendDlgItemMessage(hDlg, IDC_GAMMA_EDIT, WM_GETTEXTLENGTH, (WPARAM)0, (LPARAM)0) < 16) { SendDlgItemMessage(hDlg, IDC_GAMMA_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); } // Scan string in the edit control for illegal characters for (int i = 0; szText[i]; i++) { if (szText[i] == _T('.')) { if (bPoint) { bValid = 0; break; } } else { if (!_istdigit(szText[i])) { bValid = 0; break; } } } if (bValid) { int nPos; nGamma = _tcstod(szText, NULL); // Set slider to value of nGamma if (nGamma > 1.0) { // Gamma > 1 nPos = int((nGamma - 1.0) * 10000.0 + 10001.0); } else { // Gamma < 1 nPos = int(10000.0 - ((1.0 / nGamma) * 10000.0 - 10000.0)); } SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nPos); // Update the screen ComputeGammaLUT(); if (bVidOkay) { VidRedraw(); VidPaint(0); } } } break; } break; } } case WM_HSCROLL: { switch (LOWORD(wParam)) { case TB_BOTTOM: case TB_ENDTRACK: case TB_LINEDOWN: case TB_LINEUP: case TB_PAGEDOWN: case TB_PAGEUP: case TB_THUMBPOSITION: case TB_THUMBTRACK: case TB_TOP: { if (nExitStatus == 0) { TCHAR szText[16]; int nPos; // Update the contents of the edit control nPos = SendDlgItemMessage(hDlg, IDC_GAMMA_SLIDER, TBM_GETPOS, (WPARAM)0, (LPARAM)0); if (nPos > 10000) { // Gamma > 1 nGamma = 1.0 + (nPos - 10000.0) / 10000.0; } else { // Gamma < 1 nGamma = 1.0 / (1.0 + ((10001.0 - nPos) / 10000.0)); } _stprintf(szText, _T("%0.2f"), nGamma); SendDlgItemMessage(hDlg, IDC_GAMMA_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); // Update the screen ComputeGammaLUT(); if (bVidOkay) { VidRedraw(); VidPaint(0); } } break; } } break; } case WM_CLOSE: if (nExitStatus != 1) { nGamma = nPrevGamma; } EndDialog(hDlg, 0); } return 0; }
// ----------------------------------------------------------------------------- // Screen Angle dialog static INT_PTR CALLBACK ScreenAngleProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { static float fPrevScreenAngle, fPrevScreenCurvature; static HWND hScreenAngleSlider, hScreenAngleEdit; switch (Msg) { case WM_INITDIALOG: { TCHAR szText[16]; fPrevScreenAngle = fVidScreenAngle; fPrevScreenCurvature = fVidScreenCurvature; hScreenAngleSlider = GetDlgItem(hDlg, IDC_SCREENANGLE_SLIDER); hScreenAngleEdit = GetDlgItem(hDlg, IDC_SCREENANGLE_EDIT); nExitStatus = 0; WndInMid(hDlg, hScrnWnd); // Initialise sliders SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELONG(0, 12000)); SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_SETLINESIZE, (WPARAM)0, (LPARAM)100); SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)250); SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)1000); SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)2250); SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)6000); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELONG(0, 12000)); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_SETLINESIZE, (WPARAM)0, (LPARAM)150); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)375); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)3000); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)4500); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)6000); // Set sliders to current value SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)(fVidScreenAngle * RADTODEG * 100.0f)); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)(fVidScreenCurvature * RADTODEG * 150.0f)); // Set the edit controls to current value _stprintf(szText, _T("%0.2f"), fVidScreenAngle * RADTODEG); SendDlgItemMessage(hDlg, IDC_SCREENANGLE_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); _stprintf(szText, _T("%0.2f"), fVidScreenCurvature * RADTODEG); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); // Update the screen if (bVidOkay) { VidPaint(2); } return TRUE; } case WM_COMMAND: { switch (HIWORD(wParam)) { case BN_CLICKED: { if (LOWORD(wParam) == IDOK) { nExitStatus = 1; SendMessage(hDlg, WM_CLOSE, 0, 0); } if (LOWORD(wParam) == IDCANCEL) { nExitStatus = -1; SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } case EN_UPDATE: { if (nExitStatus == 0) { TCHAR szText[16] = _T(""); bool bPoint = 0; bool bValid = 1; if ((HWND)lParam == hScreenAngleEdit) { if (SendDlgItemMessage(hDlg, IDC_SCREENANGLE_EDIT, WM_GETTEXTLENGTH, (WPARAM)0, (LPARAM)0) < 16) { SendDlgItemMessage(hDlg, IDC_SCREENANGLE_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); } } else { if (SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_EDIT, WM_GETTEXTLENGTH, (WPARAM)0, (LPARAM)0) < 16) { SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); } } // Scan string in the edit control for illegal characters for (int i = 0; szText[i]; i++) { if (szText[i] == '.') { if (bPoint) { bValid = 0; break; } } else { if (!_istdigit(szText[i])) { bValid = 0; break; } } } if (bValid) { if ((HWND)lParam == hScreenAngleEdit) { fVidScreenAngle = _tcstod(szText, NULL) * DEGTORAD; if (fVidScreenAngle < 0.0f) { fVidScreenAngle = 0.0f; } else { if (fVidScreenAngle > PI / 1.5f) { fVidScreenAngle = PI / 1.5f; } } // Set slider to current value SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)(fVidScreenAngle * RADTODEG * 100.0f)); } else { fVidScreenCurvature = _tcstod(szText, NULL) * DEGTORAD; if (fVidScreenCurvature < 0.0f) { fVidScreenCurvature = 0.0f; } else { if (fVidScreenCurvature > PI / 2.25f) { fVidScreenCurvature = PI / 2.25f; } } // Set slider to current value SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)(fVidScreenCurvature * RADTODEG * 150.0f)); } // Update the screen if (bVidOkay) { VidPaint(2); } } } break; } } break; } case WM_HSCROLL: { switch (LOWORD(wParam)) { case TB_BOTTOM: case TB_ENDTRACK: case TB_LINEDOWN: case TB_LINEUP: case TB_PAGEDOWN: case TB_PAGEUP: case TB_THUMBPOSITION: case TB_THUMBTRACK: case TB_TOP: { if (nExitStatus == 0) { TCHAR szText[16]; // Update the contents of the edit control if ((HWND)lParam == hScreenAngleSlider) { fVidScreenAngle = (float)SendDlgItemMessage(hDlg, IDC_SCREENANGLE_SLIDER, TBM_GETPOS, (WPARAM)0, (LPARAM)0) * DEGTORAD / 100.0f; _stprintf(szText, _T("%0.2f"), fVidScreenAngle * RADTODEG); SendDlgItemMessage(hDlg, IDC_SCREENANGLE_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); } else { fVidScreenCurvature = (float)SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_SLIDER, TBM_GETPOS, (WPARAM)0, (LPARAM)0) * DEGTORAD / 150.0f; _stprintf(szText, _T("%0.2f"), fVidScreenCurvature * RADTODEG); SendDlgItemMessage(hDlg, IDC_SCREENCURVATURE_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); } // Update the screen if (bVidOkay) { VidPaint(0); } } break; } } break; } case WM_CLOSE: if (nExitStatus != 1) { fVidScreenAngle = fPrevScreenAngle; fVidScreenCurvature = fPrevScreenCurvature; } EndDialog(hDlg, 0); break; } return 0; }
// ----------------------------------------------------------------------------- // Feedback intensity dialog static INT_PTR CALLBACK PhosphorProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) // LPARAM lParam { static int nPrevIntensity; static int nPrevSaturation; switch (Msg) { case WM_INITDIALOG: { TCHAR szText[16]; nPrevIntensity = nVidFeedbackIntensity; nPrevSaturation = nVidFeedbackOverSaturation; nExitStatus = 0; WndInMid(hDlg, hScrnWnd); // Initialise sliders SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELONG(0, 255)); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)8); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)127); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)63); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)31); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)15); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_SLIDER, TBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELONG(0, 127)); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_SLIDER, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)4); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)63); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)31); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)15); // Set slider to current values SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nVidFeedbackIntensity); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nVidFeedbackOverSaturation); // Set the edit control to current values _stprintf(szText, _T("%i"), nVidFeedbackIntensity); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); _stprintf(szText, _T("%i"), nVidFeedbackOverSaturation); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); return TRUE; } case WM_COMMAND: { switch (HIWORD(wParam)) { case BN_CLICKED: { if (LOWORD(wParam) == IDOK) { nExitStatus = 1; SendMessage(hDlg, WM_CLOSE, 0, 0); } if (LOWORD(wParam) == IDCANCEL) { nExitStatus = -1; SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } case EN_UPDATE: { if (nExitStatus == 0) { TCHAR szText[16] = _T(""); bool bValid = 1; switch (LOWORD(wParam)) { case IDC_PHOSPHOR_1_EDIT: if (SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_EDIT, WM_GETTEXTLENGTH, (WPARAM)0, (LPARAM)0) < 16) { SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); } // Scan string in the edit control for illegal characters for (int i = 0; szText[i]; i++) { if (!_istdigit(szText[i])) { bValid = 0; break; } } if (bValid) { nVidFeedbackIntensity = _tcstol(szText, NULL, 0); if (nVidFeedbackIntensity < 0) { nVidFeedbackIntensity = 0; } else { if (nVidFeedbackIntensity > 255) { nVidFeedbackIntensity = 255; } } // Set slider to current value SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nVidFeedbackIntensity); } break; case IDC_PHOSPHOR_2_EDIT: if (SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_EDIT, WM_GETTEXTLENGTH, (WPARAM)0, (LPARAM)0) < 16) { SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); } // Scan string in the edit control for illegal characters for (int i = 0; szText[i]; i++) { if (!_istdigit(szText[i])) { bValid = 0; break; } } if (bValid) { nVidFeedbackOverSaturation = _tcstol(szText, NULL, 0); if (nVidFeedbackOverSaturation < 0) { nVidFeedbackOverSaturation = 0; } else { if (nVidFeedbackOverSaturation > 255) { nVidFeedbackOverSaturation = 255; } } // Set slider to current value SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nVidFeedbackOverSaturation); // Update the screen if (bVidOkay) { VidPaint(2); } } break; } } break; } } break; } case WM_HSCROLL: { switch (LOWORD(wParam)) { case TB_BOTTOM: case TB_ENDTRACK: case TB_LINEDOWN: case TB_LINEUP: case TB_PAGEDOWN: case TB_PAGEUP: case TB_THUMBPOSITION: case TB_THUMBTRACK: case TB_TOP: { if (nExitStatus == 0) { TCHAR szText[16]; // Update the contents of the edit control switch (GetDlgCtrlID((HWND)lParam)) { case IDC_PHOSPHOR_1_SLIDER: nVidFeedbackIntensity = SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_SLIDER, TBM_GETPOS, (WPARAM)0, (LPARAM)0); _stprintf(szText, _T("%i"), nVidFeedbackIntensity); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_1_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); break; case IDC_PHOSPHOR_2_SLIDER: nVidFeedbackOverSaturation = SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_SLIDER, TBM_GETPOS, (WPARAM)0, (LPARAM)0); _stprintf(szText, _T("%i"), nVidFeedbackOverSaturation); SendDlgItemMessage(hDlg, IDC_PHOSPHOR_2_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); break; } } break; } } break; } case WM_CLOSE: if (nExitStatus != 1) { nVidFeedbackIntensity = nPrevIntensity; nVidFeedbackOverSaturation = nPrevSaturation; } EndDialog(hDlg, 0); break; } return 0; }
static BOOL CALLBACK ScanlineProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM) // LPARAM lParam { static int nPrevIntensity; switch (Msg) { case WM_INITDIALOG: { TCHAR szText[16]; nPrevIntensity = nVidScanIntensity; nExitStatus = 0; WndInMid(hDlg, hScrnWnd); // Initialise slider SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELONG(0, 255)); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)16); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)191); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)127); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)63); // Set slider to current value SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nVidScanIntensity & 0xFF); // Set the edit control to current value _stprintf(szText, _T("%i"), nVidScanIntensity & 0xFF); SendDlgItemMessage(hDlg, IDC_SCANLINE_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); // Update the screen if (bDrvOkay) { VidPaint(2); } return TRUE; } case WM_COMMAND: { switch (HIWORD(wParam)) { case BN_CLICKED: { if (LOWORD(wParam) == IDOK) { nExitStatus = 1; SendMessage(hDlg, WM_CLOSE, 0, 0); } if (LOWORD(wParam) == IDCANCEL) { nExitStatus = -1; SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } case EN_UPDATE: { if (nExitStatus == 0) { TCHAR szText[16] = _T(""); bool bValid = 1; if (SendDlgItemMessage(hDlg, IDC_SCANLINE_EDIT, WM_GETTEXTLENGTH, (WPARAM)0, (LPARAM)0) < 16) { SendDlgItemMessage(hDlg, IDC_SCANLINE_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); } // Scan string in the edit control for illegal characters for (int i = 0; szText[i]; i++) { if (!_istdigit(szText[i])) { bValid = 0; break; } } if (bValid) { nVidScanIntensity = _tcstol(szText, NULL, 0); if (nVidScanIntensity < 0) { nVidScanIntensity = 0; } else { if (nVidScanIntensity > 255) { nVidScanIntensity = 255; } } // Set slider to current value SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)nVidScanIntensity); nVidScanIntensity |= (nVidScanIntensity << 8) | (nVidScanIntensity << 16); // Update the screen if (bVidOkay) { VidPaint(2); } } } break; } } break; } case WM_HSCROLL: { switch (LOWORD(wParam)) { case TB_BOTTOM: case TB_ENDTRACK: case TB_LINEDOWN: case TB_LINEUP: case TB_PAGEDOWN: case TB_PAGEUP: case TB_THUMBPOSITION: case TB_THUMBTRACK: case TB_TOP: { if (nExitStatus == 0) { TCHAR szText[16]; // Update the contents of the edit control nVidScanIntensity = SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_GETPOS, (WPARAM)0, (LPARAM)0); _stprintf(szText, _T("%i"), nVidScanIntensity); SendDlgItemMessage(hDlg, IDC_SCANLINE_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); nVidScanIntensity |= (nVidScanIntensity << 8) | (nVidScanIntensity << 16); // Update the screen if (bVidOkay) { // VidRedraw(); VidPaint(2); } } break; } } break; } case WM_CLOSE: if (nExitStatus != 1) { nVidScanIntensity = nPrevIntensity; } EndDialog(hDlg, 0); break; } return 0; }
static INT_PTR CALLBACK DefInpProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { switch (Msg) { case WM_INITDIALOG: { hIpsDlg = hDlg; hWhiteBGBrush = CreateSolidBrush(RGB(0xFF,0xFF,0xFF)); hPreview = PNGLoadBitmap(hIpsDlg, NULL, 304, 228, 2); SendDlgItemMessage(hIpsDlg, IDC_SCREENSHOT_H, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hPreview); LONG_PTR Style; Style = GetWindowLongPtr (GetDlgItem(hIpsDlg, IDC_TREE1), GWL_STYLE); Style |= TVS_CHECKBOXES; SetWindowLongPtr (GetDlgItem(hIpsDlg, IDC_TREE1), GWL_STYLE, Style); IpsManagerInit(); WndInMid(hDlg, hScrnWnd); SetFocus(hDlg); // Enable Esc=close break; } case WM_COMMAND: { int wID = LOWORD(wParam); int Notify = HIWORD(wParam); if (Notify == BN_CLICKED) { switch (wID) { case IDOK: { IpsOkay(); break; } case IDCANCEL: { SendMessage(hDlg, WM_CLOSE, 0, 0); return 0; } case IDC_IPSMAN_DESELECTALL: { for (int i = 0; i < nNumPatches; i++) { for (int j = 0; j < nNumPatches; j++) { _TreeView_SetCheckState(hIpsList, hPatchHandlesIndex[j], FALSE); } } break; } } } if (wID == IDC_CHOOSE_LIST && Notify == CBN_SELCHANGE) { nIpsSelectedLanguage = SendMessage(GetDlgItem(hIpsDlg, IDC_CHOOSE_LIST), CB_GETCURSEL, 0, 0); TreeView_DeleteAllItems(hIpsList); FillListBox(); RefreshPatch(); return 0; } break; } case WM_NOTIFY: { NMHDR* pNmHdr = (NMHDR*)lParam; if (LOWORD(wParam) == IDC_TREE1 && pNmHdr->code == TVN_SELCHANGED) { RefreshPatch(); return 1; } if (LOWORD(wParam) == IDC_TREE1 && pNmHdr->code == NM_DBLCLK) { // disable double-click node-expand SetWindowLongPtr(hIpsDlg, DWLP_MSGRESULT, 1); return 1; } if (LOWORD(wParam) == IDC_TREE1 && pNmHdr->code == NM_CLICK) { POINT cursorPos; GetCursorPos(&cursorPos); ScreenToClient(hIpsList, &cursorPos); TVHITTESTINFO thi; thi.pt = cursorPos; TreeView_HitTest(hIpsList, &thi); if (thi.flags == TVHT_ONITEMSTATEICON) { TreeView_SelectItem(hIpsList, thi.hItem); } return 1; } SetWindowLongPtr(hIpsDlg, DWLP_MSGRESULT, CDRF_DODEFAULT); return 1; } case WM_CTLCOLORSTATIC: { if ((HWND)lParam == GetDlgItem(hIpsDlg, IDC_TEXTCOMMENT)) { return (INT_PTR)hWhiteBGBrush; } break; } case WM_CLOSE: { IpsManagerExit(); break; } } return 0; }
static INT_PTR CALLBACK DialogProc(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam) { (void)lParam; (void)wParam; (void)hDlg; if (Msg==WM_INITDIALOG) { hSFactdlg=hDlg; SFactdInit(); SFactdUpdate(); WndInMid(hDlg, hScrnWnd); SetFocus(hDlg); // Enable Esc=close return 0; } if (Msg==WM_CLOSE) { //DestroyWindow(hSFactdlg); EndDialog(hDlg, 0); return 0; } if (Msg==WM_DESTROY) { SFactdExit(); return 0; } if (Msg==WM_COMMAND) { int Id=LOWORD(wParam); int Notify=HIWORD(wParam); if (Id==IDOK && Notify==BN_CLICKED) { SendMessage(hDlg,WM_CLOSE,0,0); return 0; } // cancel=close if (Id==IDCAPTURE && Notify==BN_CLICKED) { if (bDrvOkay) { MakeScreenShot(); SFactdUpdate(); } } if (Id==IDC_CHECK1 && Notify==BN_CLICKED) { ToggleLayer(1); SFactdUpdate(); } if (Id==IDC_CHECK2 && Notify==BN_CLICKED) { ToggleLayer(2); SFactdUpdate(); } if (Id==IDC_CHECK3 && Notify==BN_CLICKED) { ToggleLayer(4); SFactdUpdate(); } if (Id==IDC_CHECK4 && Notify==BN_CLICKED) { ToggleLayer(8); SFactdUpdate(); } if (Id==IDC_SPRITE1 && Notify==BN_CLICKED) { ToggleSprite(0x01); SFactdUpdate(); } if (Id==IDC_SPRITE2 && Notify==BN_CLICKED) { ToggleSprite(0x02); SFactdUpdate(); } if (Id==IDC_SPRITE3 && Notify==BN_CLICKED) { ToggleSprite(0x04); SFactdUpdate(); } if (Id==IDC_SPRITE4 && Notify==BN_CLICKED) { ToggleSprite(0x08); SFactdUpdate(); } if (Id==IDC_SPRITE5 && Notify==BN_CLICKED) { ToggleSprite(0x10); SFactdUpdate(); } if (Id==IDC_SPRITE6 && Notify==BN_CLICKED) { ToggleSprite(0x20); SFactdUpdate(); } if (Id==IDC_SPRITE7 && Notify==BN_CLICKED) { ToggleSprite(0x40); SFactdUpdate(); } if (Id==IDC_SPRITE8 && Notify==BN_CLICKED) { ToggleSprite(0x80); SFactdUpdate(); } if (Id==IDC_ADVANCE && Notify==BN_CLICKED) { VidFrame(); VidPaint(0); } if (bRunPause) { memset(nAudNextSound, 0, nAudSegLen << 2); // Write silence into the buffer } } return 0; }
static INT_PTR CALLBACK ResProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM) // LPARAM lParam { static bool bOK; switch (Msg) { case WM_INITDIALOG: { DEVMODE devMode; devMode.dmSize = sizeof(DEVMODE); devMode.dmDriverExtra = 0; // Run through all possible screenmodes and fill the combobox for (int i = 0; EnumDisplaySettings(NULL, i, &devMode); i++) { // We're only interested in 16, 24, or 32 bit modes. if (devMode.dmBitsPerPel & 0x30) { long nItem = 0, nItemValue; long nNewRes = (devMode.dmPelsWidth << 16) | devMode.dmPelsHeight; // See if the resolution is already in the combobox do { nItemValue = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETITEMDATA, nItem, 0); nItem++; } while ((nItemValue != CB_ERR) && (nItemValue != nNewRes)); // If not, add it if (nItemValue == CB_ERR) { TCHAR szTemp[32]; _stprintf(szTemp, _T(" %li x %li"), devMode.dmPelsWidth, devMode.dmPelsHeight); nItem = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_ADDSTRING, 0, (LPARAM)&szTemp); SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_SETITEMDATA, nItem, nNewRes); } } } SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_SETCURSEL, 0, 0); bOK = 0; WndInMid(hDlg, hScrnWnd); return TRUE; } case WM_COMMAND: if (LOWORD(wParam) == IDOK) { bOK = 1; SendMessage(hDlg, WM_CLOSE, 0, 0); } if (LOWORD(wParam) == IDCANCEL) { SendMessage(hDlg, WM_CLOSE, 0, 0); } break; case WM_CLOSE: { if (bOK) { long nItem = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETCURSEL, 0, 0); long nItemValue = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETITEMDATA, nItem, 0); if(nOrientation == HORIZONTAL_ORIENTED_RES) { nVidHorWidth = nItemValue >> 16; nVidHorHeight = nItemValue & 0xFFFF; } if(nOrientation == VERTICAL_ORIENTED_RES) { nVidVerWidth = nItemValue >> 16; nVidVerHeight = nItemValue & 0xFFFF; } if(bDrvOkay) { if (BurnDrvGetFlags() & BDF_ORIENTATION_VERTICAL) { nVidWidth = nVidVerWidth; nVidHeight = nVidVerHeight; } else { nVidWidth = nVidHorWidth; nVidHeight = nVidHorHeight; } } } EndDialog(hDlg, 0); }
static INT_PTR CALLBACK CubicProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM) // LPARAM lParam { static double dPrevB, dPrevC; switch (Msg) { case WM_INITDIALOG: { TCHAR szText[16]; dPrevB = dVidCubicB; dPrevC = dVidCubicC; nExitStatus = 0; WndInMid(hDlg, hScrnWnd); // Initialise slider SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELONG(0, 10000)); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETLINESIZE, (WPARAM)0, (LPARAM)100); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)500); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)3333); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)5000); SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETTIC, (WPARAM)0, (LPARAM)7500); // Set slider to current value SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)((1.0 - dVidCubicB) * 10000)); // Set the edit control to current value _stprintf(szText, _T("%.3lf"), 1.0 - dVidCubicB); SendDlgItemMessage(hDlg, IDC_SCANLINE_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); SetWindowText(hDlg, _T("Select desired filter sharpness")); // Update the screen if (bDrvOkay) { VidPaint(2); } return TRUE; } case WM_COMMAND: { switch (HIWORD(wParam)) { case BN_CLICKED: { if (LOWORD(wParam) == IDOK) { nExitStatus = 1; SendMessage(hDlg, WM_CLOSE, 0, 0); } if (LOWORD(wParam) == IDCANCEL) { nExitStatus = -1; SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } case EN_UPDATE: { if (nExitStatus == 0) { TCHAR szText[16] = _T(""); bool bPoint = 0; bool bValid = 1; if (SendDlgItemMessage(hDlg, IDC_SCANLINE_EDIT, WM_GETTEXTLENGTH, (WPARAM)0, (LPARAM)0) < 16) { SendDlgItemMessage(hDlg, IDC_SCANLINE_EDIT, WM_GETTEXT, (WPARAM)16, (LPARAM)szText); } // Scan string in the edit control for illegal characters for (int i = 0; szText[i]; i++) { if (szText[i] == _T('.')) { if (bPoint) { bValid = 0; break; } } else { if (!_istdigit(szText[i])) { bValid = 0; break; } } } if (bValid) { dVidCubicB = 1.0 - _tcstod(szText, NULL); if (dVidCubicB < 0.0) { dVidCubicB = 0.0; } else { if (dVidCubicB > 1.0) { dVidCubicB = 1.0; } } // Set slider to current value SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_SETPOS, (WPARAM)true, (LPARAM)((1.0 - dVidCubicB) * 10000)); // Update the screen if (bVidOkay) { VidPaint(2); } } } break; } } break; } case WM_HSCROLL: { switch (LOWORD(wParam)) { case TB_BOTTOM: case TB_ENDTRACK: case TB_LINEDOWN: case TB_LINEUP: case TB_PAGEDOWN: case TB_PAGEUP: case TB_THUMBPOSITION: case TB_THUMBTRACK: case TB_TOP: { if (nExitStatus == 0) { TCHAR szText[16]; // Update the contents of the edit control dVidCubicB = 1.0 - (double)SendDlgItemMessage(hDlg, IDC_SCANLINE_SLIDER, TBM_GETPOS, (WPARAM)0, (LPARAM)0) / 10000; _stprintf(szText, _T("%.3lf"), 1.0 - dVidCubicB); SendDlgItemMessage(hDlg, IDC_SCANLINE_EDIT, WM_SETTEXT, (WPARAM)0, (LPARAM)szText); // Update the screen if (bVidOkay) { // VidRedraw(); VidPaint(2); } } break; } } break; } case WM_CLOSE: if (nExitStatus != 1) { dVidCubicB = dPrevB; dVidCubicC = dPrevC; } EndDialog(hDlg, 0); break; } return 0; }