Edit显示代码行号

关键点

使用这个类然后关联Edit的变量为 LineNumberEdit类型的

实现过程

////////////////////////////////////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_LINENUMBEREDIT_H__CAB7A465_709C_42B8_80D0_2B0AF6D25AD4__INCLUDED_)
#define AFX_LINENUMBEREDIT_H__CAB7A465_709C_42B8_80D0_2B0AF6D25AD4__INCLUDED_
/////////////////////////////////////////////////////////////////////////////
// CLineNumberStatic window
class CLineNumberStatic : public CStatic
{
// Construction/destruction
public:
    CLineNumberStatic();
    virtual ~CLineNumberStatic();
// Operations
public:
    void SetFgColor( COLORREF col, BOOL redraw );
    void SetBgColor( COLORREF col, BOOL redraw );
    void SetTopAndBottom( int topline, int bottomline );
    void SetTopMargin( int topmargin );
    void SetLineNumberFormat( CString format );
protected:
    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
    afx_msg void OnPaint();
    afx_msg void OnLButtonDown( UINT nFlags, CPoint point );
    DECLARE_MESSAGE_MAP()
private:
// Attributes
    COLORREF            m_fgcol;
    COLORREF            m_bgcol;
    CString                m_format;
    int m_topmargin;    // Current top margin
    int m_topline;        // Current top line number
    int m_bottomline;    // Current bottom line number
};
/////////////////////////////////////////////////////////////////////////////
// CLineNumberEdit window
class CLineNumberEdit : public CEdit
{
// Construction/destruction
public:
    CLineNumberEdit();
    virtual ~CLineNumberEdit();
// Operations
public:
    void SetMarginForegroundColor( COLORREF col, BOOL redraw = TRUE, BOOL bEnabled = TRUE );
    void SetMarginBackgroundColor( COLORREF col, BOOL redraw = TRUE, BOOL bEnabled = TRUE );
    void SetLineNumberFormat( CString format );
    void SetLineNumberRange( UINT nMin, UINT nMax = 0 );
    void UseSystemColours( BOOL bUseEnabled = TRUE, BOOL bUseDisabled = TRUE );
protected:
    virtual void PreSubclassWindow();
    virtual afx_msg void OnEnable( BOOL bEnable );
    virtual afx_msg void OnSysColorChange();
    virtual afx_msg void OnChange();
    virtual afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    virtual afx_msg void OnVscroll();
    virtual afx_msg void OnSize(UINT nType, int cx, int cy);
    virtual afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam); // Maps to WM_SETFONT
    virtual afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam); // Maps to WM_SETTEXT
    virtual afx_msg LRESULT OnLineScroll(WPARAM wParam, LPARAM lParam); // Maps to EM_LINESCROLL
    virtual afx_msg LRESULT OnSelectLine(WPARAM wParam, LPARAM lParam);
    DECLARE_MESSAGE_MAP()
private:
    void Prepare();
    int CalcLineNumberWidth();
    void UpdateTopAndBottom();
    // Method to set window colour only
    void SetWindowColour( BOOL bEnable = TRUE );
// Attributes
    BOOL                m_bUseEnabledSystemColours;
    COLORREF            m_EnabledFgCol;
    COLORREF            m_EnabledBgCol;
    BOOL                m_bUseDisabledSystemColours;
    COLORREF            m_DisabledFgCol;
    COLORREF            m_DisabledBgCol;
    CLineNumberStatic    m_line;
    CSize                m_zero;
    int                    m_maxval;
    CString                m_format;
    int                 m_LineDelta; // Introduced to provide an offset to the first line number
};
#endif // !defined(AFX_LINENUMBEREDIT_H__CAB7A465_709C_42B8_80D0_2B0AF6D25AD4__INCLUDED_)
////////////////////////////////////////////////////////////////////////////////////////////////////////////   
 
