INT_PTR EllipseTypeInDlgProc::DlgProc(TimeValue t,IParamMap2 *map,HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_TI_CREATE: { Matrix3 tm(1); Point3 pos = theEllispeTypeInBlock.GetPoint3(PB_TI_POS); float length = theEllispeTypeInBlock.GetFloat(PB_TI_LENGTH); float width = theEllispeTypeInBlock.GetFloat(PB_TI_WIDTH); float thickness = theEllispeTypeInBlock.GetFloat(PB_TI_THICKNESS); tm.SetTrans(pos); ro->suspendSnap = FALSE; EllipseObject* new_object = dynamic_cast<EllipseObject*>(ro->ip->NonMouseCreate(tm)); if(new_object) { new_object->GetParamBlockByID(ellipse_params)->SetValue(PB_LENGTH, t, length); new_object->GetParamBlockByID(ellipse_params)->SetValue(PB_WIDTH, t, width); new_object->GetParamBlockByID(ellipse_params)->SetValue(PB_THICKNESS, t, thickness); } return TRUE; } } break; } return FALSE; }