....
CFile *m_pFile ;
....
m_pFile = new CFile(lpszPathName,CFile::modeRead);
....
BOOL CHexViewerDoc::ReadLine(CString& strLine, int nLength, LONG lOffset /*= -1L*/)
{
LONG lPosition;
if (lOffset != -1L)
lPosition = m_pFile->Seek(lOffset, CFile::begin);
else
lPosition = m_pFile->GetPosition();
if (lPosition == -1L)
return FALSE;
BYTE* pszBuffer = new BYTE[nLength];
int nReturned = m_pFile->Read(pszBuffer,nLength);
if (nReturned <= 0)
{
delete pszBuffer;
return FALSE;
}
for (int nIndex = 0; nIndex < nReturned; ++nIndex)
{
if (_istprint(pszBuffer[nIndex]))
strLine += pszBuffer[nIndex];
else{
strLine += _T('.');
};
delete pszBuffer;
return TRUE;
}
Вопросы от feomatr объясните плиз.
Вот такие вопросы.
1)
Код:
Функия ReadLine считывает из файла побайтово инфу в буффер длины <=nLength, а возвращает строку из print-символов в strLine, вместо неprint-символов вставляет точки.
Каким вообще образом можно считывать строки не фиксированной длины, а до например символа перевода строки или возврата каретки ( не помню в какой посл-ти они идут).
2)
void AFXAPI DDX_OCInt(
CDataExchange* pDX,
int nIDC,
DISPID dispid,
int& value
);
что этой функции нужно передавать в качестве параметра dispid?
Заранее спасибо.
2. У Ole контрола есть множество свойств, и у каждого есть идентификатор... Вот в dispid как раз и указывается идентификатор какого свойства необходимо считать.
Вот я считал файл и пытаюсь его построчно отобразить в клиентской области представления. CScrollView - базовый класс моего представления, поэтому с вертикальной прокруткой проблем нет, как организовать горизонтальную прокрутку?
Не помогает?