/*[]=====================================================================[]*/ /*[] LeadTools Run Time Library - Version 14 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2004 LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ /*------------------------------------------------------------------------- We have made the assumption that the user has the knowledge of programming in C and Windows. --------------------------------------------------------------------------*/ #include "ImgConVw.h" static L_BOOL WindowLevelDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify); static L_BOOL WindowLevelDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_VOID WindowLevelDlg_OnPaint (HWND hWnd); DISPWLEVELACTIONPROPS WindowLevelProp; L_BOOL CALLBACK WindowLevelProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, WindowLevelDlg_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, WindowLevelDlg_OnInitDialog); HANDLE_MSG (hWnd, WM_PAINT, WindowLevelDlg_OnPaint); } return FALSE; } static L_VOID WindowLevelDlg_OnPaint (HWND hWnd) { HDC hDC; PAINTSTRUCT ps; RECT rcRect; HBRUSH hBrush; hDC = BeginPaint(GetDlgItem(hWnd, IDC_WLACTION_CLRIN_TXT), &ps); GetClientRect(GetDlgItem(hWnd, IDC_WLACTION_CLRIN_TXT), &rcRect); hBrush = CreateSolidBrush(WindowLevelProp.rgbColorStart); FillRect(hDC, &rcRect, hBrush); DeleteBrush(hBrush); EndPaint(GetDlgItem(hWnd, IDC_WLACTION_CLRIN_TXT), &ps); hDC = BeginPaint(GetDlgItem(hWnd, IDC_WLACTION_CLROUT_TXT), &ps); GetClientRect(GetDlgItem(hWnd, IDC_WLACTION_CLROUT_TXT), &rcRect); hBrush = CreateSolidBrush(WindowLevelProp.rgbColorEnd); FillRect(hDC, &rcRect, hBrush); DeleteBrush(hBrush); EndPaint(GetDlgItem(hWnd, IDC_WLACTION_CLROUT_TXT), &ps); } static L_BOOL WindowLevelDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam) { HDISPCONTAINER hCon = (HDISPCONTAINER)lParam; L_BOOL bEnable = FALSE; L_INT nIndex; L_INT nCount; HBITMAPLIST hBitmapList; MoveDialogToMiddle(hWnd); SetWindowLong(hWnd, GWL_USERDATA, (long)lParam); ComboBox_AddString(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), TEXT("Linear")); ComboBox_AddString(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), TEXT("Exponential")); ComboBox_AddString(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), TEXT("Logarithmic")); ComboBox_AddString(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), TEXT("Sigmoid")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), 0); nIndex = SearchForFirstSelectedCell(hCon); nCellIndex = 0; nSubCellIndex = 0; nIndex = max(0, nIndex); WindowLevelProp.DispContainerActionProps.uStructSize = sizeof(DISPWLEVELACTIONPROPS); L_DispContainerGetActionProperties(hCon, CONTAINER_ACTION_WINDOWLEVEL, nIndex, 0, (LONG)&WindowLevelProp, CONTAINER_ACTION_CONTAINERLEVEL); L_DispContainerGetActionProperties(hCon, CONTAINER_ACTION_WINDOWLEVEL, nIndex, 0, (LONG)&WindowLevelProp, CONTAINER_ACTION_CELLLEVEL); ComboBox_AddString(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_COM), TEXT("None")); ComboBox_AddString(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_COM), TEXT("All")); ComboBox_AddString(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_COM), TEXT("Custom")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_COM), 0); ComboBox_AddString(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_COM), TEXT("All")); ComboBox_AddString(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_COM), TEXT("Custom")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_COM), 0); nCount = L_DispContainerGetCellCount(hCon, 0); if (!nCount) { EnableWindow(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_COM), bEnable); EnableWindow(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_COM), bEnable); } EnableWindow(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_COM), bEnable); EnableWindow(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT), bEnable); EnableWindow(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_EDT), bEnable); EnableWindow(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), bEnable); EnableWindow(GetDlgItem(hWnd, IDC_WLACTION_WIDTH_EDT), bEnable); EnableWindow(GetDlgItem(hWnd, IDC_WLACTION_CENTER_EDT), bEnable); L_DispContainerGetCellBitmapList(hCon, nIndex, &hBitmapList, 0); SetNumericEditBox(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT), 0, nCount - 1, 1, 0, 0); L_GetBitmapListCount(hBitmapList, &nCount); SetNumericEditBox(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_EDT), 0, nCount - 1, 1, 0, 0); SetNumericEditBox(GetDlgItem(hWnd, IDC_WLACTION_WIDTH_EDT), 0, 0xffff, 1, 0, 0); SetNumericEditBox(GetDlgItem(hWnd, IDC_WLACTION_CENTER_EDT), -0xffff, 0xffff, 1, 0, 0); SetDlgItemText(hWnd, IDC_ACTION_SUBCELLINDEX_EDT, TEXT("0")); SetDlgItemInt(hWnd, IDC_ACTION_CELLINDEX_EDT, nIndex, TRUE); SetDlgItemInt(hWnd, IDC_WLACTION_WIDTH_EDT, WindowLevelProp.nWidth, TRUE); SetDlgItemInt(hWnd, IDC_WLACTION_CENTER_EDT, WindowLevelProp.nCenter, TRUE); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), max((L_INT)0, (L_INT)((WindowLevelProp.uFillType) >> 4) - 1)); InitlizeVirtualKeyList(hWnd); AddSupString(GetDlgItem(hWnd, IDC_ACTION_MOD_COM)); AddVirtualKeyString(GetDlgItem(hWnd, IDC_ACTION_UPKEY_COM)); AddVirtualKeyString(GetDlgItem(hWnd, IDC_ACTION_DOWNKEY_COM)); AddVirtualKeyString(GetDlgItem(hWnd, IDC_ACTION_LEFTKEY_COM)); AddVirtualKeyString(GetDlgItem(hWnd, IDC_ACTION_RIGHTKEY_COM)); GetKeyboardAction(GetDlgItem(hWnd, IDC_ACTION_UPKEY_COM), CONTAINER_ACTION_WINDOWLEVEL, CONTAINER_MOUSEMOVE_UP); GetKeyboardAction(GetDlgItem(hWnd, IDC_ACTION_LEFTKEY_COM), CONTAINER_ACTION_WINDOWLEVEL, CONTAINER_MOUSEMOVE_LEFT); GetKeyboardAction(GetDlgItem(hWnd, IDC_ACTION_RIGHTKEY_COM), CONTAINER_ACTION_WINDOWLEVEL, CONTAINER_MOUSEMOVE_RIGHT); GetKeyboardAction(GetDlgItem(hWnd, IDC_ACTION_DOWNKEY_COM), CONTAINER_ACTION_WINDOWLEVEL, CONTAINER_MOUSEMOVE_DOWN); CheckKeyValidity(GetDlgItem(hWnd, IDC_ACTION_MOD_COM), 2); Button_SetCheck(GetDlgItem(hWnd, IDC_ACTION_CIRCLE_CHK), WindowLevelProp.DispContainerActionProps.bCircularMouseMove); SetDlgItemInt(hWnd, IDC_ACTION_SEN_EDT, WindowLevelProp.DispContainerActionProps.nChange, FALSE); SendMessage(GetDlgItem(hWnd, IDC_ACTION_CUR_BTN), BM_SETIMAGE , IMAGE_CURSOR, (LPARAM)(HCURSOR)WindowLevelProp.DispContainerActionProps.hCursor); hOldCursor = WindowLevelProp.DispContainerActionProps.hCursor; return TRUE; } static L_BOOL WindowLevelDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify) { HDISPCONTAINER hCon = (HDISPCONTAINER)GetWindowLong(hWnd, GWL_USERDATA); L_INT nRet; COLORREF crColorIn, crColorOut; HBITMAPLIST hBitmapList; L_INT nCount; switch(nID) { case IDC_ACTION_UPKEY_COM: case IDC_ACTION_LEFTKEY_COM: case IDC_ACTION_RIGHTKEY_COM: case IDC_ACTION_DOWNKEY_COM: CheckKeyValidity(GetDlgItem(hWnd, IDC_ACTION_MOD_COM), 2); break; case IDC_ACTION_CELLINDEX_EDT: if (nCellIndex == (L_INT)GetDlgItemInt(hWnd, nID, NULL, TRUE)) break; nCellIndex = GetDlgItemInt(hWnd, nID, NULL, TRUE); L_DispContainerGetActionProperties(hCon, CONTAINER_ACTION_WINDOWLEVEL, nCellIndex, nSubCellIndex, (LONG)&WindowLevelProp, CONTAINER_ACTION_CELLLEVEL); SetDlgItemInt(hWnd, IDC_WLACTION_WIDTH_EDT, WindowLevelProp.nWidth, TRUE); SetDlgItemInt(hWnd, IDC_WLACTION_CENTER_EDT, WindowLevelProp.nCenter, TRUE); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), (WindowLevelProp.uFillType - 1) >> 4); L_DispContainerGetCellBitmapList(hCon, nCellIndex, &hBitmapList, 0); L_GetBitmapListCount(hBitmapList, &nCount); EditNumericEditBox(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_EDT), 0, nCount - 1, 1, 0, 0, EDT_MODFY_MAX | EDT_MODFY_MIN); break; case IDC_ACTION_SUBCELLINDEX_EDT: if (nSubCellIndex == (L_INT)GetDlgItemInt(hWnd, nID, NULL, TRUE)) break; nSubCellIndex = GetDlgItemInt(hWnd, nID, NULL, TRUE); L_DispContainerGetActionProperties(hCon, CONTAINER_ACTION_WINDOWLEVEL, nCellIndex, nSubCellIndex, (LONG)&WindowLevelProp, CONTAINER_ACTION_CELLLEVEL); SetDlgItemInt(hWnd, IDC_WLACTION_WIDTH_EDT, WindowLevelProp.nWidth, TRUE); SetDlgItemInt(hWnd, IDC_WLACTION_CENTER_EDT, WindowLevelProp.nCenter, TRUE); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), (WindowLevelProp.uFillType - 1) >> 4); break; case IDC_WLACTION_CLRIN_BTN: crColorOut = WindowLevelProp.rgbColorStart; WindowLevelProp.rgbColorStart = ShowColorDialog(hWnd, crColorOut); InvalidateRect(hWnd, NULL, FALSE); break; case IDC_WLACTION_CLROUT_BTN: crColorIn = WindowLevelProp.rgbColorEnd; WindowLevelProp.rgbColorEnd = ShowColorDialog(hWnd, crColorIn); InvalidateRect(hWnd, NULL, FALSE); break; case IDC_ACTION_CELLINDEX_COM: nRet = ComboBox_GetCurSel(hWndCtl); EnableWindow(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT), (nRet == 2)); EnableWindow(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_COM), (nRet != 0)); EnableWindow(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_EDT), (nRet != 0) && ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_COM)) ); EnableWindow(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM), (nRet != 0)); EnableWindow(GetDlgItem(hWnd, IDC_WLACTION_WIDTH_EDT), (nRet != 0)); EnableWindow(GetDlgItem(hWnd, IDC_WLACTION_CENTER_EDT), (nRet != 0)); break; case IDC_ACTION_SUBCELLINDEX_COM: nRet = ComboBox_GetCurSel(hWndCtl); EnableWindow(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_EDT), (nRet == 1)); break; case IDC_ACTION_CUR_BTN: OpenCursorDialog(hWndCtl, &WindowLevelProp.DispContainerActionProps.hCursor); break; case IDAPPLY: case IDOK: { L_INT nVk; L_INT bShiftedRemoved = (ComboBox_GetCount(GetDlgItem(hWnd, IDC_ACTION_MOD_COM)) == 3); L_UINT uState = (8 >> (4 - ( ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_ACTION_MOD_COM)) + bShiftedRemoved))); WindowLevelProp.DispContainerActionProps.uStructSize = sizeof(DISPWLEVELACTIONPROPS); WindowLevelProp.DispContainerActionProps.bCircularMouseMove = Button_GetCheck(GetDlgItem(hWnd, IDC_ACTION_CIRCLE_CHK)); WindowLevelProp.DispContainerActionProps.nChange = GetDlgItemInt(hWnd, IDC_ACTION_SEN_EDT, NULL, FALSE); nRet = L_DispContainerSetActionProperties(hCon, CONTAINER_ACTION_WINDOWLEVEL, 0, 0, (LONG)&WindowLevelProp, CONTAINER_ACTION_CONTAINERLEVEL); nRet = ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_COM)); if (nRet != 0) { L_INT nIndex; L_INT nSubIndex; WindowLevelProp.nCenter = GetDlgItemInt(hWnd, IDC_WLACTION_CENTER_EDT , NULL, TRUE); WindowLevelProp.nWidth = GetDlgItemInt(hWnd, IDC_WLACTION_WIDTH_EDT, NULL, TRUE); WindowLevelProp.uFillType = (ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_WLACTION_FILLTYPE_COM)) + 1) << 4; if (nRet == 1) nIndex = -1; else nIndex = GetDlgItemInt(hWnd, IDC_ACTION_CELLINDEX_EDT, NULL, TRUE); nRet = ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_ACTION_SUBCELLINDEX_COM)); if (nRet == 0) nSubIndex = -1; else nSubIndex = GetDlgItemInt(hWnd, IDC_ACTION_SUBCELLINDEX_EDT, NULL, FALSE); nRet = L_DispContainerSetActionProperties(hCon, CONTAINER_ACTION_WINDOWLEVEL, nIndex, nSubIndex, (LONG)&WindowLevelProp, CONTAINER_ACTION_CELLLEVEL); } nVk = GetVirtualKey(hWnd, GetDlgItem(hWnd, IDC_ACTION_UPKEY_COM)); if (nVk != 0) L_DispContainerSetKeyboardAction(hCon, CONTAINER_ACTION_WINDOWLEVEL, CONTAINER_MOUSEMOVE_UP, nVk, uState); nVk = GetVirtualKey(hWnd, GetDlgItem(hWnd, IDC_ACTION_LEFTKEY_COM)); if (nVk != 0) L_DispContainerSetKeyboardAction(hCon, CONTAINER_ACTION_WINDOWLEVEL, CONTAINER_MOUSEMOVE_LEFT, nVk, uState); nVk = GetVirtualKey(hWnd, GetDlgItem(hWnd, IDC_ACTION_RIGHTKEY_COM)); if (nVk != 0) L_DispContainerSetKeyboardAction(hCon, CONTAINER_ACTION_WINDOWLEVEL, CONTAINER_MOUSEMOVE_RIGHT, nVk, uState); nVk = GetVirtualKey(hWnd, GetDlgItem(hWnd, IDC_ACTION_DOWNKEY_COM)); if (nVk != 0) L_DispContainerSetKeyboardAction(hCon, CONTAINER_ACTION_WINDOWLEVEL, CONTAINER_MOUSEMOVE_DOWN, nVk, uState); if (nID == IDAPPLY) break; EndDialog(hWnd, 1); } break; case IDCANCEL: EndDialog(hWnd, 0); break; } return TRUE; }