/*[]=====================================================================[]*/ /*[] 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 RemoveCellDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_BOOL RemoveCellDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify); static L_BOOL CellIndexDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_BOOL CellIndexDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify); static L_BOOL SetActionWndProc_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT codeNotify); static L_BOOL SetActionWndProc_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_BOOL RepositionDlgProc_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT codeNotify); static L_BOOL RepositionDlgProc_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_BOOL InsertCellDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_BOOL InsertCellDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify); static L_BOOL FreezeCellDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_BOOL FreezeCellDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify); L_INT SearchForFirstSelectedCell(HDISPCONTAINER hCon) { L_INT nCount = L_DispContainerGetCellCount(hCon, 0); L_INT nI; for (nI = 0; nI < nCount; nI++) { if (L_DispContainerIsCellSelected(hCon, nI, 0)) break; } if (nI == nCount) nI = -1; return nI; } L_BOOL CALLBACK CellIndexDlgProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, CellIndexDlg_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, CellIndexDlg_OnInitDialog); } return FALSE; } static L_BOOL CellIndexDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify) { switch(nID) { case IDOK: { L_INT a = GetDlgItemInt(hWnd, IDC_ACTION_CELLINDEX_EDT, NULL, TRUE); if (a < -1) Edit_SetSel(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT), 0, Edit_GetTextLength(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT))); else EndDialog(hWnd, GetDlgItemInt(hWnd, IDC_ACTION_CELLINDEX_EDT, NULL, TRUE)); } break; case IDCANCEL: EndDialog(hWnd, -2); break; } return TRUE; } static L_BOOL CellIndexDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam) { MoveDialogToMiddle(hWnd); SetDlgItemInt(hWnd, IDC_ACTION_CELLINDEX_EDT, -1, TRUE); Edit_SetSel(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT), 0, 2); SetFocus(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT)); SetNumericEditBox(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT), -1, L_DispContainerGetCellCount(hCon, 0), 1, 0, 0); return TRUE; } L_BOOL CALLBACK SetActionWndProc(HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, SetActionWndProc_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, SetActionWndProc_OnInitDialog); break; } return FALSE; } static L_BOOL SetActionWndProc_OnCommand(HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT codeNotify) { L_INT nAction = (L_INT)GetWindowLong(hWnd, GWL_USERDATA); switch(nID) { case IDAPPLY: case IDOK: { L_UINT uFlags = (ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_APPLYMETHOD_COM)) << 4) | ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM)); L_UINT nMouse = ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM)); if ((nMouse != pCurrentActionButton[nAction]) || (uFlags != pCurrentActionFlags[nAction])) { L_INT nI = 1; L_DispContainerSetAction(hCon, nAction, 0, 0); while(nI < 7) { if (pCurrentActionButton[nI] == nMouse) { pCurrentActionButton[nI] = 0; pCurrentActionFlags[nI] = 0; nI = 7; } else nI++; } L_DispContainerSetAction(hCon, nAction, nMouse, uFlags); pCurrentActionButton[nAction] = nMouse; pCurrentActionFlags[nAction] = uFlags; } } if (nID == IDAPPLY) break; EndDialog(hWnd, 1); break; case IDC_SETACTION_APPLYON_COM: { L_INT nMouseSel = (ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM)) != 4) && ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM)); L_INT nApplyOnSel = !ComboBox_GetCurSel(hWndCtl); if ((L_DispContainerGetCellCount(hCon, 0) <= 1) || (nAction == CONTAINER_ACTION_MAG)) break; EnableWindow(GetDlgItem(hWnd, IDC_SETACTION_APPLYMETHOD_COM), !nApplyOnSel && nMouseSel); } break; case IDC_SETACTION_MOUSE_COM: { L_INT nMouseSel = (ComboBox_GetCurSel(hWndCtl) != 4) && (ComboBox_GetCurSel(hWndCtl) != 0); L_INT nApplyOnSel = !ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM)); if ((L_DispContainerGetCellCount(hCon, 0) <= 1) || (nAction == CONTAINER_ACTION_MAG)) break; EnableWindow(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM), ComboBox_GetCurSel(hWndCtl)); EnableWindow(GetDlgItem(hWnd, IDC_SETACTION_APPLYMETHOD_COM), !nApplyOnSel && nMouseSel); } break; case IDCANCEL: EndDialog(hWnd, 0); break; } return TRUE; } static L_BOOL SetActionWndProc_OnInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam) { L_INT nCount; L_BOOL bEnable; MoveDialogToMiddle(hWnd); SetWindowLong(hWnd, GWL_USERDATA, (long)lParam); switch(lParam) { case CONTAINER_ACTION_ALPHA: SetWindowText(hWnd, TEXT("Set Alpha Action")); break; case CONTAINER_ACTION_OFFSET: SetWindowText(hWnd, TEXT("Set Offset Action")); break; case CONTAINER_ACTION_MAG: SetWindowText(hWnd, TEXT("Set Magnify Glass Action")); break; case CONTAINER_ACTION_SCALE: SetWindowText(hWnd, TEXT("Set Scale Action")); break; case CONTAINER_ACTION_STACK: SetWindowText(hWnd, TEXT("Set Stack Action")); break; } ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM), TEXT("None")); ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM), TEXT("Left Button")); ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM), TEXT("Right Button")); ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM), TEXT("Middle Button")); if (lParam != CONTAINER_ACTION_MAG) ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM), TEXT("Wheel")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM), pCurrentActionButton[lParam]); ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM), TEXT("Active Only")); ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM), TEXT("Selected Cells")); ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM), TEXT("All Cells")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM), pCurrentActionFlags[lParam] & 0xf); nCount = L_DispContainerGetCellCount(hCon, 0); bEnable = ((lParam != CONTAINER_ACTION_MAG) && (nCount > 1)) && ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM)); EnableWindow(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM), bEnable); EnableWindow(GetDlgItem(hWnd, IDC_SETACTION_APPLYMETHOD_COM), bEnable && (!ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_APPLYON_COM)) && (ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_SETACTION_MOUSE_COM)) != 4))); ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_APPLYMETHOD_COM), TEXT("Real time")); ComboBox_AddString(GetDlgItem(hWnd, IDC_SETACTION_APPLYMETHOD_COM), TEXT("On mouse release")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_SETACTION_APPLYMETHOD_COM), (pCurrentActionFlags[lParam] & 0xf0) >> 4); return TRUE; } L_BOOL CALLBACK RepositionDlgProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, RepositionDlgProc_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, RepositionDlgProc_OnInitDialog); } return FALSE; } static L_BOOL RepositionDlgProc_OnCommand(HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT codeNotify) { L_INT nIndex; switch(nID) { case IDOK: nIndex = MAKELONG(GetDlgItemInt(hWnd, IDC_ACTION_CELLINDEX_EDT, 0, FALSE), GetDlgItemInt(hWnd, IDC_ACTION_TARGETINDEX_EDT, 0, FALSE)); EndDialog(hWnd, nIndex); break; case IDCANCEL: EndDialog(hWnd, 0); } return TRUE; } static L_BOOL RepositionDlgProc_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam) { L_INT nIndex = SearchForFirstSelectedCell(hCon); L_INT nCount = L_DispContainerGetCellCount(hCon, 0); MoveDialogToMiddle(hWnd); SetDlgItemInt(hWnd, IDC_ACTION_CELLINDEX_EDT, max(0, nIndex), FALSE); SetDlgItemInt(hWnd, IDC_ACTION_TARGETINDEX_EDT, max(0, nIndex), FALSE); SetNumericEditBox(GetDlgItem(hWnd, IDC_ACTION_CELLINDEX_EDT), 0, nCount - 1, 1, 0, 0); SetNumericEditBox(GetDlgItem(hWnd, IDC_ACTION_TARGETINDEX_EDT), 0, nCount - 1, 1, 0, 0); return TRUE; } COLORREF ShowColorDialog(HWND hWnd, COLORREF crOldColor) { COLORDLGPARAMS DlgParams ; L_INT nRet; memset(&DlgParams, 0, sizeof(COLORDLGPARAMS)); SetCursor(LoadCursor(NULL, IDC_WAIT)); DlgParams.uStructSize = sizeof(COLORDLGPARAMS); DlgParams.crColor = crOldColor; DlgParams.uDlgFlags = 0x0001fffe; DlgParams.uColorSpace = DLG_COLOR_COLORSPACE_SHOW_RGB; nRet = L_DlgColor ( hWnd, &DlgParams ) ; return (nRet == SUCCESS_DLG_OK) ? DlgParams.crColor : crOldColor; } L_VOID OpenCursorDialog(HWND hWndButton, HCURSOR L_FAR * phCursor) { L_INT nRet; OPENFILENAME OpenFileName; L_TCHAR FileName[L_MAXPATH] = TEXT("\0"); memset(&OpenFileName, 0, sizeof(OPENFILENAME)); OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrFilter = TEXT("Cursors(*.cur)\0 *.cur"); OpenFileName.nMaxCustFilter = 12; OpenFileName.hwndOwner = GetParent(hWndButton); OpenFileName.lpstrTitle = TEXT("Open a File"); OpenFileName.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT; OpenFileName.lpstrFile = FileName; OpenFileName.nMaxFile = L_MAXPATH; nRet = GetOpenFileName(&OpenFileName); if (nRet == SUCCESS) { *phCursor = LoadCursorFromFile(OpenFileName.lpstrFile); hOldCursor = *phCursor; SendMessage(hWndButton, BM_SETIMAGE , IMAGE_CURSOR, (LPARAM)*phCursor); } } L_BOOL CALLBACK InsertCellDlgProc(HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, InsertCellDlg_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, InsertCellDlg_OnInitDialog); } return FALSE; } static L_BOOL InsertCellDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam) { MoveDialogToMiddle(hWnd); SetDlgItemInt(hWnd, IDD_INSERTCELL_INDEX_EDT, 0, TRUE); SetNumericEditBox(GetDlgItem(hWnd, IDD_INSERTCELL_INDEX_EDT), 0, L_DispContainerGetCellCount(hCon, 0), 1, 0, 0); Button_SetCheck(GetDlgItem(hWnd, IDD_INSERTCELL_APPEND_RAD), BST_CHECKED); EnableWindow(GetDlgItem(hWnd, IDD_INSERTCELL_INDEX_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDD_INSERTCELL_INDEX_TXT), FALSE); return TRUE; } static L_BOOL InsertCellDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify) { switch(nID) { case IDD_INSERTCELL_APPEND_RAD: EnableWindow(GetDlgItem(hWnd, IDD_INSERTCELL_INDEX_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDD_INSERTCELL_INDEX_TXT), FALSE); break; case IDD_INSERTCELL_INSERT_RAD: EnableWindow(GetDlgItem(hWnd, IDD_INSERTCELL_INDEX_EDT), TRUE); EnableWindow(GetDlgItem(hWnd, IDD_INSERTCELL_INDEX_TXT), TRUE); break; case IDCANCEL: EndDialog(hWnd, -2); break; case IDOK: EndDialog(hWnd, Button_GetCheck(GetDlgItem(hWnd, IDD_INSERTCELL_APPEND_RAD)) ? -1 : GetDlgItemInt(hWnd, IDD_INSERTCELL_INDEX_EDT, NULL, TRUE)); break; } return TRUE; } L_BOOL CALLBACK FreezeCellDlgProc(HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, FreezeCellDlg_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, FreezeCellDlg_OnInitDialog); } return FALSE; } static L_BOOL FreezeCellDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam) { MoveDialogToMiddle(hWnd); SetDlgItemInt(hWnd, IDC_FREEZECELL_INDEX_EDT, 0, TRUE); SetNumericEditBox(GetDlgItem(hWnd, IDC_FREEZECELL_INDEX_EDT), 0, L_DispContainerGetCellCount(hCon, 0) - 1, 1, 0, 0); Button_SetCheck(GetDlgItem(hWnd, IDC_FREEZECELL_ALL_RAD), BST_CHECKED); ComboBox_AddString(GetDlgItem(hWnd, IDC_FREEZECELL_ACTION_COM), TEXT("Freeze")); ComboBox_AddString(GetDlgItem(hWnd, IDC_FREEZECELL_ACTION_COM), TEXT("Unfreeze")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_FREEZECELL_ACTION_COM), 0); EnableWindow(GetDlgItem(hWnd, IDC_FREEZECELL_INDEX_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_FREEZECELL_INDEX_TXT), FALSE); return TRUE; } static L_BOOL FreezeCellDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify) { switch(nID) { case IDC_FREEZECELL_ALL_RAD: EnableWindow(GetDlgItem(hWnd, IDC_FREEZECELL_INDEX_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_FREEZECELL_INDEX_TXT), FALSE); break; case IDC_FREEZECELL_CELL_RAD: EnableWindow(GetDlgItem(hWnd, IDC_FREEZECELL_INDEX_EDT), TRUE); EnableWindow(GetDlgItem(hWnd, IDC_FREEZECELL_INDEX_TXT), TRUE); break; case IDCANCEL: EndDialog(hWnd, -2); break; case IDAPPLY: case IDOK: L_DispContainerFreezeCell(hCon, (Button_GetCheck(GetDlgItem(hWnd, IDC_FREEZECELL_ALL_RAD)) ? -1 : GetDlgItemInt(hWnd, IDC_FREEZECELL_INDEX_EDT, NULL, FALSE)), !ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_FREEZECELL_ACTION_COM)), 0); if (nID == IDAPPLY) break; EndDialog(hWnd, 1); break; } return TRUE; } L_BOOL CALLBACK RemoveCellDlgProc(HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, RemoveCellDlg_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, RemoveCellDlg_OnInitDialog); } return FALSE; } static L_BOOL RemoveCellDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam) { MoveDialogToMiddle(hWnd); SetDlgItemInt(hWnd, IDC_REMOVECELL_INDEX_EDT, 0, TRUE); SetNumericEditBox(GetDlgItem(hWnd, IDC_REMOVECELL_INDEX_EDT), 0, L_DispContainerGetCellCount(hCon, 0) - 1, 1, 0, 0); Button_SetCheck(GetDlgItem(hWnd, IDC_REMOVECELL_ALL_RAD), BST_CHECKED); EnableWindow(GetDlgItem(hWnd, IDC_REMOVECELL_INDEX_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_REMOVECELL_INDEX_TXT), FALSE); return TRUE; } static L_BOOL RemoveCellDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify) { switch(nID) { case IDC_REMOVECELL_ALL_RAD: EnableWindow(GetDlgItem(hWnd, IDC_REMOVECELL_INDEX_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_REMOVECELL_INDEX_TXT), FALSE); break; case IDC_REMOVECELL_SP_RAD: EnableWindow(GetDlgItem(hWnd, IDC_REMOVECELL_INDEX_EDT), TRUE); EnableWindow(GetDlgItem(hWnd, IDC_REMOVECELL_INDEX_TXT), TRUE); break; case IDCANCEL: EndDialog(hWnd, -2); break; case IDOK: EndDialog(hWnd, Button_GetCheck(GetDlgItem(hWnd, IDC_REMOVECELL_ALL_RAD)) ? -1 : GetDlgItemInt(hWnd, IDC_REMOVECELL_INDEX_EDT, NULL, TRUE)); break; } return TRUE; } L_VOID MoveDialogToMiddle(HWND hWnd) { RECT rcDlgPos; RECT rcDlgSize; POINT ptPoint; HWND hWndParent = L_DispContainerGetWindowHandle(hCon, 0); GetWindowRect(hWndParent, &rcDlgPos); GetWindowRect(hWnd, &rcDlgSize); ptPoint.x = (RECTWIDTH(&rcDlgPos) >> 1) - (RECTWIDTH(&rcDlgSize) >> 1); ptPoint.y = (RECTHEIGHT(&rcDlgPos) >> 1) - (RECTHEIGHT(&rcDlgSize) >> 1); ClientToScreen(hWndParent, &ptPoint); MoveWindow(hWnd, ptPoint.x , ptPoint.y, RECTWIDTH(&rcDlgSize), RECTHEIGHT(&rcDlgSize), TRUE); }