Hi all,

I want to read a Rich Text Format file and get texts form it only. So, what I have done is according to RTF specification start to code detecting tags. Actually it is too hard, because RTF format has more that 1000 tags. If I going to find each of them it will take a long time.

So I want to do it in shorter time. Can I do it with CRichEditCtrl?

Recommended Answers

All 4 Replies

That control is only used in MFC programs. And here are its methods that an MFC program can call.

Yes, I'm going to work it on with MFC. What you think about it? Is it difficult, first time I'm going to do this.

>>Is it difficult
Never tried what you want to do, so I don't know.

Ok, here what I've done up to now.

First define CWnd object and CRichEditCrtl objects as follows.

CWnd * m_rtfWnd;
	CRichEditCtrl * m_rtfCtrl;
CFile rtfFile;
	BOOL err = rtfFile.Open("G:\\Work On\\CPP\\RTFControl\\TestFile.rtf", CFile::modeReadWrite, NULL);

	if(err !=0)
	{
		int iLength = rtfFile.GetLength();// Data length
		char *pBuffer = new char[iLength];// Data buffer

		rtfFile.Read(pBuffer, iLength);
		CString rtf(pBuffer);

		m_rtfCtrl->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE, CRect(100,100,100,100), m_rtfWnd, 1);// Associate with CRichEditCtrl
		m_rtfCtrl->SetWindowText(rtf);// Set the window text

		int i, nLength, nCount = m_rtfCtrl->GetLineCount();
		CString strText, strLine;

		for(i = 0;i < nCount;i++)
		{
			nLength = m_rtfCtrl->LineLength(i);
			m_rtfCtrl->GetLine(i, strText.GetBuffer(nLength));

			strLine.Format(("i %d '%s' \n", i, strText.GetBuffer(0)));
			AfxMessageBox(strText, MB_OK);
		}
	}

I got an error when I use 'create' to construct rich edit control. I can't find any error there. Do you guys have any idea about it.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.