⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2004演示代码:demo1.txt+editor.txt

📁 动画演示程序
💻 TXT
字号:
另一台计算机:打开winword!



Demo1:  SDI

任务:模拟一个编辑器,
鼠标双击时输入若干字符--》用户交互
能够在视图窗口回显
能够存盘、下次打开!

第一步:
/*  //Doc.h

friend class CDemo1View;
protected:	//[沈瑜注]:由于protected,CDemo1View是友元,可直接访问
	//'.'沈瑜  2001.12.2
	int m_nLineNum;
	CStringArray m_strings;  //如果用字符指针数组,改用CPtrArray,类似;看MSDN
	//.'.沈瑜  2001.12.2

*/

/*  //View.h
WM_LBUTTONDBLCLK
{

//to do

	int nCount=GetDocument()->m_strings.GetSize();
		//取:字串数组中的个数,即已有行数

	CString line;
	line.Format("这是第%d行:Hello!", nCount+1);
		//格式化字符串

	((CDemo1Doc*)GetDocument())->m_strings.Add(line);
		//添加到文档的字符串数组中

	InvalidateRect(NULL);
		//刷新屏幕

	GetDocument()->SetModifiedFlag();//设置“修改”标志


}

*/

View::OnDraw
{

//to do

	int x=20, y=20;
	int nCount = ((CDemo1Doc*)GetDocument())->m_strings.GetSize();
	CString strMessage;

	strMessage.Format( "总共%d行:", nCount );

	pDC->TextOut( x, y, strMessage );

	for( int i=0;i<nCount;i++ )
	{
		y+=16;
		pDC->TextOut( x, y, ((CDemo1Doc*)GetDocument())->m_strings[i] );
	}

}

----可以输入响应了!!
第二步:

以下存盘、打开文件


Doc::Serialize(CArchive& ar)
{

	if (ar.IsStoring())
	{
		// TODO: add storing code here
		ar << m_nLineNum;
		m_strings.Serialize(ar);
	}
	else
	{
		// TODO: add loading code here
		ar >> m_nLineNum;
		m_strings.Serialize(ar);
	}

}

第三步:
问题:

Doc::DeleteContents()
{

//to do
	m_strings.RemoveAll();
	m_nLineNum = 0;
}





EDITOR:   //CEditView

<classwizard>   =EN_CHANGE

void CEditorView::OnTextChange(...) 
{

	((CEditorDoc*)GetDocument())->UpdateAllViews(this);


}


OnUpdate(...)
{

	if( pSender == NULL )
		return;

	if( pSender->IsKindOf( RUNTIME_CLASS(CEditorView) ) )
	{
		CString strMsg;
		pSender->GetWindowText(strMsg);
		SetWindowText(strMsg);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -