<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 1.5FLTK消息處理 在FLTK中是通過Fl_Widegt::handle(),虛擬函數來處理系統的消息。我們可以查看Fltk的源代碼來分析系統是怎樣處理一些系統消息的,如按鈕的消息處理 ``` /******************************************************* Fl_Button中處理消息的代碼,省略了具體的處理代碼 *******************************************************/ int Fl_Button::handle(int event) { switch (event) { case FL_ENTER: case FL_LEAVE: return 1; case FL_PUSH: …… case FL_DRAG: …… case FL_RELEASE: …… case FL_SHORTCUT: …… case FL_FOCUS : …… case FL_UNFOCUS : …… case FL_KEYBOARD : …… default:return 0; } } ``` 可以看出了,系統的一些消息,都是在構件的handle()中進行處理的。 系統的主要消息有以下 | 鼠標事件消息 | 焦點事件消息 | | --- | --- | | FL_PUSH | FL_ENTER | | FL_DRAG | FL_LEAVE | | FL_RELEASE | FL_FOCUS | | FL_MOVE | FL_UNFOCUS | | 鍵盤事件消息 | 剪貼板事件消息 | | --- | --- | | FL_KEYBOARD | FL_PASTE | | FL_SHORTCUT | FL_SELECTIONCLEAR | | 構件事件消息 | | | --- | --- | | FL_DEACTIVATE | FL_ACTIVE| | FL_HIDE | FL_SHOW| 通過重載handle函數我們可擴充標準構件,下面是一個鼠標移動到上面就改變顏色的按鈕的實現源代碼。 ``` #include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Button.H> #include <FL/fl_ask.H> class EnterButton : public Fl_Button { int handle(int e) { switch (e) { case FL_ENTER: color(FL_GREEN); labelsize(18); redraw(); return 1; case FL_LEAVE: color(FL_GRAY); labelsize(18); redraw(); return 1; default: return Fl_Button::handle(e); } } public: EnterButton(int x, int y, int w, int h, const char *l ) : Fl_Button(x,y,w,h,l) {} }; static void cb(Fl_Widget* s, void *data) { fl_alert( "Hello World!" ); } int main(int argc, char **argv) { Fl_Window* w = new Fl_Window(130, 50); EnterButton *eBtn = new EnterButton(25,50,120,25,"HelloWorld"); eBtn->callback((Fl_Callback*)cb); w->end(); w->show(argc, argv); return Fl::run(); } ``` 運行顯示效果如圖: ![](https://box.kancloud.cn/2016-01-09_5690737f1f71a.png) Linux下演示(截屏時鼠標沒有取到) ![](https://box.kancloud.cn/2016-01-09_5690737f32172.png)
                  <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>

                              哎呀哎呀视频在线观看