long CGumpEditorView::AddControl(WPARAM wParam, LPARAM lParam) { // Creates a new control on the screen, caught from the // drop event from the toolbar control UINT nType = wParam; CPoint point(lParam>>16,lParam&0xffff); CGumpPtr pGump = GetDocument()->GetSelectedGump(); if (!pGump) return 0; CGumpControlTypeDlg dlg; if (IDOK != dlg.DoModal()) return 0; int controlType = dlg.GetControlType(); CDiagramEntity* obj=NULL; if (controlType==dlg.PICTURE) { obj = new CGumpPicture(pGump); } else if (controlType==dlg.BORDER) { obj = new CGumpBorder(pGump); } else if (controlType==dlg.PAPERDOLL) { obj = new CGumpPaperdoll(pGump); } else if (controlType==dlg.BUTTON) { CGumpPtr pGump2 = GetDocument()->FindGump(pGump->GetGumpID()+1,pGump->GetWidth(),pGump->GetHeight()); obj = new CGumpButton(pGump,pGump,pGump2 ? pGump2 : pGump); } else if (controlType==dlg.CHECKBOX) { CGumpPtr pGump2 = GetDocument()->FindGump(pGump->GetGumpID()+1,pGump->GetWidth(),pGump->GetHeight()); obj = new CGumpCheckbox(pGump, pGump2); } else if (controlType==dlg.RADIO) { CGumpPtr pGump2 = GetDocument()->FindGump(pGump->GetGumpID()+1,pGump->GetWidth(),pGump->GetHeight()); obj = new CGumpRadio(pGump, pGump2); } if (!obj) return 0; CSize size = obj->GetRect().Size(); CRect rect(point,point+size); m_editor.AdjustRect(rect); obj->SetRect(rect); m_editor.UnselectAll(); m_editor.SelectObject( obj, TRUE); m_editor.AddObject( obj ); return 0; }