#include "stdafx.h"
#include "LineNumberEdit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// Registered message to allow selection of complete 
// lines by clicking the line number
UINT urm_SELECTLINE = ::RegisterWindowMessage( "_LINE_NUMBER_EDIT_SELECTLINE_" );
/////////////////////////////////////////////////////////////////////////////
// CLineNumberEdit
CLineNumberEdit::CLineNumberEdit()
/* ============================================================
    Function :        CLineNumberEdit::CLineNumberEdit
    Description :    constructor
     
    Return :        void
    Parameters :    none
    Usage :            
   ============================================================*/
{
    m_hWnd = NULL;
    m_line.m_hWnd = NULL;
    m_zero.cx = 0;
    m_zero.cy = 0;
    m_format = _T( "%05i" );
    m_LineDelta = 0;
    // Could default m_maxval to 99,999, but may cause problems 
    // if m_format is changed and m_maxval is not...
    m_maxval = 0;
    // Setting up so by defult the original hard-coded colour 
    // scheme is used when enabled and the system colours are 
    // used when disabled.
    m_bUseEnabledSystemColours = FALSE;
    m_bUseDisabledSystemColours = TRUE;
    m_EnabledFgCol = RGB( 0, 0, 0 );
    m_EnabledBgCol = RGB( 255, 255, 248 );
    m_DisabledFgCol = GetSysColor( COLOR_GRAYTEXT );
    m_DisabledBgCol = GetSysColor( COLOR_3DFACE );
    SetWindowColour();
}
CLineNumberEdit::~CLineNumberEdit()
{
}
BEGIN_MESSAGE_MAP(CLineNumberEdit, CEdit)
    ON_CONTROL_REFLECT(EN_CHANGE, OnChange)
    ON_WM_VSCROLL()
    ON_CONTROL_REFLECT(EN_VSCROLL, OnVscroll)
    ON_MESSAGE(WM_SETFONT, OnSetFont)
    ON_WM_SIZE()
    ON_MESSAGE(WM_SETTEXT, OnSetText)
    ON_WM_SYSCOLORCHANGE()
    ON_WM_ENABLE()
    ON_MESSAGE(EM_LINESCROLL, OnLineScroll)
    ON_REGISTERED_MESSAGE(urm_SELECTLINE, OnSelectLine)
END_MESSAGE_MAP()
void CLineNumberEdit::PreSubclassWindow() 
{
    // Unfortunately, we can't change to ES_MULTILINE
    // during run-time.
    ASSERT( GetStyle() & ES_MULTILINE );
    // Creating the line number control
    SetLineNumberFormat( m_format );
}
/////////////////////////////////////////////////////////////////////////////
// CLineNumberEdit message handlers
void CLineNumberEdit::OnSysColorChange() 
{
    CEdit::OnSysColorChange();
    // update the CStatic with the new colours
    SetWindowColour( IsWindowEnabled() );
}
LRESULT CLineNumberEdit::OnSetText( WPARAM wParam, LPARAM lParam )
{
    // Default processing
    LRESULT retval = DefWindowProc( WM_SETTEXT, wParam, lParam );
    UpdateTopAndBottom();
    return retval;
}
void CLineNumberEdit::OnChange() 
{
    UpdateTopAndBottom();
}
void CLineNumberEdit::OnVscroll() 
{
    UpdateTopAndBottom();
}
void CLineNumberEdit::OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar ) 
{
    CEdit::OnVScroll( nSBCode, nPos, pScrollBar );
    UpdateTopAndBottom();
}
LRESULT CLineNumberEdit::OnLineScroll( WPARAM wParam, LPARAM lParam ) 
{
    LRESULT retval = DefWindowProc( EM_LINESCROLL, wParam, lParam );
    UpdateTopAndBottom();
    return retval;
}
/* ============================================================
    Function :        CLineNumberEdit::OnSetFont
    Description :    Mapped to WM_SETFONT. We must recalculate 
                    the line number control size as well.
 
    Return :        LRESULT            - Always 0
    Parameters :    WPARAM wParam    - From Windows
                    LPARAM lParam    - From Windows
    Usage :            Called from Windows
   ============================================================*/
LRESULT CLineNumberEdit::OnSetFont( WPARAM wParam, LPARAM lParam )
{
    DefWindowProc( WM_SETFONT, wParam, lParam );
    // We resize the line-number
    // field
    Prepare();
    return 0;
}
/* ============================================================
    Function :        CLineNumberEdit::OnSize
    Description :    Handles WM_SIZE. Recalculates the line 
                    number control size as well.
 
    Return :        void
    Parameters :    UINT nType    - From Windows
                    int cx        - From Windows
                    int cy        - From Windows
    Usage :            Called from Windows
   ============================================================*/
