利用c++试编写一个MDI应用程序,在客户区显示文本串“欢迎使用VisualC++面向对象编程 要求从左到右滚动显示这行字。利用mfc
时间: 2024-10-05 12:03:35 浏览: 27
VC++习题答案_vc++面向对象编程第四版答案,visualc++6.0第四版
5星 · 资源好评率100%
在C++中,尤其是使用MFC(Microsoft Foundation Classes)创建MDI(Multiple Document Interface,多文档界面)应用程序,你可以使用CWnd子类(如CFrameWindowEx或CMultiDocTemplate)作为MDI容器,并结合CScrollBar和CTextCtrl等控件来实现文字的滚动显示。
下面是一个简化的示例代码片段,展示了如何在MDI框架窗口中创建一个滚动的文本框:
```cpp
#include "stdafx.h"
#include "resource.h"
#include <afxwin.h>
#include <atlctrls.h> // 包含CScrollCtrl
class CMyDocument : public CDocument
{
public:
enum { IDD = IDD_MYDOCUMENT };
virtual void OnInitialUpdate();
};
class CDCustomerView : public CMDIFrameWindowEx
{
public:
DECLARE_DYNCREATE(CDCustomerView)
protected:
afx_msg LRESULT OnCreate(WPARAM wParam, LPARAM lParam);
afx_msg void OnSize(UINT nType, int cx, int cy);
private:
CScrollCtrl m_ScrollCtrl; // 滚动条控件
CStatic m_TextCtrl; // 文本控件,用于显示字符串
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CDCustomerView, CMDIFrameWindowEx)
ON_WM_CREATE()
ON_SIZE(onSize)
END_MESSAGE_MAP()
void CDCustomerView::OnCreate(WPARAM wParam, LPARAM lParam)
{
CreateDockingWindows();
// 创建滚动条
m_ScrollCtrl.Create(_T("Scroll Bar"), WS_CHILD | CBS_VSCROLL, CRect(0, 0, 200, 200), this, IDC_SCROLLBAR);
m_ScrollCtrl.SetRange(0, std::string("欢迎使用VisualC++面向对象编程").length() * 10); // 设置滚动范围
// 创建文本控件
m_TextCtrl.Create(_T("Text Control"), WS_VISIBLE | ES_LEFT, CRect(0, 0, 200, 200), this, IDC_STATIC);
}
void CDCustomerView::OnSize(UINT nType, int cx, int cy)
{
CDCustomerView::DockControlbars(FALSE);
RecalcLayout(TRUE);
DockAll(TRUE);
UpdateWindow();
m_ScrollCtrl.SetScrollPos(SB_CTL横向滚动条, 0); // 初始化滚动位置
}
void CDCustomerView::OnInitialUpdate()
{
CDCustomerView::DockControlbars(TRUE);
// 更新滚动条和文本控件的大小
m_ScrollCtrl.SetScrollSizes(SB_HORZ, m_TextCtrl.GetTextExtent(_T("欢迎使用VisualC++面向对象编程")).cx);
m_TextCtrl.SetWindowText(_T("欢迎使用VisualC++面向对象编程"));
}
//
阅读全文