直接继承Cwnd实现的滚动文本窗口,可以设置需要显示的文本,字体大小,字体颜色,窗口背景颜色,滚动速度; 窗口自动根据字体大小换行滚动显示;还有什么功能后续想到再加进去。 代码如下: //CTEdit.h #pragma once #include <string> // CTEdit class CTEdit : public CWnd { DECLARE_DYNAMIC(CTEdit) public: CTEdit(unsigned long nbackColor = RGB(255, 255, 255)); virtual ~CTEdit(); protected: DECLARE_MESSAGE_MAP() public: virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); void SetAllText(std::string& allText); std::string& GetAllText(); void SetTextFont(CFont* font); CFont* GetTextFont(); void StartShowStr(); void SetScrollSpeed(unsigned int iSpeed); unsigned int GetScrollSpeed() ; void SetTextColor1(unsigned long ntextColor); unsigned long GetTextColor1(); protected: afx_msg void OnPaint(); afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg BOOL RegisterCalss(); afx_msg void InitVariables(unsigned long nbackColor); afx_msg void GetShowStr(); afx_msg void GetCharWidthAndHeight(); private: std::string m_ShowStr; std::string allStr; int lineCharCount; int lineCount; int strPosition; unsigned int minTime; CRect controlRect; unsigned long backColor; unsigned long textColor; CFont * pFont; BOOL Flag; }; // TEdit.cpp : implementation file // #include "stdafx.h" //#include "KKKDsoFramer.h" #include "TEdit.h" // CTEdit IMPLEMENT_DYNAMIC(CTEdit, CWnd) CTEdit::CTEdit(unsigned long nbackColor) { InitVariables(nbackColor); } CTEdit::~CTEdit() { } BEGIN_MESSAGE_MAP(CTEdit, CWnd) ON_WM_PAINT() ON_WM_TIMER() END_MESSAGE_MAP() // CTEdit message handlers BOOL CTEdit::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) { controlRect.CopyRect(&rect); return CWnd::Create(lpszClassName,lpszWindowName, dwStyle, rect, pParentWn