0 返信 最新の回答 日時: Oct 19, 2006 7:21 PM ユーザー:(なや)

    int型エディットボックスのような処理をしたい

    Level 1
      なやです。
      お世話になります。

      エディットボックスのイベント処理について教えて下さい。
      目的はIntEditBoxWidgetのような操作です。

      あるエディットボックスに文字を入力し、入力された文字が不当なものだとメッセージボックスを表示させて入力前の文字列を表示させるようにしたいのですが上手くいきません。

      WEditBoxEventHandlerのGiveUpKeyFocus(),GetKeyFocus()を使ってメッセージの表示と入力前の文字列を表示させることはできました。

      しかし、エディットボックスにフォーカスがある時に、例えばダイアログ上にある別のボタンを押すとメッセージを表示させた後にボタンの処理が走ってしまいます。

      メッセージを表示させた後に、その他のイベントを中断するなどの処理はないでしょうか?
      それともGiveUpKeyFocus()やGetKeyFocus()を使っていることが間違いでしょうか?

      コードの一部を載せておきます。

      -----

      // エディットボックス用イベントハンドラ
      class MyEditBoxEventHandler : public WEditBoxEventHandler
      {
      public:
      MyEditBoxEventHandler(IPMUnknown *boss): WEditBoxEventHandler(boss){ fsaveText = "" ;};

      ‾MyEditBoxEventHandler() {};
      virtual bool16 KeyUp (IEvent *e) {EnableOKButton(e) ; return kFalse ;} ;
      virtual bool16 Update (IEvent *e) {EnableOKButton(e) ; return kFalse ;} ;
      virtual bool16 GiveUpKeyFocus(IEvent *e) ;
      virtual bool16 GetKeyFocus(IEvent *e) ;
      };

      bool16 MyEditBoxEventHandler::GiveUpKeyFocus(IEvent *e)
      {
      InterfacePtr< ITextControlData> text(this, UseDefaultIID());
      if(text){
      if(文字が不当)){
      CAlert::ErrorAlert(message);
      text->SetString(text) ;
      return kFalse ;
      }
      }
      return kTrue ;
      }
      -----

      ご教授よろしくお願いします。