⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 questdlg.m

📁 很多matlab的源代码
💻 M
字号:
function ButtonName=questdlg(Question,Title,Btn1,Btn2,Btn3,Default)%QUESTDLG Question dialog box.%  ButtonName=QUESTDLG(Question) creates a modal dialog box that %  automatically wraps the cell array or string (vector or matrix) %  Question to fit an appropriately sized window.  The name of the %  button that is pressed is returned in ButtonName.  The Title of %  the figure may be specified by adding a second string argument.  %  Question will be interpreted as a normal string.  %%  The default set of buttons names for QUESTDLG are 'Yes','No' and %  'Cancel'.  The default answer for the above calling syntax is 'Yes'.  %  This can be changed by adding a third argument which specifies the %  default Button.  i.e. ButtonName=questdlg(Question,Title,'No').%%  Up to 3 custom button names may be specified by entering%  the button string name(s) as additional arguments to the function %  call.  If custom ButtonName's are entered, the default ButtonName%  must be specified by adding an extra argument DEFAULT, i.e.%%    ButtonName=questdlg(Question,Title,Btn1,Btn2,DEFAULT);%%  where DEFAULT=Btn1.  This makes Btn1 the default answer.%%  To use TeX interpretation for the Question string, a data%  structure must be used for the last argument, i.e.%%    ButtonName=questdlg(Question,Title,Btn1,Btn2,OPTIONS);%%  The OPTIONS structure must include the fields Default and Interpreter.  %  Interpreter may be 'none' or 'tex' and Default is the default button%  name to be used.%  A sample application of this function is:%%    ButtonName=questdlg('What is your wish?', ...%                        'Genie Question', ...%                        'Food','Clothing','Money','Money');%%  %    switch ButtonName,%       case 'Food', %        disp('Food is delivered');%      case 'Clothing',%        disp('The Emperor''s  new clothes have arrived.')%      case 'Money',%        disp('A ton of money falls out the sky.');%    end % switch%%  See also TEXTWRAP, INPUTDLG.%  Author: L. Dean%  Copyright (c) 1984-98 by The MathWorks, Inc.%  $Revision: 5.37 $%      Modified 05-Nov-2000, by Jordan Rosenthal (jr@ece.gatech.edu)%               Added drawnow commands to get rid of redraw bug that occurs%               on Win systems.  The bug should be fixed in Version 6.if nargin<1,error('Too few arguments for QUESTDLG');endInterpreter='none';if ~iscell(Question),Question=cellstr(Question);endif strcmp(Question{1},'#FigKeyPressFcn'),  QuestFig=get(0,'CurrentFigure');  AsciiVal= abs(get(QuestFig,'CurrentCharacter'));  if ~isempty(AsciiVal),    if AsciiVal==32 | AsciiVal==13,      set(QuestFig,'UserData',1);      uiresume(QuestFig);    end %if AsciiVal  end %if ~isempty  returnend%%%%%%%%%%%%%%%%%%%%%%%% General Info. %%%%%%%%%%%%%%%%%%%%%%%%Black      =[0       0        0      ]/255;LightGray  =[192     192      192    ]/255;LightGray2 =[160     160      164    ]/255;MediumGray =[128     128      128    ]/255;White      =[255     255      255    ]/255;%%%%%%%%%%%%%%%%%%%%%%% Nargin Check %%%%%%%%%%%%%%%%%%%%%%%if nargout>1,error('Wrong number of output arguments for QUESTDLG');endif nargin==1,Title=' ';endif nargin<=2, Default='Yes';endif nargin==3, Default=Btn1;endif nargin<=3, Btn1='Yes'; Btn2='No'; Btn3='Cancel';NumButtons=3;endif nargin==4, Default=Btn2;Btn2=[];Btn3=[];NumButtons=1;endif nargin==5, Default=Btn3;Btn3=[];NumButtons=2;endif nargin==6, NumButtons=3;endif nargin>6, error('Too many input arguments');NumButtons=3;endif isstruct(Default),  Interpreter=Default.Interpreter;  Default=Default.Default;end%%%%%%%%%%%%%%%%%%%%%%%%%% Create QuestFig %%%%%%%%%%%%%%%%%%%%%%%%%%FigPos=get(0,'DefaultFigurePosition');FigWidth=75;FigHeight=45;FigPos(3:4)=[FigWidth FigHeight];QuestFig=dialog(                                               ...               'Visible'         ,'off'                      , ...               'Name'            ,Title                      , ...               'Pointer'         ,'arrow'                    , ...               'Units'           ,'points'                   , ...               'Position'        ,FigPos                     , ...               'KeyPressFcn'     ,'questdlg #FigKeyPressFcn;', ...               'UserData'        ,0                          , ...               'IntegerHandle'   ,'off'                      , ...               'WindowStyle'     ,'normal'                   , ...                'HandleVisibility','callback'                 , ...               'Tag'             ,Title                        ...               );%%%%%%%%%%%%%%%%%%%%%%%% Set Positions %%%%%%%%%%%%%%%%%%%%%%%%DefOffset=3;IconWidth=32;IconHeight=32;IconXOffset=DefOffset;IconYOffset=FigHeight-DefOffset-IconHeight;IconCMap=[Black;get(QuestFig,'Color')];DefBtnWidth=40;BtnHeight=20;BtnYOffset=DefOffset;BtnFontSize=get(0,'FactoryUIControlFontSize');BtnWidth=DefBtnWidth;ExtControl=uicontrol(QuestFig   , ...                     'Style'    ,'pushbutton', ...                     'String'   ,' '         , ...                     'FontUnits','points'   , ...                                          'FontSize' ,BtnFontSize   ...                     );                     for lp=1:NumButtons,  eval(['ExtBtnString=Btn' num2str(lp) ';']);  set(ExtControl,'String',ExtBtnString);  BtnExtent=get(ExtControl,'Extent');  BtnWidth=max(BtnWidth,BtnExtent(3)+8);end % lpdelete(ExtControl);MsgTxtXOffset=IconXOffset+IconWidth;FigWidth=max(FigWidth,MsgTxtXOffset+NumButtons*(BtnWidth+2*DefOffset));FigPos(3)=FigWidth;set(QuestFig,'Position',FigPos);BtnXOffset=zeros(NumButtons,1);if NumButtons==1,  BtnXOffset=(FigWidth-BtnWidth)/2;elseif NumButtons==2,  BtnXOffset=[MsgTxtXOffset              FigWidth-DefOffset-BtnWidth];elseif NumButtons==3,  BtnXOffset=[MsgTxtXOffset              0              FigWidth-DefOffset-BtnWidth];  BtnXOffset(2)=(BtnXOffset(1)+BtnXOffset(3))/2;endMsgTxtYOffset=DefOffset+BtnYOffset+BtnHeight;MsgTxtWidth=FigWidth-DefOffset-MsgTxtXOffset-IconWidth;MsgTxtHeight=FigHeight-DefOffset-MsgTxtYOffset;MsgTxtForeClr=Black;MsgTxtBackClr=get(QuestFig,'Color');CBString='uiresume(gcf)';for lp=1:NumButtons,  eval(['ButtonString=Btn',num2str(lp),';']);  ButtonTag=['Btn' num2str(lp)];    BtnHandle(lp)=uicontrol(QuestFig            , ...                         'Style'              ,'pushbutton', ...                         'Units'              ,'points'    , ...                         'Position'           ,[ BtnXOffset(lp) BtnYOffset  ...                                                 BtnWidth       BtnHeight   ...                                               ]           , ...                         'CallBack'           ,CBString    , ...                         'String'             ,ButtonString, ...                         'HorizontalAlignment','center'    , ...                         'FontUnits'          ,'points'    , ...                         'FontSize'           ,BtnFontSize , ...                         'Tag'                ,ButtonTag     ...                         );                                   endMsgHandle=uicontrol(QuestFig            , ...                   'Style'              ,'text'         , ...                   'Units'              ,'points'       , ...                   'Position'           ,[MsgTxtXOffset      ...                                          MsgTxtYOffset      ...                                          0.95*MsgTxtWidth   ...                                          MsgTxtHeight       ...                                         ]              , ...                   'String'             ,{' '}          , ...                   'Tag'                ,'Question'     , ...                   'HorizontalAlignment','left'         , ...                       'FontUnits'          ,'points'       , ...                   'FontWeight'         ,'bold'         , ...                   'FontSize'           ,BtnFontSize    , ...                   'BackgroundColor'    ,MsgTxtBackClr  , ...                   'ForegroundColor'    ,MsgTxtForeClr    ...                   );[WrapString,NewMsgTxtPos]=textwrap(MsgHandle,Question,75);NumLines=size(WrapString,1);% The +2 is to add some slop for the border of the control.MsgTxtWidth=max(MsgTxtWidth,NewMsgTxtPos(3)+2);MsgTxtHeight=NewMsgTxtPos(4)+2;MsgTxtXOffset=IconXOffset+IconWidth+DefOffset;FigWidth=max(NumButtons*(BtnWidth+DefOffset)+DefOffset, ...             MsgTxtXOffset+MsgTxtWidth+DefOffset);        % Center Vertically around icon  if IconHeight>MsgTxtHeight,  IconYOffset=BtnYOffset+BtnHeight+DefOffset;  MsgTxtYOffset=IconYOffset+(IconHeight-MsgTxtHeight)/2;  FigHeight=IconYOffset+IconHeight+DefOffset;    % center around text    else,  MsgTxtYOffset=BtnYOffset+BtnHeight+DefOffset;  IconYOffset=MsgTxtYOffset+(MsgTxtHeight-IconHeight)/2;  FigHeight=MsgTxtYOffset+MsgTxtHeight+DefOffset;    end    if NumButtons==1,  BtnXOffset=(FigWidth-BtnWidth)/2;elseif NumButtons==2,  BtnXOffset=[(FigWidth-DefOffset)/2-BtnWidth              (FigWidth+DefOffset)/2                    ];          elseif NumButtons==3,  BtnXOffset(2)=(FigWidth-BtnWidth)/2;  BtnXOffset=[BtnXOffset(2)-DefOffset-BtnWidth              BtnXOffset(2)              BtnXOffset(2)+BtnWidth+DefOffset             ];              endScreenUnits=get(0,'Units');set(0,'Units','points');ScreenSize=get(0,'ScreenSize');set(0,'Units',ScreenUnits);FigPos(1)=(ScreenSize(3)-FigWidth)/2;FigPos(2)=(ScreenSize(4)-FigHeight)/2;FigPos(3:4)=[FigWidth FigHeight];set(QuestFig ,'Position',FigPos);BtnPos=get(BtnHandle,{'Position'});BtnPos=cat(1,BtnPos{:});BtnPos(:,1)=BtnXOffset;BtnPos=num2cell(BtnPos,2);  set(BtnHandle,{'Position'},BtnPos);  delete(MsgHandle);AxesHandle=axes('Parent',QuestFig,'Position',[0 0 1 1],'Visible','off');MsgHandle=text( ...    'Parent'              ,AxesHandle                      , ...    'Units'               ,'points'                        , ...    'FontUnits'          ,'points'       , ...    'FontSize'           ,BtnFontSize    , ...    'HorizontalAlignment' ,'left'                          , ...    'VerticalAlignment'   ,'bottom'                        , ...    'HandleVisibility'    ,'callback'                      , ...    'Position'            ,[MsgTxtXOffset MsgTxtYOffset 0], ...    'String'              ,WrapString                      , ...    'Interpreter'         ,Interpreter                     , ...    'Tag'                 ,'Question'                        ...    );IconAxes=axes(                                      ...             'Units'       ,'points'              , ...             'Parent'      ,QuestFig              , ...               'Position'    ,[IconXOffset IconYOffset  ...                             IconWidth IconHeight], ...             'NextPlot'    ,'replace'             , ...             'Tag'         ,'IconAxes'              ...             );          set(QuestFig ,'NextPlot','add');IconData= ...[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2; 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2; 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2; 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2; 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2];Img=image('CData',IconData,'Parent',IconAxes);set(QuestFig, 'Colormap', IconCMap);set(IconAxes, ...   'Visible','off'           , ...   'YDir'   ,'reverse'       , ...   'XLim'   ,get(Img,'XData'), ...   'YLim'   ,get(Img,'YData')  ...   );set(findobj(QuestFig),'HandleVisibility','callback');set(QuestFig ,'WindowStyle','modal','Visible','on');drawnow;%--- Next two lines added by Jordan Rosenthal to fix bug that occurs on Win systems.  ---%set(QuestFig, 'Visible','Off');set(QuestFig, 'Visible','On');uiwait(QuestFig);TempHide=get(0,'ShowHiddenHandles');set(0,'ShowHiddenHandles','on');if any(get(0,'Children')==QuestFig),  if get(QuestFig,'UserData'),    ButtonName=Default;  else,    ButtonName=get(get(QuestFig,'CurrentObject'),'String');  end  delete(QuestFig);else  ButtonName=Default;endset(0,'ShowHiddenHandles',TempHide);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -