Click here to Skip to main content
14,691,476 members
Articles » Desktop Development » Edit Controls » General
Article
Posted 17 Jan 2000

Stats

82.6K views
2.2K downloads
32 bookmarked

History Edit Control

Rate me:
Please Sign up or sign in to vote.
3.00/5 (7 votes)
17 Jan 2000CPOL
CEdit derived control that lets you to display a scrolling text history
  • Download demo project - 14 Kb
  • Download source files - 2 Kb
  • Sample Image - history_edit.gif

    CHistoryEdit is a CEdit derived control that lets you to display a scrolling text history, much like Dev Studio's "Output" window during a compilation. The image presents an example of the control (the "History" window) being used in a dialog box.

    CHistoryEdit's AppendString() method appends a text string to the control and automatically scroll the most recent entry into view. Two other methods, AllowSelection() and IsSelectable() allow you to control whether the user may select text in the control.

    Using CHistoryEdit in a dialog is quite simple:

    1. Include CHistoryEdit.h in your dialog class' header file.
    2. Add member variables of type CHistoryEdit for every edit control you want to subclass.
    3. Subclass the edit controls in your dialog's OnInitDialog() method.
      m_HistoryEdit.SubclassDlgItem (EDIT_HISTORY, this);
    4. Append text to the control by using AppendString().
      m_HistoryEdit.AppendString ("Compiling D:\\XDA\\Test\\Mechanic.kb...");

    License

    This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Share

    About the Author

    Ravi Bhavnani
    Technical Lead
    Canada Canada
    Ravi Bhavnani is an ardent fan of Microsoft technologies who loves building Windows apps, especially PIMs, system utilities, and things that go bump on the Internet. During his career, Ravi has developed expert systems, desktop imaging apps, marketing automation software, EDA tools, a platform to help people find, analyze and understand information, trading software for institutional investors and advanced data visualization solutions. He currently works for a company that provides enterprise workforce management solutions to large clients.

    His interests include the .NET framework, reasoning systems, financial analysis and algorithmic trading, NLP, HCI and UI design. Ravi holds a BS in Physics and Math and an MS in Computer Science and was a Microsoft MVP (C++ and C# in 2006 and 2007). He is also the co-inventor of 3 patents on software security and generating data visualization dashboards. His claim to fame is that he crafted CodeProject's "joke" forum post icon.

    Ravi's biggest fear is that one day he might actually get a life, although the chances of that happening seem extremely remote.

    Comments and Discussions

     
    GeneralLimited buffer [modified] Pin
    Pandele Florin25-Aug-06 0:47
    MemberPandele Florin25-Aug-06 0:47 
    I think it is a good idea to limit the amount of text that this edit control diplays.This should be placed in CHistoryEdit::AppendString to do that:
    <br />
     str += "\r\n";<br />
    <br />
        SetRedraw(FALSE);<br />
    <br />
        int start, end;<br />
        GetSel(start, end);	<br />
        DWORD len = GetWindowTextLength();<br />
       <br />
    	if (len>MAXCHARS) <br />
    	{<br />
    	int toline= LineFromChar(len-MAXCHARS);<br />
    	if (LineIndex(toline) != -1)<br />
    		{		   <br />
    		   SetSel(0, LineIndex(toline)+LineLength(toline));<br />
    		   ReplaceSel("");<br />
    		}<br />
    	}<br />
    		<br />
    	SetSel(len, len, TRUE);<br />
        ReplaceSel(str);<br />
        SetSel(start, end, TRUE);<br />
        SetRedraw(TRUE);<br />
    <br />
    <br />
        DWORD newLen = GetWindowTextLength();<br />
        SetSel(newLen, newLen, FALSE);<br />


    You should as well define MAXCHARS to the desired maximum number of chars to allow.It should be under 64k(Ansi)32k(Unicode).
    I got inspired by Kupriyanov Anatolij's message.
    AnswerRe: Limited buffer Pin
    Ravi Bhavnani25-Aug-06 3:12
    professionalRavi Bhavnani25-Aug-06 3:12 
    GeneralRe: Limited buffer Pin
    Widdis17-Jan-07 10:54
    MemberWiddis17-Jan-07 10:54 
    GeneralSubClass Pin
    xavigonzalvo5-Nov-04 0:05
    Memberxavigonzalvo5-Nov-04 0:05 
    GeneralA good one routine Pin
    kan.izh23-Aug-04 22:08
    Memberkan.izh23-Aug-04 22:08 
    Generalflickering problem Pin
    23-Apr-02 1:06
    suss23-Apr-02 1:06 
    Generalmod for variable args Pin
    Glenn Carr10-Aug-01 10:40
    MemberGlenn Carr10-Aug-01 10:40 
    GeneralQ:further mimicking devstudio's outputwindow Pin
    Paul Kuijten11-Mar-00 15:44
    sussPaul Kuijten11-Mar-00 15:44 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.