📄 uguislider.c
字号:
/*----------------------------------------------------------------------------- File: UgUISlider.c Description: ProTK doc code sample PTC File Date Version Author Vers Comment--------- ------- -------- ----- ---------------------------------------------25-Oct-00 J-01-21 Scott $$1 Submitted.-----------------------------------------------------------------------------*/#include <ProToolkit.h>#include <ProDimension.h>#include <ProFeature.h>#include <ProSelection.h>#include <ProUICheckbutton.h>#include <ProUIPushbutton.h>#include <ProUIDialog.h>#include <ProUIInputpanel.h>#include <ProUILabel.h>#include <ProUISlider.h>#define OK 1#define CANCEL 0static ProName msgfil;/*====================================================================*\ FUNCTION : UsrModAngle() PURPOSE : Command to modify an angular dimension using a slider \*====================================================================*/ UsrModAngle() { ProError status; ProSelection *sel; int n_sel, angle; double value; ProName wname; ProCharName name; ProCharLine prompt; ProDimension dimension; ProDimensiontype dtype; while(1) { /*--------------------------------------------------------------------*\ Select a feature or a dimension \*--------------------------------------------------------------------*/ status = ProSelect("feature,dimension",1, NULL,NULL,NULL,NULL,&sel,&n_sel); if(status != PRO_TK_NO_ERROR || n_sel < 1) break; ProSelectionModelitemGet(sel[0], &dimension);/*--------------------------------------------------------------------*\ If it's a feature, display the dimensions \*--------------------------------------------------------------------*/ if(dimension.type == PRO_FEATURE) ProFeatureParamsDisplay(sel[0], PRO_DIM_PARAM); else { /*--------------------------------------------------------------------*\ Check that it's angular \*--------------------------------------------------------------------*/ ProDimensionTypeGet(&dimension, &dtype); if(dtype != PRODIMTYPE_ANGLE) continue;/*--------------------------------------------------------------------*\ Get the current value \*--------------------------------------------------------------------*/ ProDimensionValueGet(&dimension, &value); angle = (int)value;/*--------------------------------------------------------------------*\ Get the name and form a prompt string \*--------------------------------------------------------------------*/ ProDimensionSymbolGet(&dimension, wname); ProWstringToString(name, wname); sprintf(prompt,"Enter the new value of %s",name);/*--------------------------------------------------------------------*\ Input the new angle using a dialog box with a slider \*--------------------------------------------------------------------*/ if(!UsrAngleGet(prompt, &angle)) continue;/*--------------------------------------------------------------------*\ Set the new value and update the dim display \*--------------------------------------------------------------------*/ value = (double)angle; if(ProDimensionValueSet(&dimension, value) != PRO_TK_NO_ERROR) { ProMessageDisplay(msgfil,"USER Could not modify dimension"); continue; } ProDimensionDisplayUpdate(&dimension); } } }/*====================================================================*\ FUNCTION : UsrOKAction() PURPOSE : Action function for the OK button \*====================================================================*/ static void UsrSliderOKAction( char *dialog, char *component, ProAppData data) { ProUIDialogExit(dialog, OK); } /*====================================================================*\ FUNCTION : UsrCancelAction() PURPOSE : Action function for the CANCEL button \*====================================================================*/ static void UsrSliderCancelAction( char *dialog, char *component, ProAppData data) { ProUIDialogExit(dialog, CANCEL); } /*====================================================================*\ FUNCTION : UsrSliderAction() PURPOSE : Callback for movement of the slider \*====================================================================*/ void UsrSliderAction( char *dialog, char *component, ProAppData data) { ProName wstr; ProCharName str; int *angle = (int*)data;/*--------------------------------------------------------------------*\ Get the new value \*--------------------------------------------------------------------*/ ProUISliderIntegerGet(dialog,component,angle);/*--------------------------------------------------------------------*\ Set the input panel to the same value \*--------------------------------------------------------------------*/ sprintf(str,"%d",*angle); ProStringToWstring(wstr, str); ProUIInputpanelValueSet(dialog,"InputPanel",wstr); } /*====================================================================*\ FUNCTION : UsrInputpanelAction() PURPOSE : Callback for input to the input panel \*====================================================================*/ void UsrInputpanelAction( char *dialog, char *component, ProAppData data) { wchar_t *wstr; ProCharName str; int *angle = (int*)data;/*--------------------------------------------------------------------*\ Get the current value as an integer \*--------------------------------------------------------------------*/ ProUIInputpanelValueGet(dialog,component,&wstr); ProWstringToString(str, wstr); *angle = atoi(str);/*--------------------------------------------------------------------*\ Set the slider to the same value \*--------------------------------------------------------------------*/ ProUISliderIntegerSet(dialog,"Slider",*angle); }/*====================================================================*\ FUNCTION : UsrAngleGet() PURPOSE : Input an angle using a dialog with a slider \*====================================================================*/ int UsrAngleGet( char *text, /* Text of the prompt displayed on the dialog */ int *angle) { int status; ProName wstr; ProCharName str; ProLine wline;/*--------------------------------------------------------------------*\ Load the dialog from the resource file \*--------------------------------------------------------------------*/ ProUIDialogCreate("angle","angle");/*--------------------------------------------------------------------*\ Set the prompt as the text of the Label component \*--------------------------------------------------------------------*/ ProStringToWstring(wline,text); ProUILabelTextSet("angle","Prompt",wline);/*--------------------------------------------------------------------*\ Set the OK and Cancel callbacks \*--------------------------------------------------------------------*/ ProUIPushbuttonActivateActionSet("angle","OK", UsrSliderOKAction,NULL); ProUIPushbuttonActivateActionSet("angle","Cancel", UsrSliderCancelAction,NULL);/*--------------------------------------------------------------------*\ Set the slider action and initial value \*--------------------------------------------------------------------*/ ProUISliderUpdateActionSet("angle","Slider",UsrSliderAction, angle); ProUISliderIntegerSet("angle","Slider",*angle);/*--------------------------------------------------------------------*\ Set the input panel action and initial value \*--------------------------------------------------------------------*/ ProUIInputpanelActivateActionSet("angle","InputPanel", UsrInputpanelAction,angle); sprintf(str,"%d",*angle); ProStringToWstring(wstr, str); ProUIInputpanelValueSet("angle","InputPanel",wstr);/*--------------------------------------------------------------------*\ Display and activate the dialog \*--------------------------------------------------------------------*/ ProUIDialogActivate("angle",&status);/*--------------------------------------------------------------------*\ Dispose of the dialog \*--------------------------------------------------------------------*/ ProUIDialogDestroy("angle"); return(status==OK?1:0); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -