コード例 #1
0
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;
}