#include "ImgPF.h" static L_BOOL MathFuncDlg_OnInit (HWND hWnd, HWND hWndCtl, LPARAM Data); static L_VOID MathFuncDlg_OnCommand (HWND hWnd, L_INT nCtrlID, HWND hWndCtl, L_UINT uNotifyCode); static L_VOID MathFuncDlg_OnHScroll (HWND hWnd, HWND ScrollBarhWnd , L_UINT uRequest, L_INT nPosition); static L_VOID MathFuncDlg_OnTimer (HWND hWnd, L_INT nID); static L_VOID L_ApplyFilter (HWND hWnd); L_BOOL CALLBACK MathFuncDlgProc(HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG(hWnd, WM_INITDIALOG, MathFuncDlg_OnInit); HANDLE_MSG(hWnd, WM_COMMAND, MathFuncDlg_OnCommand); HANDLE_MSG(hWnd, WM_HSCROLL, MathFuncDlg_OnHScroll); HANDLE_MSG(hWnd, WM_TIMER, MathFuncDlg_OnTimer); case WM_USER_UPDATEVIEW: StatusProc.ProgressValue = 100; L_ApplyFilter (hWnd); break; } return FALSE; } static L_BOOL MathFuncDlg_OnInit(HWND hWnd, HWND hWndCtl, LPARAM Data) { LPMATHFUNCDLGDATA pMathFuncDlgData ; pCHILDDATA pData; HWND hWndParent; hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient, SendMessage); pData = LOCKCHILDDATA(hWndParent); pMathFuncDlgData = (LPMATHFUNCDLGDATA)Data; SetWindowLong(hWnd, GWL_USERDATA, (LONG)pMathFuncDlgData); //MEMDISK...// MemorizeAndCopyBitmap (hWndParent, &pMathFuncDlgData->LeadBitmap); MoveDialogToMiddle(hWnd); pMathFuncDlgData->uFlags = 0; pMathFuncDlgData->nFactor = 100; pMathFuncDlgData->nRdoBaseID = IDC_MATH_SQR_CHK; StatusProc.bProgress = TRUE; StatusProc.bInvalidate = FALSE; StatusProc.bKillProgress = FALSE; StatusProc.bEnd = FALSE; StatusProc.DlgWnd = hWnd; StatusProc.ProgressValue = 100; StatusProc.ProgWnd = GetDlgItem(hWnd, IDC_MATH_PROG); Progress_SetRange(GetDlgItem(hWnd, IDC_MATH_PROG), 0, 100); Progress_SetPos(GetDlgItem(hWnd, IDC_MATH_PROG), 0); Trackbar_SetRange(GetDlgItem(hWnd, IDC_MATH_FCTR_SLD), TRUE, 1, 100); Trackbar_SetPos(GetDlgItem(hWnd, IDC_MATH_FCTR_SLD), TRUE, 1); Button_SetCheck(GetDlgItem(hWnd, IDC_MATH_SQR_CHK), BST_CHECKED); SetNumericEditBox(GetDlgItem(hWnd, IDC_MATH_FCTR_EDT), 1, 100, 1, 0, FALSE); SetDlgItemInt (hWnd, IDC_MATH_FCTR_EDT, 100, FALSE); pData->uTimerID = SetTimer(hWnd, 1, 100, NULL); ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); L_ApplyFilter(hWnd); return (TRUE); } static L_VOID MathFuncDlg_OnTimer (HWND hWnd, L_INT nID) { Dialog_Timer(nID); } static L_VOID MathFuncDlg_OnCommand(HWND hWnd, L_INT nCtrlID, HWND hWndCtl, L_UINT uNotifyCode) { LPMATHFUNCDLGDATA pMathFuncDlgData; HWND hWndParent; pCHILDDATA pData; L_INT nSliderVal; hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient, SendMessage); pData = LOCKCHILDDATA(hWndParent); pMathFuncDlgData = (LPMATHFUNCDLGDATA) GetWindowLong(hWnd, GWL_USERDATA); switch(nCtrlID) { case IDC_MATH_SQR_CHK: case IDC_MATH_LOG_CHK: case IDC_MATH_SQRROT_CHK: case IDC_MATH_SIN_CHK: case IDC_MATH_COS_CHK: if((nCtrlID - pMathFuncDlgData->nRdoBaseID) == (L_INT)pMathFuncDlgData->uFlags) return; pMathFuncDlgData->uFlags = nCtrlID - pMathFuncDlgData->nRdoBaseID ; L_ApplyFilter (hWnd); break; case IDCANCEL: StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE ; StatusProc.ProgressValue = 100 ; EndDialog(hWnd, FALSE); break; case IDOK: ShowStatusWindow(FALSE); StatusProc.bStillWork = TRUE; StatusProc.bInvalidate = TRUE; StatusProc.bEnd = TRUE; EndDialog(hWnd, TRUE); break; } if(nCtrlID == IDC_MATH_FCTR_EDT) { if (uNotifyCode == EN_CHANGE) { nSliderVal = GetDlgItemInt(hWnd, nCtrlID, NULL, FALSE); Trackbar_SetPos(GetDlgItem(hWnd, IDC_MATH_FCTR_SLD), TRUE, nSliderVal); if(pMathFuncDlgData->nFactor == nSliderVal) return; pMathFuncDlgData->nFactor = nSliderVal; L_ApplyFilter (hWnd); } } } static L_VOID MathFuncDlg_OnHScroll(HWND hWnd, HWND hWndCtl, L_UINT uRequest, L_INT nPosition) { SetDlgItemInt(hWnd, GetDlgCtrlID(hWndCtl) - 1, Trackbar_GetPos(hWndCtl), TRUE); } static L_VOID L_ApplyFilter (HWND hWnd) { pCHILDDATA pData; L_INT nRet = 0; HWND hWndParent; LPMATHFUNCDLGDATA pMathFuncDlgData; if (100 != StatusProc.ProgressValue) { StatusProc.bKillProgress = TRUE ; return ; } pMathFuncDlgData = (LPMATHFUNCDLGDATA) GetWindowLong(hWnd, GWL_USERDATA); hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient, SendMessage); pData = LOCKCHILDDATA(hWndParent); FreeMemorizedBitmap (hWndParent); //MEMDISK// L_CopyBitmap(&pData->LeadBitmap, &pMathFuncDlgData->LeadBitmap, sizeof(BITMAPHANDLE)); nRet = L_MathFunctionBitmap(&pData->LeadBitmap, pMathFuncDlgData->uFlags, pMathFuncDlgData->nFactor); if(nRet == SUCCESS) { InvalidateRect(hWndParent, NULL, FALSE); StatusProc.ProgressValue = 100; Progress_SetPos(StatusProc.ProgWnd , 0); if(StatusProc.bEnd) { StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE ; } } }