• <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>
            //
            //    Class:        CButtonST
            //
            //    Compiler:    Visual C++
            //    Tested on:    Visual C++ 5.0
            //                Visual C++ 6.0
            //
            //    Version:    See GetVersionC() or GetVersionI()
            //
            //    Created:    xx/xxxx/1998
            //    Updated:    03/March/2003
            //
            //    Author:        Davide Calabro'        davide_calabro@yahoo.com
            //                                    http://www.softechsoftware.it
            //
            //    Note:        Code for the PreSubclassWindow and OnSetStyle functions
            //                has been taken from the COddButton class
            //                published by Paolo Messina and Jerzy Kaczorowski
            //
            //    Disclaimer
            //    ----------
            //    THIS SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED "AS IS" AND WITHOUT
            //    ANY WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO REPONSIBILITIES FOR POSSIBLE
            //    DAMAGES OR EVEN FUNCTIONALITY CAN BE TAKEN. THE USER MUST ASSUME THE ENTIRE
            //    RISK OF USING THIS SOFTWARE.
            //
            //    Terms of use
            //    ------------
            //    THIS SOFTWARE IS FREE FOR PERSONAL USE OR FREEWARE APPLICATIONS.
            //    IF YOU USE THIS SOFTWARE IN COMMERCIAL OR SHAREWARE APPLICATIONS YOU
            //    ARE GENTLY ASKED TO DONATE 5$ (FIVE U.S. DOLLARS) TO THE AUTHOR:
            //
            //        Davide Calabro'
            //        P.O. Box 65
            //        21019 Somma Lombardo (VA)
            //        Italy
            //
            #ifndef _BTNST_H
            #define _BTNST_H

            // Uncomment the following 2 lines to enable support for BCMenu class
            #define    BTNST_USE_BCMENU
            #include 
            "BCMenu.h"

            // Uncomment the following line to enable support for sound effects
            #define    BTNST_USE_SOUND

            #if _MSC_VER >= 1000
            #pragma once
            #endif // _MSC_VER >= 1000

            // Return values
            #ifndef    BTNST_OK
            #define    BTNST_OK                        0
            #endif
            #ifndef    BTNST_INVALIDRESOURCE
            #define    BTNST_INVALIDRESOURCE            1
            #endif
            #ifndef    BTNST_FAILEDMASK
            #define    BTNST_FAILEDMASK                2
            #endif
            #ifndef    BTNST_INVALIDINDEX
            #define    BTNST_INVALIDINDEX                3
            #endif
            #ifndef    BTNST_INVALIDALIGN
            #define    BTNST_INVALIDALIGN                4
            #endif
            #ifndef    BTNST_BADPARAM
            #define    BTNST_BADPARAM                    5
            #endif
            #ifndef    BTNST_INVALIDPRESSEDSTYLE
            #define    BTNST_INVALIDPRESSEDSTYLE        6
            #endif

            // Dummy identifier for grayscale icon
            #ifndef    BTNST_AUTO_GRAY
            #define    BTNST_AUTO_GRAY                    (HICON)(0xffffffff - 1L)
            #endif
            // Dummy identifier for 15% darker icon
            #ifndef    BTNST_AUTO_DARKER
            #define    BTNST_AUTO_DARKER                (HICON)(0xffffffff - 2L)
            #endif

            class CButtonST : public CButton
            {
            public:
                CButtonST();
                
            ~CButtonST();

                
            enum    {    ST_ALIGN_HORIZ    = 0,            // Icon/bitmap on the left, text on the right
                            ST_ALIGN_VERT,                    // Icon/bitmap on the top, text on the bottom
                            ST_ALIGN_HORIZ_RIGHT,            // Icon/bitmap on the right, text on the left
                            ST_ALIGN_OVERLAP                // Icon/bitmap on the same space as text
                        }
            ;

                
            enum    {    BTNST_COLOR_BK_IN    = 0,        // Background color when mouse is INside
                            BTNST_COLOR_FG_IN,                // Text color when mouse is INside
                            BTNST_COLOR_BK_OUT,                // Background color when mouse is OUTside
                            BTNST_COLOR_FG_OUT,                // Text color when mouse is OUTside
                            BTNST_COLOR_BK_FOCUS,            // Background color when the button is focused
                            BTNST_COLOR_FG_FOCUS,            // Text color when the button is focused

                            BTNST_MAX_COLORS
                        }
            ;

                
            enum    {    BTNST_PRESSED_LEFTRIGHT = 0,    // Pressed style from left to right (as usual)
                            BTNST_PRESSED_TOPBOTTOM            // Pressed style from top to bottom
                        }
            ;

                
            // ClassWizard generated virtual function overrides
                
            //{{AFX_VIRTUAL(CButtonST)
                public:
                
            virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
                
            virtual BOOL PreTranslateMessage(MSG* pMsg);
                
            protected:
                
            virtual void PreSubclassWindow();
                
            //}}AFX_VIRTUAL

            public:
                DWORD SetDefaultColors(BOOL bRepaint 
            = TRUE);
                DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint 
            = TRUE);
                DWORD GetColor(BYTE byColorIndex, COLORREF
            * crpColor);
                DWORD OffsetColor(BYTE byColorIndex, 
            short shOffset, BOOL bRepaint = TRUE);

                DWORD SetCheck(
            int nCheck, BOOL bRepaint = TRUE);
                
            int GetCheck();

                DWORD SetURL(LPCTSTR lpszURL 
            = NULL);
                
            void DrawTransparent(BOOL bRepaint = FALSE);
                DWORD SetBk(CDC
            * pDC);

                BOOL GetDefault();
                DWORD SetAlwaysTrack(BOOL bAlwaysTrack 
            = TRUE);

                
            void SetTooltipText(int nText, BOOL bActivate = TRUE);
                
            void SetTooltipText(LPCTSTR lpszText, BOOL bActivate = TRUE);
                
            void ActivateTooltip(BOOL bEnable = TRUE);
                DWORD EnableBalloonTooltip();

                DWORD SetBtnCursor(
            int nCursorId = NULL, BOOL bRepaint = TRUE);

                DWORD SetFlat(BOOL bFlat 
            = TRUE, BOOL bRepaint = TRUE);
                DWORD SetAlign(BYTE byAlign, BOOL bRepaint 
            = TRUE);
                DWORD SetPressedStyle(BYTE byStyle, BOOL bRepaint 
            = TRUE);

                DWORD DrawBorder(BOOL bDrawBorder 
            = TRUE, BOOL bRepaint = TRUE);
                DWORD DrawFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint 
            = TRUE);

                DWORD SetIcon(
            int nIconIn, int nCxDesiredIn, int nCyDesiredIn, int nIconOut = NULL, int nCxDesiredOut = 0int nCyDesiredOut = 0);
                DWORD SetIcon(
            int nIconIn, int nIconOut = NULL);
                DWORD SetIcon(HICON hIconIn, HICON hIconOut 
            = NULL);

                DWORD SetBitmaps(
            int nBitmapIn, COLORREF crTransColorIn, int nBitmapOut = NULL, COLORREF crTransColorOut = 0);
                DWORD SetBitmaps(HBITMAP hBitmapIn, COLORREF crTransColorIn, HBITMAP hBitmapOut 
            = NULL, COLORREF crTransColorOut = 0);

                
            void SizeToContent();

            #ifdef    BTNST_USE_BCMENU
                DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bWinXPStyle 
            = TRUE, UINT nToolbarID = NULL, CSize sizeToolbarIcon = CSize(1616), COLORREF crToolbarBk = RGB(2550255), BOOL bRepaint = TRUE);
            #else
                DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bRepaint 
            = TRUE);
            #endif
                DWORD SetMenuCallback(HWND hWnd, UINT nMessage, LPARAM lParam 
            = 0);

            #ifdef    BTNST_USE_SOUND
                DWORD SetSound(LPCTSTR lpszSound, HMODULE hMod 
            = NULL, BOOL bPlayOnClick = FALSE, BOOL bPlayAsync = TRUE);
            #endif

                
            static short GetVersionI()        {return 39;}
                
            static LPCTSTR GetVersionC()    {return (LPCTSTR)_T("3.9");}

                BOOL    m_bShowDisabledBitmap;
                POINT    m_ptImageOrg;
                POINT    m_ptPressedOffset;

            protected:
                
            //{{AFX_MSG(CButtonST)
                afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
                afx_msg 
            void OnKillFocus(CWnd* pNewWnd);
                afx_msg 
            void OnMouseMove(UINT nFlags, CPoint point);
                afx_msg 
            void OnSysColorChange();
                afx_msg BOOL OnClicked();
                afx_msg 
            void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
                afx_msg 
            void OnEnable(BOOL bEnable);
                afx_msg 
            void OnCancelMode();
                afx_msg UINT OnGetDlgCode();
                
            //}}AFX_MSG

            #ifdef    BTNST_USE_BCMENU
                afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu
            * pMenu);
                afx_msg 
            void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
            #endif

                afx_msg HBRUSH CtlColor(CDC
            * pDC, UINT nCtlColor);
                HICON CreateGrayscaleIcon(HICON hIcon);
                HICON CreateDarkerIcon(HICON hIcon);
                HBITMAP CreateGrayscaleBitmap(HBITMAP hBitmap, DWORD dwWidth, DWORD dwHeight, COLORREF crTrans);
                HBITMAP CreateDarkerBitmap(HBITMAP hBitmap, DWORD dwWidth, DWORD dwHeight, COLORREF crTrans);
                COLORREF DarkenColor(COLORREF crColor, 
            double dFactor);
                
            virtual DWORD OnDrawBackground(CDC* pDC, CRect* pRect);
                
            virtual DWORD OnDrawBorder(CDC* pDC, CRect* pRect);

                BOOL        m_bIsFlat;            
            // Is a flat button?
                BOOL        m_bMouseOnButton;    // Is mouse over the button?
                BOOL        m_bDrawTransparent;    // Draw transparent?
                BOOL        m_bIsPressed;        // Is button pressed?
                BOOL        m_bIsFocused;        // Is button focused?
                BOOL        m_bIsDisabled;        // Is button disabled?
                BOOL        m_bIsDefault;        // Is default button?
                BOOL        m_bIsCheckBox;        // Is the button a checkbox?
                BYTE        m_byAlign;            // Align mode
                BOOL        m_bDrawBorder;        // Draw border?
                BOOL        m_bDrawFlatFocus;    // Draw focus rectangle for flat button?
                COLORREF    m_crColors[BTNST_MAX_COLORS];    // Colors to be used
                HWND        m_hParentWndMenu;    // Handle to window for menu selection
                BOOL        m_bMenuDisplayed;    // Is menu displayed ?

            #ifdef    BTNST_USE_BCMENU
                BCMenu        m_menuPopup;        
            // BCMenu class instance
            #else
                HMENU        m_hMenu;            
            // Handle to associated menu
            #endif

            private:
                LRESULT OnSetCheck(WPARAM wParam, LPARAM lParam);
                LRESULT OnGetCheck(WPARAM wParam, LPARAM lParam);
                LRESULT OnSetStyle(WPARAM wParam, LPARAM lParam);
                LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);

                
            void CancelHover();
                
            void FreeResources(BOOL bCheckForNULL = TRUE);
                
            void PrepareImageRect(BOOL bHasTitle, RECT* rpItem, CRect* rpTitle, BOOL bIsPressed, DWORD dwWidth, DWORD dwHeight, CRect* rpImage);
                HBITMAP CreateBitmapMask(HBITMAP hSourceBitmap, DWORD dwWidth, DWORD dwHeight, COLORREF crTransColor);
                
            virtual void DrawTheIcon(CDC* pDC, BOOL bHasTitle, RECT* rpItem, CRect* rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
                
            virtual void DrawTheBitmap(CDC* pDC, BOOL bHasTitle, RECT* rpItem, CRect* rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
                
            virtual void DrawTheText(CDC* pDC, LPCTSTR lpszText, RECT* rpItem, CRect* rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
                
            void PaintBk(CDC* pDC);

                
            void InitToolTip();

                HCURSOR        m_hCursor;            
            // Handle to cursor
                CToolTipCtrl m_ToolTip;            // Tooltip

                CDC            m_dcBk;
                CBitmap        m_bmpBk;
                CBitmap
            *    m_pbmpOldBk;

                BOOL        m_bAlwaysTrack;        
            // Always hilight button?
                int            m_nCheck;            // Current value for checkbox
                UINT        m_nTypeStyle;        // Button style
                DWORD        m_dwToolTipStyle;    // Style of tooltip control

                TCHAR        m_szURL[_MAX_PATH];    
            // URL to open when clicked

            #pragma pack(
            1)
                typedef 
            struct _STRUCT_ICONS
                
            {
                    HICON        hIcon;            
            // Handle to icon
                    DWORD        dwWidth;        // Width of icon
                    DWORD        dwHeight;        // Height of icon
                }
             STRUCT_ICONS;
            #pragma pack()

            #pragma pack(
            1)
                typedef 
            struct _STRUCT_BITMAPS
                
            {
                    HBITMAP        hBitmap;        
            // Handle to bitmap
                    DWORD        dwWidth;        // Width of bitmap
                    DWORD        dwHeight;        // Height of bitmap
                    HBITMAP        hMask;            // Handle to mask bitmap
                    COLORREF    crTransparent;    // Transparent color
                }
             STRUCT_BITMAPS;
            #pragma pack()

            #pragma pack(
            1)
                typedef 
            struct _STRUCT_CALLBACK
                
            {
                    HWND        hWnd;            
            // Handle to window
                    UINT        nMessage;        // Message identifier
                    WPARAM        wParam;
                    LPARAM        lParam;
                }
             STRUCT_CALLBACK;
            #pragma pack()

                STRUCT_ICONS    m_csIcons[
            2];
                STRUCT_BITMAPS    m_csBitmaps[
            2];

                STRUCT_CALLBACK    m_csCallbacks;

            #ifdef    BTNST_USE_SOUND
            #pragma pack(
            1)
                typedef 
            struct _STRUCT_SOUND
                
            {
                    TCHAR        szSound[_MAX_PATH];
                    LPCTSTR        lpszSound;
                    HMODULE        hMod;
                    DWORD        dwFlags;
                }
             STRUCT_SOUND;
            #pragma pack()

                STRUCT_SOUND    m_csSounds[
            2];    // Index 0 = Over    1 = Clicked
            #endif

                DECLARE_MESSAGE_MAP()
            }
            ;

            //{{AFX_INSERT_LOCATION}}
            // Microsoft Developer Studio will insert additional declarations immediately before the previous line.

            #endif
            Posted on 2007-04-12 11:37 艾凡赫 閱讀(2354) 評論(0)  編輯 收藏 引用 所屬分類: MFC技術(shù)
            一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久久精品久久久久久 | 久久一日本道色综合久久| 久久久久香蕉视频| 久久亚洲高清综合| 久久天天躁狠狠躁夜夜2020| 99精品伊人久久久大香线蕉| 亚洲一本综合久久| 久久久久无码专区亚洲av| 中文成人久久久久影院免费观看| 欧美久久一区二区三区| 中文字幕无码久久久| 久久亚洲AV成人无码| 国产精品99久久久精品无码| 7777精品久久久大香线蕉| 久久国产亚洲高清观看| 九九久久99综合一区二区| 国产高潮久久免费观看| 欧美色综合久久久久久| 一本色综合网久久| 国产精品99久久精品| 久久精品无码免费不卡| 久久无码专区国产精品发布| 精品久久久噜噜噜久久久 | 色诱久久av| 亚洲中文字幕无码久久2020| 久久99国产精一区二区三区| 久久综合九色综合久99| 久久亚洲精品成人AV| 久久国产精品无码网站| 亚洲精品无码久久久久去q| 91久久九九无码成人网站| 久久成人小视频| 成人午夜精品久久久久久久小说| 一本色道久久综合| 99久久精品免费看国产一区二区三区| 亚洲午夜精品久久久久久浪潮| 久久超碰97人人做人人爱| 亚洲欧美久久久久9999| 亚洲综合久久综合激情久久| 性做久久久久久久|