--- np2/win9x/dialog/d_screen.cpp 2005/03/20 23:48:03 1.11 +++ np2/win9x/dialog/d_screen.cpp 2007/11/11 07:11:28 1.15 @@ -264,19 +264,84 @@ static LRESULT CALLBACK Scropt3DlgProc(H return(FALSE); } +static const CBPARAM cpZoom[] = +{ + {MAKEINTRESOURCE(IDS_ZOOM_NONE), 0}, + {MAKEINTRESOURCE(IDS_ZOOM_FIXEDASPECT), 1}, + {MAKEINTRESOURCE(IDS_ZOOM_ADJUSTASPECT), 2}, + {MAKEINTRESOURCE(IDS_ZOOM_FULL), 3}, +}; + +static LRESULT CALLBACK ScroptFullScreenDlgProc(HWND hWnd, UINT uMsg, + WPARAM wParam, LPARAM lParam) +{ + UINT8 c; + UINT uUpdate; + + switch(uMsg) + { + case WM_INITDIALOG: + c = np2oscfg.fscrnmod; + SetDlgItemCheck(hWnd, IDC_FULLSCREEN_SAMEBPP, + (c & FSCRNMOD_SAMEBPP)); + SetDlgItemCheck(hWnd, IDC_FULLSCREEN_SAMERES, + (c & FSCRNMOD_SAMERES)); + dlgs_setcbitem(hWnd, IDC_FULLSCREEN_ZOOM, + cpZoom, NELEMENTS(cpZoom)); + dlgs_setcbcur(hWnd, IDC_FULLSCREEN_ZOOM, (c & 3)); + EnableWindow(GetDlgItem(hWnd, IDC_FULLSCREEN_ZOOM), + (c & FSCRNMOD_SAMERES) != 0); + return(TRUE); + + case WM_COMMAND: + switch(LOWORD(wParam)) + { + case IDC_FULLSCREEN_SAMERES: + dlgs_enablebyautocheck(hWnd, IDC_FULLSCREEN_ZOOM, + IDC_FULLSCREEN_SAMERES); + break; + } + break; + + case WM_NOTIFY: + if ((((NMHDR *)lParam)->code) == (UINT)PSN_APPLY) + { + c = 0; + if (GetDlgItemCheck(hWnd, IDC_FULLSCREEN_SAMEBPP)) + { + c |= FSCRNMOD_SAMEBPP; + } + if (GetDlgItemCheck(hWnd, IDC_FULLSCREEN_SAMERES)) + { + c |= FSCRNMOD_SAMERES; + } + c |= dlgs_getcbcur(hWnd, IDC_FULLSCREEN_ZOOM, 0); + if (np2oscfg.fscrnmod != c) + { + np2oscfg.fscrnmod = c; + uUpdate |= SYS_UPDATEOSCFG; + } + sysmng_update(uUpdate); + return(TRUE); + } + break; + } + return(FALSE); +} + void dialog_scropt(HWND hWnd) { - HINSTANCE hinst; + HINSTANCE hInstance; PROPSHEETPAGE psp; PROPSHEETHEADER psh; - HPROPSHEETPAGE hpsp[3]; + HPROPSHEETPAGE hpsp[4]; - hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); + hInstance = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE); ZeroMemory(&psp, sizeof(psp)); psp.dwSize = sizeof(PROPSHEETPAGE); psp.dwFlags = PSP_DEFAULT; - psp.hInstance = hinst; + psp.hInstance = hInstance; psp.pszTemplate = MAKEINTRESOURCE(IDD_SCROPT1); psp.pfnDlgProc = (DLGPROC)Scropt1DlgProc; @@ -290,17 +355,21 @@ void dialog_scropt(HWND hWnd) { psp.pfnDlgProc = (DLGPROC)Scropt3DlgProc; hpsp[2] = CreatePropertySheetPage(&psp); + psp.pszTemplate = MAKEINTRESOURCE(IDD_SCROPT_FULLSCREEN); + psp.pfnDlgProc = (DLGPROC)ScroptFullScreenDlgProc; + hpsp[3] = CreatePropertySheetPage(&psp); + ZeroMemory(&psh, sizeof(psh)); psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwFlags = PSH_NOAPPLYNOW | PSH_USEHICON | PSH_USECALLBACK; psh.hwndParent = hWnd; - psh.hInstance = hinst; - psh.hIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_ICON2)); - psh.nPages = 3; + psh.hInstance = hInstance; + psh.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON2)); + psh.nPages = 4; psh.phpage = hpsp; psh.pszCaption = str_scropt; psh.pfnCallback = np2class_propetysheet; PropertySheet(&psh); - InvalidateRect(hWndMain, NULL, TRUE); + InvalidateRect(hWnd, NULL, TRUE); }