--- np2/win9x/dialog/d_config.cpp 2003/10/21 11:22:05 1.2 +++ np2/win9x/dialog/d_config.cpp 2005/03/20 13:12:50 1.12 @@ -2,6 +2,7 @@ #include "strres.h" #include "resource.h" #include "np2.h" +#include "oemtext.h" #include "dosio.h" #include "sysmng.h" #include "dialog.h" @@ -9,152 +10,212 @@ #include "pccore.h" -static const char str_2halfmhz[] = "2.4576MHz"; -static const char str_2mhz[] = "1.9968MHz"; -static const char *basecstr[2] = {str_2halfmhz, str_2mhz}; +static const TCHAR str_2halfmhz[] = _T("2.4576MHz"); +static const TCHAR str_2mhz[] = _T("1.9968MHz"); +static const TCHAR *basecstr[2] = {str_2mhz, str_2halfmhz}; static const UINT32 mulval[10] = {1, 2, 4, 5, 6, 8, 10, 12, 16, 20}; -static const char str_clockfmt[] = "%2u.%.4u"; +static const TCHAR str_clockfmt[] = _T("%2u.%.4u"); -static void SetClock(HWND hWnd) { +static void setclock(HWND hWnd, UINT multiple) { - DWORD dval; - char work[32]; - int val; + UINT32 clock; + TCHAR work[32]; - GetDlgItemText(hWnd, IDC_BASECLOCK, work, sizeof(work)); + GetDlgItemText(hWnd, IDC_BASECLOCK, work, NELEMENTS(work)); if (work[0] == '1') { - dval = PCBASECLOCK20 / 100; + clock = PCBASECLOCK20 / 100; } else { - dval = PCBASECLOCK25 / 100; + clock = PCBASECLOCK25 / 100; } + if (multiple == 0) { + GetDlgItemText(hWnd, IDC_MULTIPLE, work, NELEMENTS(work)); + multiple = (UINT)miltchar_solveINT(work); + } + if (multiple < 1) { + multiple = 1; + } + else if (multiple > 32) { + multiple = 32; + } + clock *= multiple; + wsprintf(work, str_clockfmt, clock / 10000, clock % 10000); + SetDlgItemText(hWnd, IDC_CLOCKMSG, work); +} + +static void cfgcreate(HWND hWnd) { + + TCHAR work[32]; + UINT val; + + SETLISTSTR(hWnd, IDC_BASECLOCK, basecstr); + if (np2cfg.baseclock < AVE(PCBASECLOCK25, PCBASECLOCK20)) { + val = 0; + } + else { + val = 1; + } + SendDlgItemMessage(hWnd, IDC_BASECLOCK, CB_SETCURSEL, val, 0); + SETLISTUINT32(hWnd, IDC_MULTIPLE, mulval); + wsprintf(work, tchar_u, np2cfg.multiple); + SetDlgItemText(hWnd, IDC_MULTIPLE, work); + + if (!milstr_cmp(np2cfg.model, str_VM)) { + val = IDC_MODELVM; + } + else if (!milstr_cmp(np2cfg.model, str_EPSON)) { + val = IDC_MODELEPSON; + } + else { + val = IDC_MODELVX; + } + SetDlgItemCheck(hWnd, val, TRUE); + + if (np2cfg.samplingrate < AVE(11025, 22050)) { + val = IDC_RATE11; + } + else if (np2cfg.samplingrate < AVE(22050, 44100)) { + val = IDC_RATE22; + } + else { + val = IDC_RATE44; + } + SetDlgItemCheck(hWnd, val, TRUE); + wsprintf(work, tchar_u, np2cfg.delayms); + SetDlgItemText(hWnd, IDC_SOUNDBUF, work); + + SetDlgItemCheck(hWnd, IDC_ALLOWRESIZE, np2oscfg.thickframe); + if (mmxflag & MMXFLAG_NOTSUPPORT) { + EnableWindow(GetDlgItem(hWnd, IDC_DISABLEMMX), FALSE); + SetDlgItemCheck(hWnd, IDC_DISABLEMMX, TRUE); + } + else { + SetDlgItemCheck(hWnd, IDC_DISABLEMMX, np2oscfg.disablemmx); + } + SetDlgItemCheck(hWnd, IDC_COMFIRM, np2oscfg.comfirm); + SetDlgItemCheck(hWnd, IDC_RESUME, np2oscfg.resume); + setclock(hWnd, 0); + SetFocus(GetDlgItem(hWnd, IDC_BASECLOCK)); +} + +static void cfgupdate(HWND hWnd) { + + UINT update; + TCHAR work[32]; + UINT val; +const OEMCHAR *str; + + update = 0; + GetDlgItemText(hWnd, IDC_BASECLOCK, work, NELEMENTS(work)); + if (work[0] == '1') { + val = PCBASECLOCK20; + } + else { + val = PCBASECLOCK25; + } + if (np2cfg.baseclock != val) { + np2cfg.baseclock = val; + update |= SYS_UPDATECFG | SYS_UPDATECLOCK; + } + GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work)); - val = milstr_solveINT(work); + val = (UINT)miltchar_solveINT(work); if (val < 1) { val = 1; } else if (val > 32) { val = 32; } - dval *= val; - wsprintf(work, str_clockfmt, dval / 10000, dval % 10000); - SetDlgItemText(hWnd, IDC_CLOCKMSG, work); -} - + if (np2cfg.multiple != val) { + np2cfg.multiple = val; + update |= SYS_UPDATECFG | SYS_UPDATECLOCK; + } -LRESULT CALLBACK CfgDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { + if (GetDlgItemCheck(hWnd, IDC_MODELVM)) { + str = str_VM; + } + else if (GetDlgItemCheck(hWnd, IDC_MODELEPSON)) { + str = str_EPSON; + } + else { + str = str_VX; + } + if (milstr_cmp(np2cfg.model, str)) { + milstr_ncpy(np2cfg.model, str, NELEMENTS(np2cfg.model)); + update |= SYS_UPDATECFG; + } - char work[128]; - BYTE bval; - WORD wval; - DWORD dval; - int val; - UINT update; + if (GetDlgItemCheck(hWnd, IDC_RATE11)) { + val = 11025; + } + else if (GetDlgItemCheck(hWnd, IDC_RATE22)) { + val = 22050; + } + else { + val = 44100; + } + if (np2cfg.samplingrate != (UINT16)val) { + np2cfg.samplingrate = (UINT16)val; + update |= SYS_UPDATECFG | SYS_UPDATERATE; + soundrenewal = 1; + } - switch (msg) { - case WM_INITDIALOG: - SETLISTSTR(hWnd, IDC_BASECLOCK, basecstr); - if (np2cfg.baseclock >= AVE(PCBASECLOCK25, PCBASECLOCK20)) { - val = 0; - } - else { - val = 1; - } - SendDlgItemMessage(hWnd, IDC_BASECLOCK, CB_SETCURSEL, val, 0); - SETLISTUINT32(hWnd, IDC_MULTIPLE, mulval); - wsprintf(work, str_u, np2cfg.multiple); - SetDlgItemText(hWnd, IDC_MULTIPLE, work); + GetDlgItemText(hWnd, IDC_SOUNDBUF, work, NELEMENTS(work)); + val = (UINT)miltchar_solveINT(work); + if (val < 40) { + val = 40; + } + else if (val > 1000) { + val = 1000; + } + if (np2cfg.delayms != (UINT16)val) { + np2cfg.delayms = (UINT16)val; + update |= SYS_UPDATECFG | SYS_UPDATESBUF; + soundrenewal = 1; + } - if (np2cfg.samplingrate < AVE(11025, 22050)) { - wval = IDC_RATE11; - } - else if (np2cfg.samplingrate < AVE(22050, 44100)) { - wval = IDC_RATE22; - } - else { - wval = IDC_RATE44; - } - SetDlgItemCheck(hWnd, wval, TRUE); - wsprintf(work, str_u, np2cfg.delayms); - SetDlgItemText(hWnd, IDC_SOUNDBUF, work); - - SetDlgItemCheck(hWnd, IDC_COMFIRM, np2oscfg.comfirm); - SetDlgItemCheck(hWnd, IDC_RESUME, np2oscfg.resume); - SetClock(hWnd); - SetFocus(GetDlgItem(hWnd, IDC_BASECLOCK)); - return(FALSE); + val = GetDlgItemCheck(hWnd, IDC_ALLOWRESIZE); + if (np2oscfg.thickframe != (UINT8)val) { + np2oscfg.thickframe = (UINT8)val; + update |= SYS_UPDATEOSCFG; + } - case WM_COMMAND: - switch (LOWORD(wp)) { - case IDOK: - update = 0; - GetDlgItemText(hWnd, IDC_BASECLOCK, work, sizeof(work)); - if (work[0] == '1') { - dval = PCBASECLOCK20; - } - else { - dval = PCBASECLOCK25; - } - if (dval != np2cfg.baseclock) { - np2cfg.baseclock = dval; - update |= SYS_UPDATECFG | SYS_UPDATECLOCK; - } + if (!(mmxflag & MMXFLAG_NOTSUPPORT)) { + val = GetDlgItemCheck(hWnd, IDC_DISABLEMMX); + if (np2oscfg.disablemmx != (UINT8)val) { + np2oscfg.disablemmx = (UINT8)val; + mmxflag &= ~MMXFLAG_DISABLE; + mmxflag |= (val)?MMXFLAG_DISABLE:0; + update |= SYS_UPDATEOSCFG; + } + } - GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work)); - val = milstr_solveINT(work); - if (val < 1) { - val = 1; - } - else if (val > 32) { - val = 32; - } - if (np2cfg.multiple != (DWORD)val) { - np2cfg.multiple = val; - update |= SYS_UPDATECFG | SYS_UPDATECLOCK; - } + val = GetDlgItemCheck(hWnd, IDC_COMFIRM); + if (np2oscfg.comfirm != (UINT8)val) { + np2oscfg.comfirm = (UINT8)val; + update |= SYS_UPDATEOSCFG; + } - if (GetDlgItemCheck(hWnd, IDC_RATE11)) { - wval = 11025; - } - else if (GetDlgItemCheck(hWnd, IDC_RATE22)) { - wval = 22050; - } - else { - wval = 44100; - } - if (np2cfg.samplingrate != wval) { - np2cfg.samplingrate = wval; - update |= SYS_UPDATECFG | SYS_UPDATERATE; - soundrenewal = 1; - } + val = GetDlgItemCheck(hWnd, IDC_RESUME); + if (np2oscfg.resume != (UINT8)val) { + np2oscfg.resume = (UINT8)val; + update |= SYS_UPDATEOSCFG; + } + sysmng_update(update); +} - GetDlgItemText(hWnd, IDC_SOUNDBUF, work, sizeof(work)); - val = milstr_solveINT(work); - if (val < 100) { - val = 100; - } - else if (val > 1000) { - val = 1000; - } - if (np2cfg.delayms != (WORD)val) { - soundrenewal = 1; - np2cfg.delayms = (WORD)val; - update |= SYS_UPDATECFG | SYS_UPDATESBUF; - } +LRESULT CALLBACK CfgDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { - bval = GetDlgItemCheck(hWnd, IDC_COMFIRM); - if (np2oscfg.comfirm != bval) { - np2oscfg.comfirm = bval; - update |= SYS_UPDATEOSCFG; - } + switch (msg) { + case WM_INITDIALOG: + cfgcreate(hWnd); + return(FALSE); - bval = GetDlgItemCheck(hWnd, IDC_RESUME); - if (np2oscfg.resume != bval) { - np2oscfg.resume = bval; - update |= SYS_UPDATEOSCFG; - } - sysmng_update(update); + case WM_COMMAND: + switch(LOWORD(wp)) { + case IDOK: + cfgupdate(hWnd); EndDialog(hWnd, IDOK); break; @@ -163,8 +224,21 @@ LRESULT CALLBACK CfgDialogProc(HWND hWnd break; case IDC_BASECLOCK: + setclock(hWnd, 0); + return(FALSE); + case IDC_MULTIPLE: - SetClock(hWnd); + if (HIWORD(wp) == CBN_SELCHANGE) { + UINT val; + val = (UINT)SendDlgItemMessage(hWnd, IDC_MULTIPLE, + CB_GETCURSEL, 0, 0); + if (val < NELEMENTS(mulval)) { + setclock(hWnd, mulval[val]); + } + } + else { + setclock(hWnd, 0); + } return(FALSE); default: