//ROMTEAM StickObjects (Gabi Dumitrascu 02/02/98) /*========================================================================= * edtdsel.cpp : Implementation file * we will select three points from the destination object,three points from the source object and stick them together. * * Version 1.0 * Creation date * Revision date * * CPA2 Gabi Dumitrascu 98-02-02 *=======================================================================*/ #include "stdafx.h" #ifdef ACTIVE_EDITOR #include "acp_base.h" #include "ITF.h" #include "edtdedit.hpp" #include "edtdsel.hpp" #include "EDTBase.hpp" #include "EDTSObj.hpp" #include "incMTH.h" #include "..\Main\Inc\_EditID.h" #include "TUT.h" #include "EDTrot.hpp" #define M_GetToolDLLs() m_pEditor->GetMainWorld()->GetToolDLLReceivingEvtEditorMsg() ///////////////////////////////////////////////////////////////////////////// // EDT_DialogSelect EDT_DialogSelect::EDT_DialogSelect(CWnd *pParent) : CFormView(EDT_DialogSelect::IDD) { //{{AFX_DATA_INIT(EDT_DialogSelect) //}}AFX_DATA_INIT } void EDT_DialogSelect::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(EDT_DialogSelect) DDX_Control(pDX, EDT_IDC_SELECTSRC, m_ckSelectSrc); DDX_Control(pDX, EDT_IDC_SELECTDST, m_ckSelectDst); DDX_Control(pDX, EDT_IDC_Z33, m_PosZ33); DDX_Control(pDX, EDT_IDC_Z3, m_PosZ3); DDX_Control(pDX, EDT_IDC_Z22, m_PosZ22); DDX_Control(pDX, EDT_IDC_Z2, m_PosZ2); DDX_Control(pDX, EDT_IDC_Z11, m_PosZ11); DDX_Control(pDX, EDT_IDC_Z1, m_PosZ1); DDX_Control(pDX, EDT_IDC_Y33, m_PosY33); DDX_Control(pDX, EDT_IDC_Y3, m_PosY3); DDX_Control(pDX, EDT_IDC_Y22, m_PosY22); DDX_Control(pDX, EDT_IDC_Y2, m_PosY2); DDX_Control(pDX, EDT_IDC_Y11, m_PosY11); DDX_Control(pDX, EDT_IDC_Y1, m_PosY1); DDX_Control(pDX, EDT_IDC_X33, m_PosX33); DDX_Control(pDX, EDT_IDC_X3, m_PosX3); DDX_Control(pDX, EDT_IDC_X22, m_PosX22); DDX_Control(pDX, EDT_IDC_X2, m_PosX2); DDX_Control(pDX, EDT_IDC_X11, m_PosX11); DDX_Control(pDX, EDT_IDC_X1, m_PosX1); DDX_Control(pDX, EDT_IDC_MOVE, m_bMove); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(EDT_DialogSelect, CFormView) //{{AFX_MSG_MAP(EDT_DialogSelect) ON_WM_DESTROY() ON_BN_CLICKED(EDT_IDC_MOVE, OnMove) ON_BN_CLICKED(EDT_IDC_SELECTDST, OnSelectDst) ON_BN_CLICKED(EDT_IDC_SELECTSRC, OnSelectSrc) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// /*=========================================================================== * Description: * Creation date: * Author: *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ CPA_Interface * EDT_DialogSelect::GetInterface (void) { return m_pEditor->GetInterface(); } /*=========================================================================== * Description: Init Dialog * Creation date: 98-02-02 * Author: CPA2 Gabi Dumitrascu *--------------------------------------------------------------------------- * Revision date: * Author: *=========================================================================*/ void EDT_DialogSelect::fn_vInitDialog (EDT_HierarchyEditor *pEditor, FRMBase *pFrame) { // create the dialog m_pEditor = pEditor; CFormView::Create(NULL, "", WS_VISIBLE|WS_CHILD, CRect(0,0,0,0), pFrame, AFX_IDW_PANE_FIRST, NULL); m_bWrongObject = FALSE; m_iCrtDstPoint = -1; m_iCrtSrcPoint = -1; for (int i = 0; i < 3; i++) { MTH3D_M_vNullVector(m_stDstPoints + i); MTH3D_M_vNullVector(m_stSrcPoints + i); } // init data for dialog CFormView::UpdateData(FALSE); // FOR TUTORIAL TUT_M_vGetTutDll(); // button Select points TUT_M_vRegisterControl(m_ckSelectDst.m_hWnd, "EDT_DEDIT_BUTTON_SELECTDST", TUT_e_Button); TUT_M_vRegisterControl(m_ckSelectSrc.m_hWnd, "EDT_DEDIT_BUTTON_SELECTSRC", TUT_e_Button); // position TUT_M_vRegisterControl(m_PosX1.m_hWnd, "EDT_DEDIT_EDIT_POSX1", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosY1.m_hWnd, "EDT_DEDIT_EDIT_POSY1", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosZ1.m_hWnd, "EDT_DEDIT_EDIT_POSZ1", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosX2.m_hWnd, "EDT_DEDIT_EDIT_POSX2", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosY2.m_hWnd, "EDT_DEDIT_EDIT_POSY2", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosZ2.m_hWnd, "EDT_DEDIT_EDIT_POSZ2", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosX3.m_hWnd, "EDT_DEDIT_EDIT_POSX3", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosY3.m_hWnd, "EDT_DEDIT_EDIT_POSY3", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosZ3.m_hWnd, "EDT_DEDIT_EDIT_POSZ3", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosX11.m_hWnd, "EDT_DEDIT_EDIT_POSX11", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosY11.m_hWnd, "EDT_DEDIT_EDIT_POSY11", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosZ11.m_hWnd, "EDT_DEDIT_EDIT_POSZ11", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosX22.m_hWnd, "EDT_DEDIT_EDIT_POSX22", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosY22.m_hWnd, "EDT_DEDIT_EDIT_POSY22", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosZ22.m_hWnd, "EDT_DEDIT_EDIT_POSZ22", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosX33.m_hWnd, "EDT_DEDIT_EDIT_POSX33", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosY33.m_hWnd, "EDT_DEDIT_EDIT_POSY33", TUT_e_TextEdit); TUT_M_vRegisterControl(m_PosZ33.m_hWnd, "EDT_DEDIT_EDIT_POSZ33", TUT_e_TextEdit); // button move TUT_M_vRegisterControl(m_bMove.m_hWnd, "EDT_DEDIT_BUTTON_MOVE", TUT_e_Button); // END TUTORIAL m_ckSelectDst.SetCheck(FALSE); m_ckSelectSrc.SetCheck(FALSE); // update data fn_vUpdateDialog(); } /*=========================================================================== * Description: update dialog when object changes * Creation date: 98-02-02 * Author: CPA2 Gabi Dumitrascu *--------------------------------------------------------------------------- * Revision date: * Author: *=========================================================================*/ void EDT_DialogSelect::fn_vUpdateDialog (void) { CPA_SuperObject* pSelectedObject = m_pEditor->M_GetSingleSelection(); m_ckSelectDst.EnableWindow(!fn_bIsSelectingDst() && !m_bWrongObject ); m_ckSelectSrc.EnableWindow(m_iCrtDstPoint == 3 && pSelectedObject && pSelectedObject != m_pDstObject ); m_ckSelectDst.EnableWindow((pSelectedObject != NULL)); m_bMove.EnableWindow(m_iCrtDstPoint == 3 && m_iCrtSrcPoint == 3);// && m_bWrongObject); fn_vUpdateDstDialog (); fn_vUpdateSrcDialog (); } /*=========================================================================== * Description: update the destination dialog * Creation date: 98-02-02 * Author: CPA2 Gabi Dumitrascu *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ void EDT_DialogSelect::fn_vUpdateDstDialog (void) { char szPosX[3][10],szPosY[3][10],szPosZ[3][10]; for (int i = 0; i < 3; i++) *szPosX[i] = *szPosY[i] = *szPosZ[i] = 0; for (i = 0; i < m_iCrtDstPoint; i++) { sprintf(szPosX[i], "%7.4f", MTH3D_M_xGetXofVector(&m_stDstPoints[i])); sprintf(szPosY[i], "%7.4f", MTH3D_M_xGetYofVector(&m_stDstPoints[i])); sprintf(szPosZ[i], "%7.4f", MTH3D_M_xGetZofVector(&m_stDstPoints[i])); } m_PosX1.SetWindowText(szPosX[0]); m_PosY1.SetWindowText(szPosY[0]); m_PosZ1.SetWindowText(szPosZ[0]); m_PosX2.SetWindowText(szPosX[1]); m_PosY2.SetWindowText(szPosY[1]); m_PosZ2.SetWindowText(szPosZ[1]); m_PosX3.SetWindowText(szPosX[2]); m_PosY3.SetWindowText(szPosY[2]); m_PosZ3.SetWindowText(szPosZ[2]); } /*=========================================================================== * Description: update the source dialog * Creation date: 98-02-02 * Author: CPA2 Gabi Dumitrascu *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ void EDT_DialogSelect::fn_vUpdateSrcDialog (void) { char szPosX[3][10],szPosY[3][10],szPosZ[3][10]; for (int i = 0; i < 3; i++) *szPosX[i] = *szPosY[i] = *szPosZ[i] = 0; for (i = 0; i < m_iCrtSrcPoint; i++) { sprintf(szPosX[i], "%7.4f", MTH3D_M_xGetXofVector(&m_stSrcPoints[i])); sprintf(szPosY[i], "%7.4f", MTH3D_M_xGetYofVector(&m_stSrcPoints[i])); sprintf(szPosZ[i], "%7.4f", MTH3D_M_xGetZofVector(&m_stSrcPoints[i])); } m_PosX11.SetWindowText(szPosX[0]); m_PosY11.SetWindowText(szPosY[0]); m_PosZ11.SetWindowText(szPosZ[0]); m_PosX22.SetWindowText(szPosX[1]); m_PosY22.SetWindowText(szPosY[1]); m_PosZ22.SetWindowText(szPosZ[1]); m_PosX33.SetWindowText(szPosX[2]); m_PosY33.SetWindowText(szPosY[2]); m_PosZ33.SetWindowText(szPosZ[2]); } /*=========================================================================== * Description: These two functions are called in the function OnLButtonDown from edtbase.cpp * Creation date: 98-02-02 * Author: CPA2 Gabi Dumitrascu *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ BOOL EDT_DialogSelect::fn_bIsSelecting() { return fn_bIsSelectingDst() || fn_bIsSelectingSrc(); } void EDT_DialogSelect::fn_vSetPoint(tdstMousePos *p_stPos, HIE_tdstPickInfo *p_stPickInfo) { if (fn_bIsSelectingDst()) fn_vSetDstPoint(p_stPos, p_stPickInfo); if (fn_bIsSelectingSrc()) fn_vSetSrcPoint(p_stPos, p_stPickInfo); } /*=========================================================================== * Description: Set the points of the destination object * Creation date: 98-02-02 * Author: CPA2 Gabi Dumitrascu *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ void EDT_DialogSelect::fn_vSetDstPoint(tdstMousePos *p_stPos, HIE_tdstPickInfo *p_stPickInfo) { CPA_SuperObject* pSelectedObject = m_pEditor->M_GetSingleSelection(); if (m_iCrtDstPoint == 0) m_pDstObject = pSelectedObject; // If no selected object or the selected obj was changed, then cancel the selection if (!pSelectedObject || m_pDstObject != pSelectedObject || m_pDstObject == m_pSrcObject) { m_bWrongObject = TRUE; M_GetMainWnd()->UpdateStatus("No object selected or the object was changed. Cancel the selection.", C_STATUSPANE_INFOS, C_STATUS_ERROR); fn_vUpdateDialog(); return; } if (m_bWrongObject) { m_bWrongObject = FALSE; return; } HIE_aDEF_stTabOfPickInfo xPickInfo; DEV_ViewPort3D *pCurViewport = ((DEV_ViewPort3D *)m_pEditor->GetInterface()->GetMultiDevice()->GetFocusDevice()->GetViewPort()); if(HIE_xIsSuperObjectPick(GLI_C_ModePickingPoint, pCurViewport->m_hDisplayDevice, pCurViewport->m_hDisplayViewport, &p_stPos->stPos2D, p_stPickInfo[0].hSprObject, xPickInfo )) { // Get the object relative point's coord ACP_tdxIndex xSelectedPointIndex = ((HIE_tdstPickInfo*)xPickInfo)->stPickedObject.aDEF_stDataOfElement[0].xIndexOfPoint; MTH3D_tdstVector x3DPoint = ((HIE_tdstPickInfo*)xPickInfo)->hGeoObject->d_stListOfPoints[xSelectedPointIndex]; // Get the absolute point's coord POS_tdstCompletePosition * pObjectMatrix = HIE_fn_hGetSuperObjectMatrix(m_pDstObject->GetStruct()); POS_fn_vMulMatrixVertex(&x3DPoint, pObjectMatrix, &x3DPoint); // Save the absolute point's coord m_stDstPoints[m_iCrtDstPoint++] = x3DPoint; if (m_iCrtDstPoint == 3) { m_bWrongObject = TRUE; m_ckSelectDst.SetCheck(FALSE); } // Update the dialog's fields fn_vUpdateDialog(); } } /*=========================================================================== * Description: Set the points of the source object * Creation date: 98-02-02 * Author: CPA2 Gabi Dumitrascu *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ void EDT_DialogSelect::fn_vSetSrcPoint(tdstMousePos *p_stPos, HIE_tdstPickInfo *p_stPickInfo) { CPA_SuperObject* pSelectedObject = m_pEditor->M_GetSingleSelection(); if (m_iCrtSrcPoint == 0) m_pSrcObject = pSelectedObject; // If no selected object or the selected obj was changed, then cancel the selection. if (!pSelectedObject || m_pSrcObject != pSelectedObject || m_pDstObject == m_pSrcObject) { m_bWrongObject = TRUE; M_GetMainWnd()->UpdateStatus("No object selected or the object was changed. Cancel the selection.", C_STATUSPANE_INFOS, C_STATUS_ERROR); fn_vUpdateDialog(); return; } if (m_bWrongObject) { m_bWrongObject = FALSE; return; } HIE_aDEF_stTabOfPickInfo xPickInfo; DEV_ViewPort3D *pCurViewport = ((DEV_ViewPort3D *)m_pEditor->GetInterface()->GetMultiDevice()->GetFocusDevice()->GetViewPort()); if(HIE_xIsSuperObjectPick(GLI_C_ModePickingPoint, pCurViewport->m_hDisplayDevice, pCurViewport->m_hDisplayViewport, &p_stPos->stPos2D, p_stPickInfo[0].hSprObject, xPickInfo )) { // Get the object relative point's coord ACP_tdxIndex xSelectedPointIndex = ((HIE_tdstPickInfo*)xPickInfo)->stPickedObject.aDEF_stDataOfElement[0].xIndexOfPoint; MTH3D_tdstVector x3DPoint = ((HIE_tdstPickInfo*)xPickInfo)->hGeoObject->d_stListOfPoints[xSelectedPointIndex]; // Get the absolute point's coord POS_tdstCompletePosition * pObjectMatrix = HIE_fn_hGetSuperObjectMatrix(m_pSrcObject->GetStruct()); POS_fn_vMulMatrixVertex(&x3DPoint, pObjectMatrix, &x3DPoint); // Save the absolute point's coord m_stSrcPoints[m_iCrtSrcPoint++] = x3DPoint; // Update the dialog's fields if (m_iCrtSrcPoint == 3) { m_bWrongObject = TRUE; m_ckSelectSrc.SetCheck(FALSE); } // Update the dialog's fields fn_vUpdateDialog(); } } /*=========================================================================== * EDT_DialogSelect message handlers * Creation date: 98-02-02 * Author: CPA2 Gabi Dumitrascu *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ void EDT_DialogSelect::OnSelectDst() { m_iCrtDstPoint = 0; m_bWrongObject = FALSE; fn_vUpdateDialog(); } void EDT_DialogSelect::OnSelectSrc() { m_iCrtSrcPoint = 0; m_bWrongObject = FALSE; fn_vUpdateDialog(); } void EDT_DialogSelect::OnMove() { if (m_pSrcObject != m_pEditor->M_GetSingleSelection()) { GetInterface ()->fn_vCancelCurrentSelection(FALSE); GetInterface ()->fn_vAddSelectedObject(m_pSrcObject , TRUE); } if (m_iCrtDstPoint == 3 && m_iCrtSrcPoint == 3) { // Compute the rotation matrix and the translation vector. Matrix src, dst, resM; Vector vect; for (int i = 0; i < 3; i++) { dst[i][0] = m_stDstPoints[i].xX; dst[i][1] = m_stDstPoints[i].xY; dst[i][2] = m_stDstPoints[i].xZ; } for (i=0; i < 3; i++) { src[i][0] = m_stSrcPoints[i].xX; src[i][1] = m_stSrcPoints[i].xY; src[i][2] = m_stSrcPoints[i].xZ; } if (!GetTransform(dst, src, resM, vect)) { // display message box M_GetMainWnd()->UpdateStatus("The selected triangles are invalid. Cancel the move.", C_STATUSPANE_INFOS, C_STATUS_ERROR); m_ckSelectSrc.EnableWindow(FALSE); } else { // CPA2 Nicolae Suparatu 98-02-10 // STM - 18-8-98 - use stTransformMatrix instead of stRotationMatrix POS_tdstCompletePosition m, *stMatrix = HIE_fn_hGetSuperObjectGlobalMatrix(m_pSrcObject->GetStruct()); CopyMemory(&m.stTransformMatrix, &stMatrix->stTransformMatrix, sizeof(Matrix)); CopyMemory(&m.stTranslationVector, &stMatrix->stTranslationVector, sizeof(Vector)); // Translate and rotate the last selected object. Convert(resM, vect, (Matrix&)m.stTransformMatrix, (Vector&)m.stTranslationVector); m_edit->fn_vSetNewPositionAndRotation((EDT_SuperObject *)m_pSrcObject, m); // End CPA2 Nicolae Suparatu 98-02-10 } m_iCrtDstPoint = -1; m_iCrtSrcPoint = -1; fn_vUpdateDialog(); m_pDstObject = m_pSrcObject = NULL; } } void EDT_DialogSelect::OnDestroy() { // FOR TUTORIAL TUT_M_vGetTutDll(); // button select TUT_M_vUnregisterControl(m_ckSelectDst.m_hWnd); TUT_M_vUnregisterControl(m_ckSelectSrc.m_hWnd); // position TUT_M_vUnregisterControl(m_PosX1.m_hWnd); TUT_M_vUnregisterControl(m_PosY1.m_hWnd); TUT_M_vUnregisterControl(m_PosZ1.m_hWnd); TUT_M_vUnregisterControl(m_PosX2.m_hWnd); TUT_M_vUnregisterControl(m_PosY2.m_hWnd); TUT_M_vUnregisterControl(m_PosZ2.m_hWnd); TUT_M_vUnregisterControl(m_PosX3.m_hWnd); TUT_M_vUnregisterControl(m_PosY3.m_hWnd); TUT_M_vUnregisterControl(m_PosZ3.m_hWnd); TUT_M_vUnregisterControl(m_PosX11.m_hWnd); TUT_M_vUnregisterControl(m_PosY11.m_hWnd); TUT_M_vUnregisterControl(m_PosZ11.m_hWnd); TUT_M_vUnregisterControl(m_PosX22.m_hWnd); TUT_M_vUnregisterControl(m_PosY22.m_hWnd); TUT_M_vUnregisterControl(m_PosZ22.m_hWnd); TUT_M_vUnregisterControl(m_PosX33.m_hWnd); TUT_M_vUnregisterControl(m_PosY33.m_hWnd); TUT_M_vUnregisterControl(m_PosZ33.m_hWnd); // button move TUT_M_vUnregisterControl(m_bMove.m_hWnd); // END TUTORIAL CFormView::OnDestroy(); } //// Begin Silviu Simen september 1998 List of Objects in Sectors /*========================================================================= * Version 1.0 * Creation date 9 september 1998 * Revision date 9 september 1998 * * Author : Silviu Simen *=======================================================================*/ static int s_iDefSect = 0; static int s_iDefType = 0; struct stTypeNames_ { unsigned long ulType; char * szTypeName; BOOL bActive; } stTypeNames[] = { HIE_C_ulSuperObject, "SuperObject", 0, HIE_C_ulActor, "Actor", 1, HIE_C_ulSector, "Sector", 0, HIE_C_ulPO, "PhysicalObject", 0, HIE_C_ulPO_Mirror, "PO Mirror", 0, HIE_C_ulIPO, "IPO", 1, HIE_C_ulIPO_Mirror, "IPO Mirror", 1, HIE_C_ulSpecialEffect, "SpecialEffect", 0, HIE_C_ulNoAction, "OOPS", 0, HIE_C_ulMirror, "Mirror", 0, HIE_C_ulEDT_Geometric, "Geometric", 0, HIE_C_ulEDT_Light, "Light", 1, HIE_C_ulEDT_Waypoint, "WayPoint", 1 //#define HIE_C_ulEDT_ZdD 0x00002000 // ZdD object (Editor) //#define HIE_C_ulEDT_ZdE 0x00004000 // ZdE object (Editor) //#define HIE_C_ulEDT_ZdM 0x00008000 // ZdM object (Editor) //#define HIE_C_ulEDT_ZdR 0x00010000 // ZdR object (Editor) //#define HIE_C_ulEDT_BdV 0x00020000 // Bounding Volume object (Editor) //#define HIE_C_ulEDT_TestPoint 0x00040000 // TestPoint object (Editor) }; #define NUMBEROFNAMES (sizeof(stTypeNames)/sizeof(stTypeNames_)) ////////////////////////////////////////////////////////////////////// // implementation of the EDT_DialogSelectType class. ////////////////////////////////////////////////////////////////////// EDT_DialogSelectType::EDT_DialogSelectType (CPA_Interface *p_oInterface, CWnd* pParent) : CDialog(EDT_DialogSelectType::IDD) { m_p_oInterface = p_oInterface; //{{AFX_DATA_INIT(EDT_DialogSelectType) //}}AFX_DATA_INIT } EDT_DialogSelectType::~EDT_DialogSelectType() { } void EDT_DialogSelectType::Init(void) { POSITION pos; int i; for (i=0;i* poList = GetInterface()->GetObjectListByType (C_szSectorTypeName); CPA_SuperObject * p_sector; // Sectors for (p_sector = poList -> GetHeadElement(pos); p_sector; p_sector = poList -> GetNextElement(pos) ) { m_cSectors.AddString (p_sector -> GetName()); } if (s_iDefSect >= m_cSectors.GetCount() ) s_iDefSect = 0; if (s_iDefType >= m_cTypes.GetCount() ) s_iDefType = 0; m_cSectors.SetCurSel(s_iDefSect); m_cTypes.SetCurSel(s_iDefType); } void EDT_DialogSelectType::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(EDT_DialogSelectType) DDX_Control(pDX, EDT_IDC_SECTORLIST, m_cSectors); DDX_Control(pDX, EDT_IDC_TYPESLIST, m_cTypes); //}}AFX_DATA_MAP } void EDT_DialogSelectType::OnOK (void) { // check sectors ! if (m_cSectors.GetCount() == 0) { m_bWasOK = FALSE; CDialog::OnCancel(); return; } // for sector we need the string m_cSectors.GetText(m_cSectors.GetCurSel(),m_csSelSector); // combo m_cSectors.GetLBText(m_cSectors.GetCurSel(), m_csSelSector); // for Type we need the type CString csTypeSelected; int i; // combo m_cTypes.GetLBText(m_cTypes.GetCurSel(), typeSelected); m_cTypes.GetText(m_cTypes.GetCurSel(), csTypeSelected); for (i=0;i