void CLineNumberEdit::OnSize( UINT nType, int cx, int cy ) 
{
    CEdit::OnSize( nType, cx, cy );
    // If we have the line-number
    // control, it must be resized 
    // as well.
    if( m_line.m_hWnd )
        Prepare();
 
}
/* ============================================================
    Function :        CLineNumberEdit::OnEnable
    Description :    Handles WM_ENABLE. Calls to set colours.
 
    Return :        void
    Parameters :    BOOL bEnable - From Windows
    Usage :            Called from Windows.
   ============================================================*/
void CLineNumberEdit::OnEnable( BOOL bEnable ) 
{
    CEdit::OnEnable( bEnable );
    SetWindowColour( bEnable );
}
/* ============================================================
    Function :        CLineNumberEdit::OnSelectLine
    Description :    Handler for the urm_SELECTLINE registered
                    message. Will select the line in wParam.
                    
    Return :        LRESULT            -    Not used
    Parameters :    WPARAM wParam    -    The line to select
                    LPARAM lParam    -    Not used
                    
    Usage :            Called from MFC. Use 
                    SendMessage( urm_SELECTLINE, line ) from 
                    code.
   ============================================================*/
LRESULT CLineNumberEdit::OnSelectLine(WPARAM wParam, LPARAM /*lParam*/ )
{
    // Calc start and end position of the line
    int lineno = wParam + GetScrollPos( SB_VERT );
    int start = LineIndex( lineno );
    int end = LineIndex( lineno + 1 );
    SetSel( start, end - 1 );
    return 0;
}
/* ============================================================
    Function :        CLineNumberEdit::SetWindowColour
    Description :    Handles changing window colours.
 
    Return :        void
    Parameters :    BOOL bEnable -    flag if set enabled/disabled 
                                    colours
    Usage :            Called to change colours in the edit box.
   ============================================================*/
void CLineNumberEdit::SetWindowColour( BOOL bEnable /*= TRUE*/ )
{
    if (m_bUseEnabledSystemColours)
    {
        // re-query the system colours in case they have changed.
        m_EnabledFgCol = GetSysColor( COLOR_WINDOWTEXT );
        m_EnabledBgCol = GetSysColor( COLOR_WINDOW );
    }
    if (m_bUseDisabledSystemColours)
    {
        // re-query the system colours in case they have changed.
        m_DisabledFgCol = GetSysColor( COLOR_GRAYTEXT );
        m_DisabledBgCol = GetSysColor( COLOR_3DFACE );
    }
    // change the colour based on bEnable
    if (bEnable)
    {
        m_line.SetFgColor( m_EnabledFgCol, TRUE );
        m_line.SetBgColor( m_EnabledBgCol, TRUE );
    } else {
        m_line.SetFgColor( m_DisabledFgCol, TRUE );
        m_line.SetBgColor( m_DisabledBgCol, TRUE );
    }
}
/* ============================================================
    Function :        CLineNumberEdit::UseSystemColours
    Description :    Sets the Use*SystemColours flags.
 
    Return :        void
    Parameters :    BOOL bEnabled    -    flag if to use enabled 
                                        system colours
                    BOOL bDisabled    -    flag if to use disabled 
                                        system colours
    Usage :            Called to change colours in the edit box
   ============================================================*/
void CLineNumberEdit::UseSystemColours( BOOL bUseEnabled /*= TRUE*/, BOOL bUseDisabled /*= TRUE*/ )
{
    m_bUseEnabledSystemColours = bUseEnabled;
    m_bUseDisabledSystemColours = bUseDisabled;
    BOOL bEnable = TRUE;
    if (::IsWindow(m_hWnd))
        bEnable = IsWindowEnabled();
    SetWindowColour( bEnable );
}
/////////////////////////////////////////////////////////////////////////////
// CLineNumberEdit private implementation
/* ============================================================
    Function :        CLineNumberEdit::Prepare
    Description :    Setting the edit rect for the control and 
                    either create or move the line number 
                    control. Also sets the top- and bottom 
                    line numbers.
 
    Return :        void
    Parameters :    none
    Usage :            Must be called to (re)establish the edit 
                    rect, must also be called as soon as the 
                    control changes size.
   ============================================================*/
