• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 1, 文章 - 9, 評論 - 4, 引用 - 0
            數據加載中……

            小觀構件

            摘自BCB的例子,越看越有點迷糊,還越覺得niubility.像觀察者又肯定不是,實在是牛...

            Main.cpp:

            //----------------------------------------------------------------------------
            //Borland C++Builder
            //Copyright (c) 1987, 1998-2002 Borland International Inc. All Rights Reserved.
            //----------------------------------------------------------------------------
            //-------------------------------------------------------------------------
            //    minicomp.cpp - uses the TCounter example component
            //-------------------------------------------------------------------------
            #include "minicomp.h"
            #include 
            <stdio.h>
            #include 
            <stdlib.h>
            #include 
            <condefs.h>
            //-------------------------------------------------------------------------
            USEUNIT("counter.cpp");
            //---------------------------------------------------------------------------
            main()
            {
              TExample example;

              
            return 0;
            }
            //-------------------------------------------------------------------------
            TExample::TExample()
            {
              TCounter Counter(
            7);
              
            int i;
              
            //把控件Counter的接口FMultiple和外部實現MultipleReached連接上
              Counter.OnMultiple = MultipleReached;

              
            for (i=0; i < 100; i++)
                Counter.Increment();
            }
            //-------------------------------------------------------------------------
            void TExample::MultipleReached(TCounter *Sender)
            {
              printf(
            "Multiple=%d reached with val=%d\n", Sender->Multiple, Sender->Val);
            }
            //-------------------------------------------------------------------------

            minicomp.h:

            //-------------------------------------------------------------------------
            //    minicomp.h - uses the TCounter example component
            //-------------------------------------------------------------------------
            #include "counter.h"
            //-------------------------------------------------------------------------
            class TExample
            {
            private:
              
            void MultipleReached(TCounter *Sender);
            public:
              TExample();
            };
            //-------------------------------------------------------------------------

            counter.h:

            //-------------------------------------------------------------------------
            //    counter.h. - example of a small, non-visual counter component
            //-------------------------------------------------------------------------
            class TCounter;         // forward

            typedef 
            void (__closure *TCounterEvent)(TCounter *Sender);
            //-------------------------------------------------------------------------
            class TCounter 
            {
            private:
              TCounterEvent FOnMultiple; 
            //這就是個函數接口
              int FVal;
              
            int FMultiple;
            public:
              __property 
            int Val = {read=FVal, write=FVal};
              __property 
            int Multiple = {read=FMultiple};
              __property TCounterEvent OnMultiple 
            = {read=FOnMultiple, write=FOnMultiple};
              
            void Clear();
              
            void Increment();
              TCounter(
            int Multiple);
            };
            //-------------------------------------------------------------------------

            counter.cpp:

            //-------------------------------------------------------------------------
            //    counter.cpp - example of a small, non-visual counter component
            //-------------------------------------------------------------------------
            #include "counter.h"
            //-------------------------------------------------------------------------
            TCounter::TCounter(int Multiple)
            {
              FMultiple 
            = Multiple;
            }
            //-------------------------------------------------------------------------
            void TCounter::Clear()
            {
              FVal 
            = 0;
            }
            //-------------------------------------------------------------------------
            void TCounter::Increment()
            {
              
            //這句執行時都是外部來調用的,此時OnMultiple已經和外面那個函數接口連接上了
              
            //也就是調用的其實是外面進來的那個函數,把this傳出去,讓外部那個函數操作
              
            //TExample::MultipleReached(this)
              if (((++FVal) % FMultiple) == 0)
                  OnMultiple(
            this);
            }
            //-------------------------------------------------------------------------

            posted on 2009-01-02 22:21 EiN 閱讀(103) 評論(0)  編輯 收藏 引用 所屬分類: C++Builder

            国产成人99久久亚洲综合精品| 麻豆一区二区99久久久久| 久久久国产99久久国产一| 久久e热在这里只有国产中文精品99| 狠狠色丁香久久综合五月| 天天爽天天爽天天片a久久网| 久久国产成人| 99蜜桃臀久久久欧美精品网站 | 四虎影视久久久免费观看| 久久婷婷国产剧情内射白浆| 精品国际久久久久999波多野| 大美女久久久久久j久久| 2019久久久高清456| 亚洲成色999久久网站| 伊人久久五月天| 亚洲欧美精品伊人久久| 久久精品亚洲AV久久久无码| 亚洲一区中文字幕久久| 亚洲中文字幕无码久久2017| 国产免费福利体检区久久| 久久中文骚妇内射| 久久婷婷色香五月综合激情| 日本三级久久网| 国内精品伊人久久久久AV影院| 久久久久久国产a免费观看不卡| 欧美黑人又粗又大久久久| 午夜视频久久久久一区 | 亚洲国产精品成人久久蜜臀| 久久精品国产亚洲av高清漫画| 人人狠狠综合久久亚洲| 丰满少妇人妻久久久久久4| 国产人久久人人人人爽| 色欲av伊人久久大香线蕉影院| 一本久久免费视频| 久久九九久精品国产| 26uuu久久五月天| 中文字幕久久欲求不满| 国产成人久久精品麻豆一区| 久久99国产精品二区不卡| 欧美777精品久久久久网| 精品久久一区二区三区|