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

            近來(lái)想做一個(gè)日歷控件,于是用了BCG(www.ttdown.com 可以下載)的CBCGPCalendarBar。不過(guò)想做成鼠標(biāo)停留在日期上的時(shí)候,提示信息是農(nóng)歷。
            不過(guò)很奇怪,BCG的日期控件竟然不支持日期提示。究其原因,原來(lái):
            BOOL CBCGPCalendarButton::OnToolHitTest(const CWnd* /*pWnd*/, TOOLINFO* /*pTI*/)
            {
            ?return FALSE;
            }
            其實(shí)想改也很容易,改BCG的源代碼就行了。但是想到一旦BCG更新?lián)Q代,又要重新編譯了,實(shí)在是麻煩。于是想通過(guò)OO的繼承,擴(kuò)展這個(gè)類。

            class CLunarCalendarButton : public? CBCGPCalendarButton
            {
            ?DECLARE_SERIAL(CLunarCalendarButton)
            public:
            ?CLunarCalendarButton() : CBCGPCalendarButton() {}
            ?CLunarCalendarButton(const COleDateTime& date, BOOL bHighlight = FALSE) : CBCGPCalendarButton(date, bHighlight) {}
            protected:
            ?virtual BOOL OnToolHitTest(const CWnd* /*pWnd*/, TOOLINFO* pTI);
            };

            IMPLEMENT_SERIAL(CLunarCalendarButton, CBCGPCalendarButton, 1)

            BOOL CLunarCalendarButton::OnToolHitTest(const CWnd* /*pWnd*/, TOOLINFO* pTI)
            {
            ?if (pTI == NULL)
            ??return FALSE;

            ?CString str;
            ?
            ?str = _T("農(nóng)歷:");
            ?CLunarCalendarBar::FormatLunarDate(m_Calendar, str);

            ?pTI->lpszText = (LPTSTR) ::calloc ((str.GetLength () + 1), sizeof (TCHAR));
            ?_tcscpy (pTI->lpszText, str);

            ?return TRUE;
            }

            但是問(wèn)題是怎么樣子把這個(gè)Button替換原來(lái)控件上的CBCGPCalendarButton呢?CBCGPCalendarBar沒(méi)有接口讓用戶建立自己的Button。
            最后還是要比較“茅”的方法,通過(guò)覆蓋虛函數(shù):
            class CLunarCalendarBar : public CBCGPCalendarBar
            {
            ......
            protected:
            ?virtual void Rebuild ();
            ?virtual CBCGPToolbarButton * createDateButton(void);?
            };

            CBCGPToolbarButton * CLunarCalendarBar::createDateButton(void)
            {
            ??? return new CLunarCalendarButton();

            }

            void CLunarCalendarBar::Rebuild ()
            {
            ?CBCGPCalendarBar::Rebuild();

            ?int i = 0;
            ?for (i = 0; !m_Buttons.IsEmpty() && i < 42; ++i)
            ?{
            ??CBCGPToolbarButton* pButton = (CBCGPToolbarButton*) m_Buttons.RemoveTail();
            ??ASSERT_VALID (pButton);

            ??if (pButton != NULL)
            ??{
            ???pButton->OnCancelMode ();
            ???delete pButton;
            ??}
            ?}
            ?for (i = 0; i < 42; i ++)
            ??InsertButton ( createDateButton() );

            ?SetDate (m_dateSelected);
            }
            把原來(lái)的CBCGPCalendarBar建立的那42個(gè)按鈕全部去掉,換上自己的按鈕。

            posted on 2005-10-08 14:46 cyt 閱讀(805) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


             
            av午夜福利一片免费看久久| 亚洲狠狠综合久久| 久久国产精品99精品国产| 久久久久久无码Av成人影院| 国内精品久久久久久不卡影院| 久久精品国产福利国产琪琪| 色综合久久无码中文字幕| 国产AV影片久久久久久| 少妇熟女久久综合网色欲| 久久久青草青青亚洲国产免观| 香蕉99久久国产综合精品宅男自 | 久久国产成人午夜aⅴ影院| 欧美日韩精品久久免费| 久久99亚洲综合精品首页| 色欲综合久久中文字幕网| 欧美久久久久久午夜精品| 99久久综合狠狠综合久久止| 久久久这里有精品| 久久久精品人妻无码专区不卡| 久久久久人妻一区精品性色av| 亚洲成av人片不卡无码久久| 91亚洲国产成人久久精品| 久久国产精品77777| 亚洲va中文字幕无码久久| 伊人色综合久久天天网| 亚洲综合精品香蕉久久网97| 久久A级毛片免费观看| 伊人久久大香线蕉av不卡| 国产香蕉久久精品综合网| 手机看片久久高清国产日韩| 久久中文字幕一区二区| 99久久成人国产精品免费| 久久久久久无码Av成人影院| 婷婷久久香蕉五月综合加勒比| 97精品依人久久久大香线蕉97| 久久国产精品偷99| 久久男人中文字幕资源站| 日日狠狠久久偷偷色综合96蜜桃| 国产成人精品久久一区二区三区av| 久久久久久a亚洲欧洲aⅴ| 久久国产精品-久久精品|