void CLineNumberEdit::Prepare()
{
    // Calc sizes
    int width = CalcLineNumberWidth();
    CRect rect;
    GetClientRect( &rect );
    CRect rectEdit( rect );
    rect.right = width;
    rectEdit.left = rect.right + 1;
    // Setting the edit rect and 
    // creating or moving child control
    SetRect( &rectEdit );
    if( m_line.m_hWnd )
        m_line.MoveWindow( 0, 0, width, rect.Height() );
    else
        m_line.Create(NULL,WS_CHILD | WS_VISIBLE | SS_NOTIFY, rect, this, 1 );
    GetRect( &rectEdit );
    // Update line number control data
    m_line.SetTopMargin( rectEdit.top );
    UpdateTopAndBottom();
}
/* ============================================================
    Function :        CLineNumberEdit::CalcLineNumberWidth
    Description :    Calculates the desired width of the line 
                    number control, using the current format 
                    string and the max number of chars allowed 
                    (pessimistic - assumes one character per 
                    line).
 
    Return :        int - The width in pixels
    Parameters :    none
    Usage :            Called as soon as the format string is 
                    changed.
   ============================================================*/
int CLineNumberEdit::CalcLineNumberWidth()
{
    CClientDC dc( this );
    // If a new font is set during runtime,
    // we must explicitly select the font into
    // the CClientDC to measure it.
    CFont* font = GetFont();
    CFont* oldFont = dc.SelectObject( font );
    m_zero=dc.GetTextExtent( _T( "0" ) );
    CString format;
    // GetLimitText returns the number of bytes the edit box may contain,
    // not the max number of lines...
    //... which is the max number of lines, given one character per d:o :-)
    int maxval = GetLimitText();
    if (m_maxval > 0)
        maxval = m_maxval + m_LineDelta;
    format.Format( m_format, maxval );
    CSize fmt = dc.GetTextExtent( format );
    dc.SelectObject( oldFont );
    // Calculate the size of the line-
    // number field. We add a 5 pixel margin
    // to the max size of the format string
    return fmt.cx + 5;
}
/* ============================================================
    Function :        CLineNumberEdit::UpdateTopAndBottom
    Description :    Updates the top- and bottom line number 
                    for the line number control.
 
    Return :        void
    Parameters :    none
    Usage :            Should be called as soon as the contents of 
                    the control is changed.
   ============================================================*/
void CLineNumberEdit::UpdateTopAndBottom() 
{
    CRect rect;
    GetClientRect( &rect );
    int maxline = GetLineCount() + m_LineDelta;
    // Height for individual lines
    int lineheight = m_zero.cy;
    // Calculate the number of lines to draw
    int topline = GetFirstVisibleLine() + m_LineDelta;
    if( ( topline + ( rect.Height() / lineheight ) ) < maxline )
        maxline = topline + ( rect.Height() / lineheight );
    if ( m_maxval > 0 && maxline > m_maxval + m_LineDelta )
        maxline = m_maxval + m_LineDelta;
    m_line.SetTopAndBottom( topline, maxline );
}
/////////////////////////////////////////////////////////////////////////////
// CLineNumberEdit public implementation
/* ============================================================
    Function :        CLineNumberEdit::SetMarginForegroundColor
    Description :    Sets the text color for the number 
                    margin.
 
    Return :        void
    Parameters :    COLORREF col    -    The new text color 
                    BOOL redraw        -    TRUE if the control 
                                        should be redrawn 
                                        (default)
    Usage :            Call to set a new text color for the line
                    number margin. The control will be redrawn
                    if it exists.
   ============================================================*/
void CLineNumberEdit::SetMarginForegroundColor( COLORREF col, BOOL redraw, BOOL bEnabled /*= TRUE*/ )
{
    m_line.SetFgColor( col, redraw );
    if (bEnabled)
    {
        m_bUseEnabledSystemColours = FALSE;
        m_EnabledFgCol = col;
    } else {
        m_bUseDisabledSystemColours = FALSE;
        m_DisabledFgCol = col;
    }
}
/* ============================================================
    Function :        CLineNumberEdit::SetMarginBackgroundColor
    Description :    Sets the background color for the number 
                    margin.
 
    Return :        void
    Parameters :    COLORREF col    -    The new background color 
                    BOOL redraw        -    TRUE if the control 
                                        should be redrawn 
                                        (default)
    Usage :            Call to set a new background color for the 
                    line number margin. The control will be 
                    redrawn if it exists.
   ============================================================*/
