norains的专栏

只专注于WINCE开发

用户操作
[即时聊天] [发私信] [加为好友]
norainsID:norains
142881次访问,排名598,好友0人,关注者53人。
代码其实是一种乐趣
norains的文章
原创 189 篇
翻译 0 篇
转载 10 篇
评论 274 篇
norains的公告
联系方式请看置顶文章
最近评论
dfdf:讨厌MFC!我觉得MFC就是太乱了!看似无用的代码不要不行,MD微软啥都给我们做完了,原理性的东西我们却永远没法搞懂了!
ironox:有个地方 我觉得很别扭,不知道怎么办好

比如说 CReg reg(HKEY_CURRENT_USER,TEXT("ControlPanel\Volume"));
ControlPanel\Volume 有可能不存在呀,这个该怎么处理哦?对象虽然创建了,出错了也没提示
szterry:呵呵,果然工作狂技术狂,同感,一样的感觉……不过我才刚毕业一年……搞IT就是玩……
jinlking:这个botton的实现只是在主窗口画了一块区域,对于事件的处理还要放在主窗口的窗口处理函数之中,在对应的消息处理上调用CheckTap来判断是否是此“按钮”,问一下,这种方法与把按钮封装在子窗口中有什么区别,二者使用那个更好?
KUODY:博主真是好人
文章分类
收藏
    相册
    动漫
    文章图片
    程序交流
    xumercury的BLOG
    狗友们的博客
    清蒸石斑鱼
    美女如刀锋
    茁茁的BLOG
    魅力老姐的窝
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 CText更新至V1.1.0收藏

    新一篇: 第一对的可能眷属 | 旧一篇: 用PB模拟器调试WINCE系统之简单步骤

    //========================================================================
    //TITLE:
    //    CText更新至V1.1.0
    //AUTHOR:
    //    norains
    //DATE:
    //    Saturday  28-April-2007
    //Environment:
    //        EVC4.0 + Standard SDK 4.2
    //        EVC4.0 + Standard SDK 5.0
    //========================================================================
           
            版本历史:
            v1.0: http://blog.csdn.net/norains/archive/2007/04/17/1568429.aspx
           
                   
            接口和上一版本的差异:
            *SetTextHeight()更名为SetPointSize()


            修正的bug:
            *创建字体时没有lfCharSet变量,在wince5.0中会导致文字无法对准.

           
            增加的函数:
            *SetStrikeOut(BOOL bStrikeOut) //文件中划线
            *SetUnderline(BOOL bUnderline) //下划线
            *SetItalic(BOOL bItalic)       //斜体
            *SetWeight(int iWeight)        //粗细
            *重载 "="操作符,下列代码功能能够正常运作:
             CText a, b;
             a.SetText(TEXT("TEXT"));
             a.SetTextColor(RGB(0,0,255));
             b = a;
           
           
            基本的操作可参照版本v1.0的文章


    //////////////////////////////////////////////////////////////////////        
    // Text.h: interface for the CText class.
    //
    //Version: 
    //    1.1.0
    //Data:
    //    2007.04.28   
    //////////////////////////////////////////////////////////////////////

    #ifndef TEXT_H
    #define TEXT_H


    //------------------------------------------------------------------
    class CText  
    {
    public:
        CText
    & operator =(const CText &rhs);
        
    void SetStrikeOut(BOOL bStrikeOut);
        
    void SetUnderline(BOOL bUnderline);
        
    void SetItalic(BOOL bItalic);
        BOOL SetWeight(
    int iWeight);
        
    void GetPosition(RECT * prcOut);
        
    void SetPointSize(int iPointSize);
        
    void SetFormat(UINT uFormat);
        
    void SetBkColor(COLORREF crColor);
        
    void SetTextColor(COLORREF crColor);
        BOOL SetBkMode(
    int iMode);
        
    void Draw(HDC hdc);
        BOOL SetText(
    const TCHAR *pszText);
        
    void SetPosition(const RECT *prc);
        CText();
        
    virtual ~CText();
    protected:
        RECT m_rcWndPos;    
        TCHAR 
    *m_pszText;
        ULONG m_ulSizeText;
        UINT m_uFormat;
        
    int m_iPointSize;
        
    int m_iBkMode;
        COLORREF m_crTextColor;
        COLORREF m_crBkColor;
        
    int m_iWeight;
        BOOL m_bItalic;
        BOOL m_bUnderline;
        BOOL m_bStrikeOut;
    }
    ;

    #endif // !defined(AFX_TEXT_H__15E5AD94_9958_4AAC_A6DD_37527FC294CB__INCLUDED_)






    //////////////////////////////////////////////////////////////////////
    // Text.cpp: implementation of the CText class.
    //
    //////////////////////////////////////////////////////////////////////

    #include 
    "stdafx.h"
    #include 
    "Text.h"


    //--------------------------------------------------------------------
    //Macro define
    #define DEFAULT_BKMODE            TRANSPARENT
    #define DEFAULT_TEXT_COLOR        RGB(0,0,0)
    #define DEFAULT_BK_COLOR        RGB(255,255,255)
    #define DEFAULT_FORMAT            (DT_LEFT | DT_SINGLELINE)
    #define DEFAULT_POINT_SIZE        0
    #define DEFAULT_WEIGHT            0


    #define MAX_WEIGHT                1000
    #define MIN_WEIGHT                0
    //--------------------------------------------------------------------
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////

    CText::CText()
    {
        memset(
    &m_rcWndPos,0,sizeof(m_rcWndPos));
        m_pszText 
    = NULL;
        m_ulSizeText 
    = 0;
        m_iBkMode 
    = DEFAULT_BKMODE;
        m_crTextColor 
    = DEFAULT_TEXT_COLOR;
        m_crBkColor 
    = DEFAULT_BK_COLOR;
        m_uFormat 
    = DEFAULT_FORMAT;
        m_iPointSize 
    = DEFAULT_POINT_SIZE;
        m_iWeight 
    = 0;
        m_bItalic 
    = FALSE;
        m_bUnderline 
    = FALSE;
        m_bStrikeOut 
    = FALSE;
    }


    CText::
    ~CText()
    {
        
    if(m_pszText != NULL)
        
    {
            delete [] m_pszText;
            m_pszText 
    = NULL;
        }

    }


    //--------------------------------------------------------------------
    //Description:
    //    Set the control position
    //
    //--------------------------------------------------------------------
    void CText::SetPosition(const RECT *prc)
    {
        m_rcWndPos 
    = *prc;
    }



    //--------------------------------------------------------------------
    //Description:
    //    Set the text. If you want to display the text ,you should call the Display()
    //
    //--------------------------------------------------------------------
    BOOL CText::SetText(const TCHAR *pszText)
    {
        ULONG ulLen 
    = _tcslen(pszText);

        
    if(m_pszText == NULL)
        
    {        
            m_pszText 
    = new TCHAR [ulLen + 1];
            
            
    if(m_pszText == NULL)
            
    {
                
    return FALSE;
            }


            m_ulSizeText 
    = ulLen + 1;
        }

        
    else if(ulLen + 1 > m_ulSizeText)
        
    {
            delete [] m_pszText;

            m_pszText 
    = new TCHAR [ulLen + 1];
            
            
    if(m_pszText == NULL)
            
    {
                
    return FALSE;
            }


            m_ulSizeText 
    = ulLen + 1;
        }


        _tcscpy(m_pszText,pszText);

        
    return TRUE;
    }



    //--------------------------------------------------------------------
    //Description:
    //    Display the text stored.
    //
    //--------------------------------------------------------------------
    void CText::Draw(HDC hdc)
    {
        COLORREF crOldTextColor 
    = ::SetTextColor(hdc,m_crTextColor);
        COLORREF crOldBkColor 
    = ::SetBkColor(hdc,m_crBkColor);
        
    int iOldMode = ::SetBkMode(hdc,m_iBkMode);

        
        LOGFONT lf 
    = {0};
        HFONT hFontNew, hFontOld;
        lf.lfQuality 
    = CLEARTYPE_QUALITY;
        lf.lfCharSet 
    = DEFAULT_CHARSET;
        lf.lfHeight 
    = -1 * (m_iPointSize * GetDeviceCaps(hdc,LOGPIXELSY) / 72); 
        lf.lfItalic 
    = m_bItalic;
        lf.lfUnderline 
    = m_bUnderline;
        lf.lfStrikeOut 
    = m_bStrikeOut;
        
        hFontNew 
    = CreateFontIndirect(&lf);
        hFontOld 
    = (HFONT) SelectObject(hdc, hFontNew);
        

        DrawText(hdc,m_pszText,
    -1,&m_rcWndPos,m_uFormat);


        SelectObject(hdc, hFontOld);
        DeleteObject(hFontNew);

        ::SetTextColor(hdc,crOldTextColor);
        ::SetBkColor(hdc,crOldBkColor);
        ::SetBkMode(hdc,iOldMode);
    }



    //--------------------------------------------------------------------
    //Description:
    //    Set the background mode.
    //
    //Parameters:
    //    iMode: [in] The value is just like as follow:
    //        OPAQUE      -- Background is filled with the current background color before the text, 
    //                        hatched brush, or pen is drawn. 
    //        TRANSPARENT -- Background remains untouched. 

    //--------------------------------------------------------------------
    BOOL CText::SetBkMode(int iMode)
    {
        
    if(iMode == OPAQUE || iMode == TRANSPARENT)
        
    {
            m_iBkMode 
    = iMode;
            
    return TRUE;
        }

        
    else
        
    {
            
    return FALSE;
        }

    }



    //--------------------------------------------------------------------
    //Description:
    //    Set the text color
    //
    //--------------------------------------------------------------------
    void CText::SetTextColor(COLORREF crColor)
    {
        m_crTextColor 
    = crColor;
    }



    //--------------------------------------------------------------------
    //Description:
    //    Set the background color
    //
    //--------------------------------------------------------------------
    void CText::SetBkColor(COLORREF crColor)
    {
        m_crBkColor 
    = crColor;
    }


    //--------------------------------------------------------------------
    //Description:
    //    Set Format.
    //
    //Parameters:
    //    The value you should see the uFormat of DrawText()
    //--------------------------------------------------------------------
    void CText::SetFormat(UINT uFormat)
    {
        m_uFormat 
    = uFormat;
    }



    //--------------------------------------------------------------------
    //Description:
    //    Set the point size of text
    //
    //---------------------------------------------------------------------
    void CText::SetPointSize(int iPointSize)
    {
        m_iPointSize 
    = iPointSize;
    }



    //--------------------------------------------------------------------
    //Description:
    //    Get the position as rect
    //
    //---------------------------------------------------------------------
    void CText::GetPosition(RECT *prcOut)
    {
        
    *prcOut = m_rcWndPos;
    }



    //--------------------------------------------------------------------
    //Description:
    //    Specifies the weight of the font in the range 0 through 1000. For example, 
    //400 is normal and 700 is bold. If this value is zero, a default weight is used. 
    //
    //---------------------------------------------------------------------
    BOOL CText::SetWeight(int iWeight)
    {
        
    if(iWeight < MIN_WEIGHT || iWeight > MAX_WEIGHT)
        
    {
            
    return FALSE;
        }


        m_iWeight 
    = iWeight;

        
    return TRUE;
    }




    //--------------------------------------------------------------------
    //Description:
    //    Set the italic
    //
    //---------------------------------------------------------------------
    void CText::SetItalic(BOOL bItalic)
    {
        m_bItalic 
    = bItalic;
    }




    //--------------------------------------------------------------------
    //Description:
    //    Set the underline
    //
    //---------------------------------------------------------------------
    void CText::SetUnderline(BOOL bUnderline)
    {
        m_bUnderline 
    = bUnderline;
    }



    //--------------------------------------------------------------------
    //Description:
    //    Set the strikeOut
    //
    //---------------------------------------------------------------------
    void CText::SetStrikeOut(BOOL bStrikeOut)
    {
        m_bStrikeOut 
    = bStrikeOut;
    }


    //--------------------------------------------------------------------
    //Description:
    //    Overload the operator "="
    //
    //---------------------------------------------------------------------
    CText& CText::operator =(const CText &rhs)
    {
        
    if(this == &rhs)
        
    {
            
    return *this;
        }


        
    this->m_bItalic = rhs.m_bItalic;
        
    this->m_bStrikeOut = rhs.m_bStrikeOut;
        
    this->m_bUnderline = rhs.m_bUnderline;
        
    this->m_crBkColor = rhs.m_crBkColor;
        
    this->m_crTextColor = rhs.m_crTextColor;
        
    this->m_iBkMode = rhs.m_iBkMode;
        
    this->m_iPointSize = rhs.m_iPointSize;
        
    this->m_iWeight = rhs.m_iWeight;
        
    this->m_rcWndPos = rhs.m_rcWndPos;
        
    this->m_uFormat = rhs.m_uFormat;
        
    this->m_ulSizeText = rhs.m_ulSizeText;

        
    if(this->m_pszText != NULL)