임베디드 프로그래밍  

         
전체 기타 | WinCE | Delphi | VisualC | ARM | Media | SE | 마리오네트 | Java | wdm | JTAG | 영상처리 | 인증 | 질문/답변 | H/W | 알고리즘 | Platform | .net | VB | PPC | Network | android | QT | WWW | Linux |
CEdit 를 이용한 채팅창 처럼 자동 스크롤 되는 로그창 예제
하창호05-11 16:54 | HIT : 6,660
CEdit 를 이용한 채팅창 처럼 자동 스크롤 되는 로그창 예제
chatting auto scroll log

#define LB_ADDLOG_MAX_VIEWBUFFERLINE        5
#define LB_ADDLOG_MAX_SAVEBUFFERLINE        10
#define LB_ADDLOG_MAX_LINELENGTH                1024
#define LB_ADDLOG_IDC_EDIT_LOG                        IDC_EDIT_LOG
#define LB_ADDLOG_LOGFILENAME                        _T("log.txt")
#define LB_ADDLOG_NEWLINE                                _T("\r\n")

void AddLog(CString szLog)
{
        CEdit* pEdit=(CEdit*)GetDlgItem(LB_ADDLOG_IDC_EDIT_LOG);
        if(pEdit == NULL)
        {
                return;
        }

        CString szLogData = szLog;
        if(szLogData.IsEmpty())
        {
                return;
        }

        szLogData = szLogData + LB_ADDLOG_NEWLINE;

        int nLineCount = pEdit->GetLineCount();
        if(nLineCount >= LB_ADDLOG_MAX_SAVEBUFFERLINE)
        {
                CString szAttachLog = _T("");
                TCHAR szBuffer[LB_ADDLOG_MAX_LINELENGTH + 2] = {0, }; // String null pointer size = 2
                
                for(int nIndex = 0; nIndex < nLineCount - LB_ADDLOG_MAX_VIEWBUFFERLINE; nIndex++)
                {
                        if(pEdit->GetLineCount() <= nIndex)
                        {
                                break;
                        }

                        pEdit->GetLine(nIndex, szBuffer, LB_ADDLOG_MAX_LINELENGTH);
                        szAttachLog = szAttachLog + szBuffer;
                        szAttachLog = szAttachLog + LB_ADDLOG_NEWLINE;
                }

                int nLineLimit = nLineCount - LB_ADDLOG_MAX_VIEWBUFFERLINE;
                int nCharIndex =  pEdit->LineIndex(nLineLimit);
                pEdit->SetSel(0, nCharIndex);
                pEdit->ReplaceSel(_T(""), FALSE);

                AttachLogFile(szAttachLog);
        }

        pEdit->SetSel(pEdit->LineIndex(pEdit->GetLineCount() - 1), -1);
        pEdit->ReplaceSel(szLogData, FALSE);
        pEdit->SetFocus();
}

void FinalizeLog()
{
        CEdit* pEdit=(CEdit*)GetDlgItem(LB_ADDLOG_IDC_EDIT_LOG);
        if(pEdit == NULL)
        {
                return;
        }

        if(pEdit->GetLineCount() > 0)
        {
                CString szAttachLog = _T("");
                pEdit->GetWindowText(szAttachLog);
                AttachLogFile(szAttachLog);
        }

        pEdit->SetWindowText(_T(""));
}

void AttachLogFile(CString szLog)
{
        CString szPath = FileControl::GetRunningPath(_T("Debug"));
        szPath = szPath + LB_ADDLOG_LOGFILENAME;

        CTextFile f1;
        UINT nOpenFlag = CFile::modeWrite;

        if(FileControl::GetFileExists(szPath) == FALSE)
        {
                nOpenFlag = CFile::modeWrite | CFile::modeCreate;
        }

        if(f1.Open(szPath, nOpenFlag) == FALSE)
        {
                return;
        }

        f1.SeekToEnd();
        f1.Write(szLog, szLog.GetLength() * sizeof(TCHAR));
        f1.Close();
}