void CLineNumberEdit::SetMarginBackgroundColor( COLORREF col, BOOL redraw, BOOL bEnabled /*= TRUE*/ )
{
    m_line.SetBgColor( col, redraw );
    if (bEnabled)
    {
        m_bUseEnabledSystemColours = FALSE;
        m_EnabledBgCol = col;
    } else {
        m_bUseDisabledSystemColours = FALSE;
        m_DisabledBgCol = col;
    }
}
/* ============================================================
    Function :        CLineNumberEdit::SetLineNumberFormat
    Description :    Changes the way line numbers are presented 
                    on screen. 
 
    Return :        void
    Parameters :    CString format - The new format string
    Usage :            Call with a format string using the same 
                    format as CString::Format. It should contain 
                    one and only one numeric type.
   ============================================================*/
void CLineNumberEdit::SetLineNumberFormat( CString format )
{
    m_format = format;
    m_line.SetLineNumberFormat( format );
    if( m_hWnd )
        Prepare();
}
/* ============================================================
    Function :        CLineNumberEdit::SetLineNumberRange
    Description :    Changes the default min and max line numbers. 
 
    Return :        void
    Parameters :    int nMin - changes the line offset
                    int nMax - changes the max line number
    Usage :            Call to set up the min and max line numbers.
   ============================================================*/
void CLineNumberEdit::SetLineNumberRange( UINT nMin, UINT nMax /*= 0*/ )
{
    m_LineDelta = ( int ) nMin;
    m_maxval = ( int ) nMax;
}
/////////////////////////////////////////////////////////////////////////////
// CLineNumberStatic
CLineNumberStatic::CLineNumberStatic()
{
    m_bgcol = RGB( 255, 255, 248 );
    m_fgcol = RGB( 0, 0, 0 );
    m_format = _T( "%05i" );
    m_topline = 0;
    m_bottomline = 0;
}
CLineNumberStatic::~CLineNumberStatic()
{
}
BEGIN_MESSAGE_MAP(CLineNumberStatic, CStatic)
    ON_WM_PAINT()
    ON_WM_ERASEBKGND()
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLineNumberStatic message handlers
/* ============================================================
    Function :        CLineNumberStatic::OnPaint
    Description :    Handler for WM_PAINT. 
 
    Return :        void
    Parameters :    none
    Usage :            Called from Windows.
   ============================================================*/
void CLineNumberStatic::OnPaint() 
{
    CPaintDC dcPaint( this );
    CRect rect;
    GetClientRect( &rect );
    // We double buffer the drawing - 
    // preparing the memory CDC
    CDC dc;
    dc.CreateCompatibleDC( &dcPaint );
    int saved = dc.SaveDC();
    // Create GDI and select objects
    CBitmap bmp;
    CPen pen;
    bmp.CreateCompatibleBitmap( &dcPaint, rect.Width(), rect.Height() );
    pen.CreatePen( PS_SOLID, 1, m_fgcol );
    dc.SelectObject( &bmp );
    dc.SelectObject( &pen );
    // Painting the background
    dc.FillSolidRect( &rect, m_bgcol );
    dc.MoveTo( rect.right - 1, 0 );
    dc.LineTo( rect.right - 1, rect.bottom );
    // Setting other attributes
    dc.SetTextColor( m_fgcol );
    dc.SetBkColor( m_bgcol );
    dc.SelectObject( GetParent()->GetFont() );
    // Output the line numbers
    if( m_bottomline )
    {
        int lineheight = dc.GetTextExtent( _T( "0" ) ).cy;
        for( int t = m_topline ; t < m_bottomline ; t++ )
        {
            CString output;
            output.Format( m_format, t );
            int topposition = m_topmargin + lineheight * ( t - m_topline );
            dc.TextOut( 2, topposition, output );
        }
    }
    dcPaint.BitBlt( 0, 0, rect. right, rect.bottom, &dc, 0, 0, SRCCOPY );
    dc.RestoreDC( saved );
}
/* ============================================================
    Function :        CLineNumberStatic::OnEraseBkgnd
    Description :    Mapped to WM_ERASEBKGND. Handled to avoid
                    flicker, as we redraw the complete control 
                    in OnPaint
 
    Return :        BOOL  -    Always TRUE
    Parameters :    CDC*  -    From Windows
    Usage :            Called from Windows.
   ============================================================*/
