/* ** AreaEditor - a program for editing SMAUG and ROM area files. ** Author: Nick Gammon ** http://www.gammon.com.au/ ** See Copyright Notice at the end of AreaEditor.h */ // ResetView.cpp : implementation file // #include "stdafx.h" #include "AreaEditor.h" #include "AreaEditorDoc.h" #include "ResetView.h" #include "ChooseMobDlg.h" #include "ChooseRoomDlg.h" #include "ChooseObjectDlg.h" #include "ChooseExitDlg.h" #include "defaults.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CResetView IMPLEMENT_DYNCREATE(CResetView, CFormView) CResetView::CResetView() : CFormView(CResetView::IDD) { //{{AFX_DATA_INIT(CResetView) m_arg1 = 0; m_arg2 = 0; m_arg3 = 0; m_extra = 0; m_command = -1; m_arg4 = 0; //}}AFX_DATA_INIT m_reset = NULL; } CResetView::~CResetView() { } #undef LOAD_VALUE #define LOAD_VALUE(field, value) \ field = m_reset->value #undef UNLOAD_VALUE #define UNLOAD_VALUE(field, value) \ do { \ if (field != m_reset->value) bChanged = true; \ m_reset->value = field; \ } while (false) void CResetView::DoDataExchange(CDataExchange* pDX) { bool bChanged = false; if (!pDX->m_bSaveAndValidate && m_reset) { LOAD_VALUE (m_arg1, arg1); LOAD_VALUE (m_arg2, arg2); LOAD_VALUE (m_arg3, arg3); LOAD_VALUE (m_arg4, arg4); LOAD_VALUE (m_extra, extra); switch (m_reset->command) { case 'M': m_command = 0; break; case 'O': m_command = 1; break; case 'G': m_command = 2; break; case 'E': m_command = 3; break; case 'P': m_command = 4; break; case 'D': m_command = 5; break; case 'R': m_command = 6; break; case 'T': m_command = 7; break; case 'H': m_command = 8; break; } // end of switch } // end of not saving and validating CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CResetView) DDX_Control(pDX, IDC_LABEL_ARG4, m_ctlLabelArg4); DDX_Control(pDX, IDC_DESC_ARG4, m_ctlDescArg4); DDX_Control(pDX, IDC_ARG4, m_ctlArg4); DDX_Control(pDX, IDC_WEAR_LOCATION_LABEL, m_ctlWearLocationLabel); DDX_Control(pDX, IDC_WEAR_LOCATION, m_ctlWearLocation); DDX_Control(pDX, IDC_MOBILE_BUTTON, m_ctlCommand); DDX_Control(pDX, IDC_EXTRA, m_ctlExtra); DDX_Control(pDX, IDC_ARG3, m_ctlArg3); DDX_Control(pDX, IDC_ARG2, m_ctlArg2); DDX_Control(pDX, IDC_ARG1, m_ctlArg1); DDX_Control(pDX, IDC_LABEL_EXTRA, m_ctlLabelExtra); DDX_Control(pDX, IDC_LABEL_ARG3, m_ctlLabelArg3); DDX_Control(pDX, IDC_LABEL_ARG2, m_ctlLabelArg2); DDX_Control(pDX, IDC_LABEL_ARG1, m_ctlLabelArg1); DDX_Control(pDX, IDC_DESC_EXTRA, m_ctlDescExtra); DDX_Control(pDX, IDC_DESC_ARG3, m_ctlDescArg3); DDX_Control(pDX, IDC_DESC_ARG2, m_ctlDescArg2); DDX_Control(pDX, IDC_DESC_ARG1, m_ctlDescArg1); DDX_Text(pDX, IDC_ARG1, m_arg1); DDX_Text(pDX, IDC_ARG2, m_arg2); DDX_Text(pDX, IDC_ARG3, m_arg3); DDX_Text(pDX, IDC_EXTRA, m_extra); DDX_Radio(pDX, IDC_MOBILE_BUTTON, m_command); DDX_Text(pDX, IDC_ARG4, m_arg4); //}}AFX_DATA_MAP if (!pDX->m_bSaveAndValidate && m_reset) { if (m_reset->m_pDoc->m_AreaType != eROM) { m_ctlArg4.ShowWindow (SW_HIDE); m_ctlDescArg4.ShowWindow (SW_HIDE); m_ctlArg4.ShowWindow (SW_HIDE); } // end of not ROM LoadComboBoxList (m_ctlWearLocation, ObjectWearList, -1); OnUpdateArg1 (); OnUpdateArg2 (); OnUpdateArg3 (); OnUpdateArg4 (); OnUpdateExtra (); OnSelchangeWearLocation (); } if (pDX->m_bSaveAndValidate && m_reset) { UNLOAD_VALUE (m_arg1, arg1); UNLOAD_VALUE (m_arg2, arg2); UNLOAD_VALUE (m_arg3, arg3); UNLOAD_VALUE (m_arg4, arg4); UNLOAD_VALUE (m_extra, extra); char c; switch (m_command) { case 0: c = 'M'; break; case 1: c = 'O'; break; case 2: c = 'G'; break; case 3: c = 'E'; break; case 4: c = 'P'; break; case 5: c = 'D'; break; case 6: c = 'R'; break; case 7: c = 'T'; break; case 8: c = 'H'; break; } // end of switch UNLOAD_VALUE (c, command); m_reset->m_pTreeCtrl->SetItemText (m_reset->m_hdlTreeItem, m_reset->Summary ()); if (bChanged) m_reset->m_pDoc->SetModifiedFlag (); } // end of saving and validating } BEGIN_MESSAGE_MAP(CResetView, CFormView) //{{AFX_MSG_MAP(CResetView) ON_EN_UPDATE(IDC_ARG1, OnUpdateArg1) ON_EN_UPDATE(IDC_ARG2, OnUpdateArg2) ON_EN_UPDATE(IDC_ARG3, OnUpdateArg3) ON_EN_UPDATE(IDC_EXTRA, OnUpdateExtra) ON_BN_CLICKED(IDC_MOBILE_BUTTON, OnCommand) ON_BN_CLICKED(IDC_ARG1_CHOOSE, OnArg1Choose) ON_BN_CLICKED(IDC_ARG1_GOTO, OnArg1Goto) ON_BN_CLICKED(IDC_ARG2_CHOOSE, OnArg2Choose) ON_BN_CLICKED(IDC_ARG2_GOTO, OnArg2Goto) ON_BN_CLICKED(IDC_ARG3_CHOOSE, OnArg3Choose) ON_BN_CLICKED(IDC_ARG3_GOTO, OnArg3Goto) ON_CBN_SELCHANGE(IDC_WEAR_LOCATION, OnSelchangeWearLocation) ON_BN_CLICKED(IDC_DOOR_BUTTON, OnCommand) ON_BN_CLICKED(IDC_EQUIP_BUTTON, OnCommand) ON_BN_CLICKED(IDC_GIVE_BUTTON, OnCommand) ON_BN_CLICKED(IDC_HIDE_BUTTON, OnCommand) ON_BN_CLICKED(IDC_OBJECT_BUTTON, OnCommand) ON_BN_CLICKED(IDC_PUT_BUTTON, OnCommand) ON_BN_CLICKED(IDC_RAND_BUTTON, OnCommand) ON_EN_UPDATE(IDC_ARG4, OnUpdateArg4) //}}AFX_MSG_MAP ON_MESSAGE(WM_KICKIDLE, OnKickIdle) ON_UPDATE_COMMAND_UI(IDC_ARG1_GOTO, OnUpdateGotoArg1) ON_UPDATE_COMMAND_UI(IDC_ARG2_GOTO, OnUpdateGotoArg2) ON_UPDATE_COMMAND_UI(IDC_ARG3_GOTO, OnUpdateGotoArg3) ON_UPDATE_COMMAND_UI(IDC_ARG1_CHOOSE, OnUpdateChooseArg1) ON_UPDATE_COMMAND_UI(IDC_ARG2_CHOOSE, OnUpdateChooseArg2) ON_UPDATE_COMMAND_UI(IDC_ARG3_CHOOSE, OnUpdateChooseArg3) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CResetView diagnostics #ifdef _DEBUG void CResetView::AssertValid() const { CFormView::AssertValid(); } void CResetView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CResetView message handlers void CResetView::OnUpdateArg1() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get amended text of window m_ctlArg1.GetWindowText(strField); // convert to number int iField = atoi (strField); CString strText; CString strLabel; CMobile * mob; CMUDObject * object; CRoom * room; switch (m_reset->command) { case 'M': // load mobile if (mob = pDoc->get_mob_index( iField)) strText = mob->Summary (); else if (mob = FindMob (iField)) strText = FullMobName (mob); else strText = CFormat ("Mobile #%i is not in this area", iField); strLabel = "Mobile"; break; case 'O': // load object case 'P': // put object into object case 'G': // give object to mob case 'E': // equip last mob case 'H': // hide last object if (object = pDoc->get_obj_index( iField)) strText = object->Summary (); else if (object = FindObj (iField)) strText = FullObjName (object); else strText = CFormat ("Object #%i is not in this area", iField); strLabel = "Object"; break; case 'D': // door case 'R': // randomise exits if (room = pDoc->get_room_index(iField)) strText = room->Summary (); else // if room is in a different area, say so if (room = FindRoom (iField)) strText = FullRoomName (room); else strText = CFormat ("Room #%i is not in any open area", iField); strLabel = "Room"; break; } // end of switch m_ctlDescArg1.SetWindowText (strText); m_ctlLabelArg1.SetWindowText (strLabel); UpdateDialogControls (AfxGetApp()->m_pMainWnd, false); } void CResetView::OnUpdateArg2() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get amended text of window for ARG1 m_ctlArg1.GetWindowText(strField); // convert to number int iField1 = atoi (strField); // get amended text of window for ARG2 m_ctlArg2.GetWindowText(strField); // convert to number int iField = atoi (strField); CString strText; CString strLabel; CString strExitDirection; CRoom * exitroom; CString strExitName; CRoom * room; CExit * exit; CAreaEditorDoc * area; switch (m_reset->command) { case 'M': case 'O': case 'P': case 'G': case 'E': strText = CFormat ("limit = %i", iField); strLabel = "Limit"; break; case 'D': strLabel = "Door"; if ((room = pDoc->get_room_index(iField1)) == NULL) { if ((room = FindRoom (iField1)) == NULL) { strText = CFormat ("Room #%i is not in any open area", iField1); break; } } area = room->m_pDoc; if (iField < 0 || iField > MAX_DIR+1) { strText = CFormat ("Exit #%i is not a valid direction", iField); break; } if ((exit = area->get_exit(room, iField)) == NULL) { strText = CFormat ("Door #%i is not in room #%i", iField, iField1); break; } if (!IS_SET( exit->exit_info, EX_ISDOOR ) ) { strText = CFormat ("Exit #%i in room #%i is not a door", iField, iField1); break; } strExitDirection = RoomDirectionList.ReturnName (exit->vdir, false); if (exitroom = pDoc->get_room_index (exit->vnum)) strExitName = exitroom->name; else if (exitroom = FindRoom (exit->vnum)) strExitName = FullRoomName (exitroom); else strExitName = "not in any open area"; strText = exit->Summary (); break; // end of 'D' case 'R': strText = CFormat ("max exits = %i", iField); strLabel = "Max exits"; break; } // end of switch m_ctlDescArg2.SetWindowText (strText); m_ctlLabelArg2.SetWindowText (strLabel); UpdateDialogControls (AfxGetApp()->m_pMainWnd, false); } void CResetView::OnUpdateArg3() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get amended text of window m_ctlArg3.GetWindowText(strField); // convert to number int iField = atoi (strField); CString strText; CString strLabel; CRoom * room; CMUDObject * object; int sel; switch (m_reset->command) { case 'M': case 'O': if (room = pDoc->get_room_index(iField)) strText = room->Summary (); else if (room = FindRoom (iField)) strText = FullRoomName (room); else strText = CFormat ("Room #%i is not in this area", iField); strLabel = "Room"; break; case 'P': if (object = pDoc->get_obj_index( iField)) strText = object->Summary (); else if (object = FindObj (iField)) strText = FullObjName (object); else strText = CFormat ("Object #%i is not in this area", iField); strLabel = "Dest. object"; break; case 'D': strLabel = "Lock"; switch (iField) { case 0: strText = "open"; break; case 1: strText = "closed"; break; case 2: strText = "closed and locked"; break; default: strText = "Bad lock"; break; } break; case 'E': strText = ObjectWearList.ReturnName (iField, false); // they have changed the wear location - update the combo box sel = m_ctlWearLocation.FindStringExact(-1, strText); m_ctlWearLocation.SetCurSel(sel); // CB_ERR will deselect the entry break; } // end of switch m_ctlDescArg3.SetWindowText (strText); m_ctlLabelArg3.SetWindowText (strLabel); UpdateDialogControls (AfxGetApp()->m_pMainWnd, false); } void CResetView::OnCommand() { // find which button they checked - this seems a bit longwinded, // but is the way MFC does it. HWND hWndCtrl = m_ctlCommand; int value = -1; // walk all children in group int iButton = 0; do { if (::SendMessage(hWndCtrl, WM_GETDLGCODE, 0, 0L) & DLGC_RADIOBUTTON) { // control in group is a radio button if (::SendMessage(hWndCtrl, BM_GETCHECK, 0, 0L) != 0) value = iButton; iButton++; } else { TRACE0("Warning: skipping non-radio button in group.\n"); } hWndCtrl = ::GetWindow(hWndCtrl, GW_HWNDNEXT); } while (hWndCtrl != NULL && !(GetWindowLong(hWndCtrl, GWL_STYLE) & WS_GROUP)); switch (value) { case 0: m_reset->command = 'M'; break; case 1: m_reset->command = 'O'; break; case 2: m_reset->command = 'G'; break; case 3: m_reset->command = 'E'; break; case 4: m_reset->command = 'P'; break; case 5: m_reset->command = 'D'; break; case 6: m_reset->command = 'R'; break; case 7: m_reset->command = 'T'; break; case 8: m_reset->command = 'H'; break; } // update meanings of each field OnUpdateArg1 (); OnUpdateArg2 (); OnUpdateArg3 (); OnUpdateArg4 (); OnUpdateExtra (); OnSelchangeWearLocation (); } void CResetView::OnUpdateExtra() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CFormView::OnInitDialog() // function to send the EM_SETEVENTMASK message to the control // with the ENM_UPDATE flag ORed into the lParam mask. // TODO: Add your control notification handler code here } void CResetView::OnArg1Choose() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get text of window m_ctlArg1.GetWindowText(strField); // convert to number int iField = atoi (strField); CChooseMobDlg mob_dlg; CChooseRoomDlg room_dlg; CChooseObjectDlg object_dlg; switch (m_reset->command) { case 'M': // mobile mob_dlg.m_pDoc = pDoc; mob_dlg.m_iSelectedMob = iField; if (mob_dlg.DoModal () == IDOK) if (mob_dlg.m_iSelectedMob != -1) m_ctlArg1.SetWindowText(CFormat ("%i", mob_dlg.m_iSelectedMob)); break; case 'D': // door case 'R': // randomise exits room_dlg.m_pDoc = pDoc; room_dlg.m_iSelectedRoom = iField; if (room_dlg.DoModal () == IDOK) if (room_dlg.m_iSelectedRoom != -1) m_ctlArg1.SetWindowText(CFormat ("%i", room_dlg.m_iSelectedRoom)); break; case 'O': // load object case 'P': // put object into room case 'G': // give object to mob case 'E': // equip last mob case 'H': // hide last object object_dlg.m_pDoc = pDoc; object_dlg.m_iSelectedObject = iField; if (object_dlg.DoModal () == IDOK) if (object_dlg.m_iSelectedObject != -1) m_ctlArg1.SetWindowText(CFormat ("%i", object_dlg.m_iSelectedObject)); break; default: ::AfxMessageBox ("Choosing for this reset type not implemented yet, sorry"); break; } // end of switch } // end of CResetView::OnArg1Choose() void CResetView::OnArg1Goto() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get text of window m_ctlArg1.GetWindowText(strField); // convert to number int iField = atoi (strField); switch (m_reset->command) { case 'M': // mobile pDoc->goto_mob (iField); break; case 'D': // door case 'R': // randomise exits pDoc->goto_room (iField); break; case 'O': // load object case 'P': // put object into room case 'G': // give object to mob case 'E': // equip last mob case 'H': // hide last object pDoc->goto_object (iField); break; default: ::AfxMessageBox ("Go to for this reset type not implemented yet, sorry"); break; } // end of switch } LRESULT CResetView::OnKickIdle(WPARAM, LPARAM) { UpdateDialogControls (AfxGetApp()->m_pMainWnd, false); return 0; } // end of CResetView::OnKickIdle void CResetView::OnUpdateChooseArg1(CCmdUI* pCmdUI) { switch (m_reset->command) { case 'M': // load mobile case 'D': // door case 'R': // randomise exits case 'O': // load object case 'P': // put object into room case 'G': // give object to mob case 'E': // equip last mob case 'H': // hide last object pCmdUI->Enable (true); break; default: pCmdUI->Enable (false); break; } // end of switch } // end of CResetView::OnUpdateChooseArg1 void CResetView::OnUpdateGotoArg1(CCmdUI* pCmdUI) { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get amended text of window m_ctlArg1.GetWindowText(strField); // convert to number int iField = atoi (strField); switch (m_reset->command) { case 'M': // load mobile pCmdUI->Enable (FindMob (iField) != NULL); break; case 'D': // door case 'R': // randomise exits pCmdUI->Enable (FindRoom (iField) != NULL); break; case 'O': // load object case 'P': // put object into room case 'G': // give object to mob case 'E': // equip last mob case 'H': // hide last object pCmdUI->Enable (FindObj (iField) != NULL); break; default: pCmdUI->Enable (false); break; } // end of switch } // end of CResetView::OnUpdateGotoArg1 void CResetView::OnUpdateChooseArg2(CCmdUI* pCmdUI) { switch (m_reset->command) { case 'D': pCmdUI->Enable (true); break; default: pCmdUI->Enable (false); break; } // end of switch } // end of CResetView::OnUpdateChooseArg2 void CResetView::OnUpdateGotoArg2(CCmdUI* pCmdUI) { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get amended text of window for ARG1 m_ctlArg1.GetWindowText(strField); // convert to number int iField1 = atoi (strField); // get amended text of window m_ctlArg2.GetWindowText(strField); // convert to number int iField = atoi (strField); CRoom * room; switch (m_reset->command) { case 'D': if ((room = FindRoom (iField1)) == NULL) { pCmdUI->Enable (false); break; // room not in area, can't go to it } pCmdUI->Enable (pDoc->get_exit (room, iField) != NULL); break; default: pCmdUI->Enable (false); break; } // end of switch } // end of CResetView::OnUpdateGotoArg2 void CResetView::OnUpdateChooseArg3(CCmdUI* pCmdUI) { switch (m_reset->command) { case 'M': // load mobile case 'O': // load object case 'P': // put object pCmdUI->Enable (true); break; default: pCmdUI->Enable (false); break; } // end of switch } // end of CResetView::OnUpdateChooseArg3 void CResetView::OnUpdateGotoArg3(CCmdUI* pCmdUI) { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get amended text of window m_ctlArg3.GetWindowText(strField); // convert to number int iField = atoi (strField); switch (m_reset->command) { case 'M': // load mobile case 'O': // load object pCmdUI->Enable (FindRoom (iField) != NULL); break; case 'P': // put object pCmdUI->Enable (FindObj (iField) != NULL); break; default: pCmdUI->Enable (false); break; } // end of switch } // end of CResetView::OnUpdateGotoArg3 void CResetView::OnArg2Choose() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CRoom * room; CString strField; // get amended text of window for ARG1 m_ctlArg1.GetWindowText(strField); // convert to number int iField1 = atoi (strField); // get text of window m_ctlArg2.GetWindowText(strField); // convert to number int iField = atoi (strField); CChooseExitDlg exit_dlg; switch (m_reset->command) { case 'D': // door if ((room = FindRoom (iField1)) == NULL) return; // room not in area, can't choose door for it exit_dlg.m_ExitList = &room->exitlist; exit_dlg.m_iSelectedExit = iField; exit_dlg.m_pDoc = pDoc; if (exit_dlg.DoModal () == IDOK) if (exit_dlg.m_iSelectedExit != -1) m_ctlArg2.SetWindowText(CFormat ("%i", exit_dlg.m_iSelectedExit)); break; default: ::AfxMessageBox ("Choosing for this reset type not implemented yet, sorry"); break; } // end of switch } void CResetView::OnArg2Goto() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get amended text of window for ARG1 m_ctlArg1.GetWindowText(strField); // convert to number int iField1 = atoi (strField); // get text of window m_ctlArg2.GetWindowText(strField); // convert to number int iField = atoi (strField); CRoom * room; switch (m_reset->command) { case 'D': // door if ((room = FindRoom (iField1)) == NULL) return; // room not in area, can't choose door for it pDoc->goto_exit (room, iField); break; default: ::AfxMessageBox ("Go to for this reset type not implemented yet, sorry"); break; } // end of switch } void CResetView::OnArg3Choose() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get text of window m_ctlArg3.GetWindowText(strField); // convert to number int iField = atoi (strField); CChooseMobDlg mob_dlg; CChooseRoomDlg room_dlg; CChooseObjectDlg object_dlg; switch (m_reset->command) { case 'M': // mobile case 'O': room_dlg.m_pDoc = pDoc; room_dlg.m_iSelectedRoom = iField; if (room_dlg.DoModal () == IDOK) if (room_dlg.m_iSelectedRoom != -1) m_ctlArg3.SetWindowText(CFormat ("%i", room_dlg.m_iSelectedRoom)); break; case 'P': object_dlg.m_pDoc = pDoc; object_dlg.m_iSelectedObject = iField; object_dlg.m_iItemType = eContainerItem; object_dlg.m_iWantedType = ITEM_CONTAINER; if (object_dlg.DoModal () == IDOK) if (object_dlg.m_iSelectedObject != -1) m_ctlArg3.SetWindowText(CFormat ("%i", object_dlg.m_iSelectedObject)); break; default: ::AfxMessageBox ("Choosing for this reset type not implemented yet, sorry"); break; } // end of switch } void CResetView::OnArg3Goto() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get text of window m_ctlArg3.GetWindowText(strField); // convert to number int iField = atoi (strField); switch (m_reset->command) { case 'M': // mobile case 'O': pDoc->goto_room (iField); break; case 'P': // put object pDoc->goto_object (iField); break; default: ::AfxMessageBox ("Go to for this reset type not implemented yet, sorry"); break; } // end of switch } void CResetView::OnSelchangeWearLocation() { int i; if (m_reset->command == 'E') { if (UnloadComboBox (m_ctlWearLocation, i)) m_ctlArg3.SetWindowText(CFormat ("%i", i)); m_ctlWearLocation.ShowWindow(SW_SHOW); m_ctlWearLocationLabel.ShowWindow(SW_SHOW); } else { m_ctlWearLocation.ShowWindow(SW_HIDE); m_ctlWearLocationLabel.ShowWindow(SW_HIDE); } } void CResetView::OnUpdateArg4() { CAreaEditorDoc* pDoc = (CAreaEditorDoc* ) GetDocument(); ASSERT_VALID(pDoc); CString strField; // get amended text of window m_ctlArg4.GetWindowText(strField); // convert to number int iField = atoi (strField); CString strText; CString strLabel; if (m_reset->m_pDoc->m_AreaType == eROM) switch (m_reset->command) { case 'M': strText = CFormat ("limit = %i", iField); strLabel = "Limit"; break; case 'P': strText = CFormat ("limit = %i", iField); strLabel = "Limit"; break; } // end of switch m_ctlDescArg4.SetWindowText (strText); m_ctlLabelArg4.SetWindowText (strLabel); UpdateDialogControls (AfxGetApp()->m_pMainWnd, false); }