197  VisualC :: ODBC 이용 EXCEL 사용시 데이터 입력 주의    하창호 2009·08·07 3666
196  VisualC :: Office Excel 2007 SQL에 넣기 mssql    하창호 2009·08·06 8310
195  VisualC :: 내부적으로 쓰레드를 사용하는 COM 객체를 쓰레드에서 ...    하창호 2009·07·18 4155
194  VisualC :: CDBVariant 의 m_pstring Exception 방...    하창호 2009·07·16 4391
 VisualC :: CEdit 를 이용한 채팅창 처럼 자동 스크롤 되는 로그...    하창호 2009·05·11 6660
192  VisualC :: ATL COM 쉽게 레지스트리 등록 방법    하창호 2009·04·29 3698
191  VisualC :: OLE Automation Event 사용예제 대신사이보스...    하창호 2009·04·28 7322
190  VisualC :: OLE Automation classes 사용예제    하창호 2009·04·27 6891
189  VisualC :: 소스코드에 DLL 위치 추가하는 방법    하창호 2009·04·27 6321
188  VisualC :: Linker Tools Error LNK2001 에러에 대한 ...    하창호 2009·04·27 4526
187  VisualC :: Capture 하기 예제 캡춰시 상위 화면 보인후 캡춰하...    하창호 2009·04·24 3961
186  VisualC :: DIBAPI 사용시 Bitmap 이미지 크기와 JPEG 이미...    하창호 2009·04·23 4865
185  VisualC :: DIB API 를 이용한 Bitmap 을 jpeg 로 저장하...    하창호 2009·04·22 5421
184  VisualC :: Thread 와 List 를 이용한 Queue 로 버퍼링 ...    하창호 2009·04·22 3702
183  VisualC :: ClickWindow 예제    하창호 2009·04·21 3697
182  VisualC :: 윈도우 이름을 기준으로 하부 윈도우를 찾는 예제    하창호 2009·04·21 4096
181  VisualC :: MAPI 를 이용한 메일 보내기 Sendmail    하창호 2009·04·20 5510
180  VisualC :: 부모 윈도우에서 자식 윈도우 위치로 윈도운 핸들 구하기  …1  하창호 2009·04·16 7789
179  VisualC :: Excel DDE 제어    하창호 2009·04·13 4162
178  VisualC :: 시간을 배열의 Index 로 서로간 변환 하는 함수 최소...    하창호 2009·04·03 3553
177  VisualC :: mysql odbc connection string    하창호 2009·03·26 5783
176  VisualC :: CDBException::m_strStateNativeOrigi...  …1  하창호 2009·03·24 4100
175  VisualC :: Microsoft Excel data type ODBC data...  …1  하창호 2009·03·11 3565
174  VisualC :: CRecordset.GetFieldValue 사용시 CDBVar...    하창호 2009·03·10 4594
173  VisualC :: ini 사용법    하창호 2009·03·09 4349
172  VisualC :: ODBC 이용 DSN Connect String 구하기 예제  …1  하창호 2009·01·21 4996
171  VisualC :: EXCEL ODBC/OLE DB/ADO 사용    하창호 2009·01·21 7436
170  VisualC :: DSN 연결 문자열 형식  …2  하창호 2009·01·21 3828
169  VisualC :: VC DB 사용시 ADO 보다는 ODBC 나 OLE DB 사용...    하창호 2009·01·21 3270
168  VisualC :: ANSI SQL 데이터 형식을 C++ 데이터 형식으로 매...    하창호 2009·01·21 5694
167  VisualC :: CDatabase 클래스 사용해서 Excel 파일 만들고 ...    하창호 2009·01·20 4742
166  VisualC :: MFC ODBC database classe 를 이용한 Exce...  …1  하창호 2009·01·20 6520
165  VisualC :: Excel XLS 파일 ODBC 제어를 위한 DSN 만들기 ...  …1  하창호 2009·01·20 4144
164  VisualC :: Excel 엑셀 관련 예제 몇가지    하창호 2009·01·14 5405
163  VisualC :: URL 에 해당하는 파일 다운로드 하는 예제    하창호 2009·01·14 3554
162  VisualC :: CEdit 커서이동 자동 스크롤  …1  하창호 2009·01·09 7522
161  VisualC :: DC 에 써진 Text 길이 알아내기    하창호 2009·01·08 3297
160  VisualC :: 동적 생성한 윈도우 메세지 제어하기    하창호 2009·01·07 3620
159  VisualC :: 컨트롤의 색깔 바꾸기 예제    하창호 2009·01·06 3539
158  VisualC :: SetWindowStyle 만드는 함수 예제    하창호 2009·01·05 6112
157  VisualC :: 템플릿 리스트 CList 사용하는 방법  …1  하창호 2008·12·30 4029
156  VisualC :: TransparentBlt 투명 그리기 함수    하창호 2008·12·17 5463
155  VisualC :: 쉘함수로 실행파일 실행 시키기 예제    하창호 2008·12·05 3460
154  VisualC :: 실행되고 있는 프로세스 찾기 예제    하창호 2008·12·05 6196
153  VisualC :: 프로세스 강제 죽이기 예제  …1  하창호 2008·12·05 5067
152  VisualC :: 테스크바 아이콘 지우기 예제    하창호 2008·12·05 3267
151  VisualC :: VC 확장 DLL 을 이용한 데이터 공유 방법  …4  하창호 2008·11·28 3857
150  VisualC :: SYSTEMTIME Milliseconds 동작안됨  …1  하창호 2008·11·17 6328
149  VisualC :: time_t 의 최소 변화가능 값 = 1초    하창호 2008·11·17 3445
148  VisualC :: C++ STL (Standard Template Library)...    하창호 2008·11·13 2933
147  VisualC :: CArchive 를 이용한 Serialize 와 Deseriali...    하창호 2008·11·05 4656
146  VisualC :: Visual studio 2008 Express Free 설치...    하창호 2008·10·20 2869
145  VisualC :: DoubleToStr 예제 UNICODE 지원됨    하창호 2008·10·14 2842
144  VisualC :: VC 2008 에서 제곱함수 pow 사용시 주의    하창호 2008·10·14 4379
143  VisualC :: 간단한 Text Encode / Decode 규칙    하창호 2008·10·06 2859
142  VisualC :: IntToStr, StrToInt  …4  하창호 2008·09·30 5808
141  VisualC :: StrToInt    하창호 2008·09·29 2961
140  VisualC :: 트레이 아이콘의 강제로 죽인 프로그램 아이콘 갱신하기    하창호 2008·09·19 5288
139  VisualC :: 실행파일의 파라메터 얻어오기    하창호 2008·09·10 2938
138  VisualC :: DLL 에 포함된 함수리스트를 보고 싶을 때  …1  하창호 2008·08·05 3779
137  VisualC :: 매번 생각안나는 OnActivate    하창호 2008·07·29 2777
136  VisualC :: extension DLLs 사용시 쉽게 Class 를 DLL 화...    하창호 2008·07·28 3577
135  VisualC :: Microsoft Image Lib 를 이용해 Thumbnail...    하창호 2008·07·25 4835
134  VisualC :: CTime 으로 해당달의 시작요일과 해당달의 일수를 구...  …1  하창호 2008·07·07 5075
133  VisualC :: CListCtrl 사용하기  …3  하창호 2008·07·03 3491
132  VisualC :: ComboBox 사용하기  …1  하창호 2008·07·03 3489
131  VisualC :: 문자열 처리함수  …2  하창호 2008·07·02 3009
130  VisualC :: 파일의 수정날짜 바꾸기    하창호 2008·07·01 4097
129  VisualC :: MFC App에서 __argc, __argv 를 가져오는법    하창호 2008·07·01 3779
128  VisualC :: LNK2005, LNK4098, LNK1169 에러가 날 경...    하창호 2008·06·11 3909
1 [2][3]
   
Copyright 1999-2018 Zeroboard / skin by GGAMBO
....