BOOL CLineNumberStatic::OnEraseBkgnd( CDC* ) 
{
    return TRUE;
}
/* ============================================================
    Function :        CLineNumberStatic::OnLButtonDown
    Description :    Called when the control is clicked. Will
                    send the urm_SELECTLINE registered message 
                    to the parent to select the line clicked on.
                    
    Return :        void
    Parameters :    UINT nFlags        -    Not used
                    CPoint point    -    Position of cursor
                    
    Usage :            Called from Windows.
   ============================================================*/
void CLineNumberStatic::OnLButtonDown( UINT nFlags, CPoint point )
{
    // Find the line clicked on
    CClientDC    dc( this );
    dc.SelectObject( GetParent()->GetFont() );
    int lineheight = dc.GetTextExtent( _T( "0" ) ).cy;
    int lineno = ( int ) ( ( double ) point.y / ( double ) lineheight );
    // Select this line in the edit control
    GetParent()->SendMessage( urm_SELECTLINE, lineno );
    CStatic::OnLButtonDown( nFlags, point );
}
/////////////////////////////////////////////////////////////////////////////
// CLineNumberStatic public implementation
/* ============================================================
    Function :        CLineNumberStatic::SetBgColor
    Description :    This function sets the panel background 
                    color
 
    Return :        void
    Parameters :    COLORREF col -    New background color
                    BOOL redraw  -    TRUE if the control 
                                    should be redrawn 
                                    (default)
    Usage :            Called from the parent.
   ============================================================*/
void CLineNumberStatic::SetBgColor( COLORREF col, BOOL redraw )
{
    m_bgcol = col;
    if( m_hWnd && redraw )
        RedrawWindow();
}
/* ============================================================
    Function :        CLineNumberStatic::SetFgColor
    Description :    This function sets the panel foreground 
                    color
 
    Return :        void
    Parameters :    COLORREF col -    New text color
                    BOOL redraw  -    TRUE if the control 
                                    should be redrawn 
                                    (default)
 
    Usage :            Called from the parent.
   ============================================================*/
void CLineNumberStatic::SetFgColor( COLORREF col, BOOL redraw )
{
    m_fgcol = col;
    if( m_hWnd && redraw )
        RedrawWindow();
}
/* ============================================================
    Function :        CLineNumberStatic::SetTopAndBottom
    Description :    Sets the top- and bottom line and redraw 
                    the control (if it exists)
 
    Return :        void
    Parameters :    int topline        -    The top line number
                    int bottomline    -    The bottom line number
 
    Usage :            Called when the top and bottom line is 
                    changed in the parent.
   ============================================================*/
void CLineNumberStatic::SetTopAndBottom( int topline, int bottomline )
{
    m_topline = topline;
    m_bottomline = bottomline;
    if( m_hWnd )
        RedrawWindow();
}
/* ============================================================
    Function :        CLineNumberStatic::SetTopMargin
    Description :    Sets the top margin for painting.
 
    Return :        void
    Parameters :    int topmargin -    The top margin to set
 
    Usage :            Will be called with the value of GetRect 
                    from the parent.
   ============================================================*/
void CLineNumberStatic::SetTopMargin( int topmargin )
{
    m_topmargin = topmargin;
}
/* ============================================================
    Function :        CLineNumberStatic::SetLineNumberFormat
    Description :    Sets the format string of the control
 
    Return :        void
    Parameters :    CString format -    Format string to use 
 
    Usage :            Called from the parent when the format 
                    string is changed.
   ============================================================*/
void CLineNumberStatic::SetLineNumberFormat( CString format )
{
    m_format = format;
    if( m_hWnd )
        RedrawWindow();
}

备注

1个类文件

LineNumberEdit.cpp

LineNumberEdit.h

出现了2个类

CLineNumberEdit

CLineNumberStatic

相关链接

相关链接    相关链接

 

附件列表

