<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 1.4FLTK事件處理 對于一般構件的如按鈕,菜單等常用事件的處理一般可以使用回調函數實現,回調函數的原型是: ``` void XXX_callback( Fl_Widget *w,void *data ) { //添加自己處理的內容 } ``` 使用F1_Widget->callback( XXX_callback, data) 注冊回調函數 ``` /*************************************************************** 按鈕事件例子 ***************************************************************/ #include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Button.H> #include <FL/Fl_ask.H> void Btn01_cb(Fl_Widget *w, void *data) { ((Fl_Button *)w)->label((char *)data); fl_alert("Hello"); } int main(int argc, char **argv) { char *buff ="Hello"; Fl_Window* w = new Fl_Window(272, 144); Fl_Button* Btn01 = new Fl_Button(85, 50, 105, 25, "&Test callback"); Btn01->shortcut(FL_ALT+'t'); //定義按鈕的快捷鍵 Btn01->callback((Fl_Callback*)Btn01_cb,buff); //調用處理函數 buff作為參數 w->end(); w->show(argc, argv); return Fl::run(); } ``` 編譯運行程序,鼠標點擊按鈕,按鈕標簽會發生改變,并且會彈出提示框。 通常的callback是當構件的value改變時調用,可以使用when()改變為其他事件發生調用回調函數,主要事件有以下事件 | 事件 | 說明 | | --- | --- | | FL_WHEN_NERVER | 從不調用回調函數 | | FL_WHEN_CHANGED | 當構件值改變時調用 | | FL_WHEN_RELEASE | 當釋放按鍵或者鼠標并且構件值改變 | | FL_WHEN_RELEASE_ALWAYS | 當釋放按鍵或者鼠標,即使構件值沒有改變 | | FL_WHEN_ENTER_KEY | 按下Enter鍵并且構件值改變 | | FL_WHEN_ENTER_KEY_ALWAYS | 按下Enter鍵,即使構件值沒有改變 | 通過使用F1_Widget->when(FL_WHEN_XXXX)來改變回調事件。 ``` #include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Button.H> #include <FL/Fl_ask.H> void Btn01_cb(Fl_Widget *w, void *data) { fl_alert("Hello"); } int main(int argc, char **argv) { char *buff = "Hello"; Fl_Window* w = new Fl_Window(272, 144); Fl_Button* Btn01 = new Fl_Button(85, 50, 105, 25, "&Test callback"); Btn01->shortcut(FL_ALT + 't'); Btn01->callback((Fl_Callback*) Btn01_cb, buff); Btn01->when(FL_WHEN_RELEASE_ALWAYS); w->end(); w->show(argc, argv); return Fl::run(); } ``` 編譯運行程序,在按鈕上按下鼠標左鍵,移動到按鈕外,松開鼠標按鍵,仍然會彈出對話框,對比上面的兩程序,看看有什么不同。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看