Edit显示行号的更多相关文章

  1. Python+PyCharm的一些基本设置:安装使用、注册码、显示行号、字体大小和快捷键等常用设置

    一 下载与安装 软件下载,软件文档下载:http://www.jetbrains.com/pycharm/download/ 如下图: 官方网站下载:http://www.oschina.net/p/ ...

  2. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...

  3. vc6.0如何显示行号以及出现版本不兼容问题

    有时编译时,提示某某行有错,但是要定位到某一行的话,如果在编辑页面能够将行号显示出来,查找也就更方便了,下面我来介绍一下让VC6.0显示行号的方法.   工具/原料   VC6.0.显示行号的插件 方 ...

  4. Row_Number()显示行号

    SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee Row_Number ...

  5. vim显示行号、语法高亮、自动缩进的设置

    转载自:http://blog.csdn.net/chuanj1985/article/details/6873830   在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为v ...

  6. mac/linux中vim永久显示行号、开启语法高亮

    步骤1: cp /usr/share/vim/vimrc ~/.vimrc 先复制一份vim配置模板到个人目录下 注:redhat 改成 cp /etc/vimrc ~/.vimrc 步骤2: vi ...

  7. 如何让vim编辑器永久显示行号

    在Linux环境下的编辑器有vi.vim.gedit等等.进入这些编辑器之后,为了方便我们需要编辑器显示出当前的行号,可偏偏编辑器默认是不会显示行号的.我们有二种办法可以解决: 第一种是,手动显示:在 ...

  8. PyCharm 教程(四)显示行号

    PyCharm 教程(四)显示行号 在PyCharm 里,显示行号有两种办法: 1,临时设置.右键单击行号处,选择 Show Line Numbers. 但是这种方法,只对一个文件有效,并且,重启Py ...

  9. DEV控件Grid显示行号

    DEV控件Grid的显示行号需要通过一个事件来设置,具体设置代码为: private void gridView1_CustomDrawRowIndicator(object sender, DevE ...

随机推荐

  1. [wikioi]线段覆盖

    http://wikioi.com/problem/1214/ 这道题也归为贪心了.我也不是很能分辨,但想法确实是:1.有阶段最优化性:2.前一状态和后一状态有关系. 想法:1.排个序是很自然的想法, ...

  2. ActionBar官方教程(2)选主题让应用支或不支持ActionBar及支持ActionBar的应用如何隐藏和显示

    Adding the Action Bar As mentioned above, this guide focuses on how to use the ActionBar APIs in the ...

  3. Eclipse问题解决方案,不断更新

    执行“software update”时出现:Error retrieving "feature.xml"... 执行“software update”时出现:Error retr ...

  4. hihocoder #1290 : Demo Day (2016微软编程测试第三题)

    #1290 : Demo Day 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You work as an intern at a robotics startup. ...

  5. .NET(C#)调用webService获取客户端IP地址所属区域(非异步)

    功能描述: 此接口用于获取客户端访问的IP的地址所属的区域(国家,城市等).通过输入IP地址查询国家.城市.所有者等信息.没有注明国家的为中国输入参数:IP地址(自动替换 " ." ...

  6. PICK定理模板

    PICK定理: S=I+O/2-1 S为多边形面积,I多边形内部的格点,O是多边形边上的格点 其中边上格点求法: 假设两个点A(x1,y1),B(x2,y2) 线段AB间格点个数为gcd(abs(x1 ...

  7. 去除浏览器下jquey easyui datagrid、combotree 缓存问题

    在页面脚本中加入以下内容即可: $.ajaxSetup ({   cache: false //关闭AJAX相应的缓存 });

  8. C# asp.net 操作Word的前提配置和简单的方法

    操作的前提: 1.要保证机器本身要安装OFFICE. 有时安装了Office,但是不能找到Microsoft Word 11.0(或者更高的版本) Object Library.那可能是因为在安装of ...

  9. 自动测试框架(by myself)

    这段日子以来一直在自动话测试,然后关于框架一直有个很模糊的概念,通过N多人的解说,这个应该不能算是一个框架,但是还是很模糊 如下图是我自己认为的框架,不知道是否正确(请大侠们多多指点) 1.用nuni ...

  10. 安装solr

    安装之前先关闭防火墙.安装好jdk和tomcat 1.启动tomcat的命令为:apache-tomcat-7.0.61/bin/startup.sh 2.拷贝solr目录下example/webap ...