www.pudn.com > c02 vc6.rar > DisassemblyBar.cpp


// DisassemblyBar.cpp: implementation of the CDisassemblyBar class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "c02ide.h" 
#include "DisassemblyBar.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
 
const UINT FTS_XT_BOTTOM           = 0x0001;  
// Show back and next arrows. 
const UINT FTS_XT_HASARROWS        = 0x0002;  
// Show home and end arrows.  Used with FTS_XT_HASARROWS. 
const UINT FTS_XT_HASHOMEEND       = 0x0004;  
// Show tooltips. 
const UINT FTS_XT_TOOLTIPS         = 0x0008;  
// Same as FTS_XT_BOTTOM | FTS_XT_HASARROWS | FTS_XT_HASHOMEEND | FTS_XT_TOOLTIPS. 
const UINT FTS_XT_DEFAULT          = 0x000F;  
// Show a horizontal scroll bar. 
const UINT FTS_XT_HSCROLL          = 0x0010;  
// All FTS_ mask items. 
const UINT FTS_XT_MASK             = 0x001F; 
 
 
 
BEGIN_MESSAGE_MAP(CDisassemblyBar, CCJControlBar) 
	//{{AFX_MSG_MAP(CWatchBar) 
	ON_WM_CREATE() 
	ON_WM_PAINT() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CDisassemblyBar::CDisassemblyBar() 
{ 
	m_Font.CreateFont(10,10,0,0,0,0,0,0,  
 
    DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,  
 
       CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, FIXED_PITCH,"Courier");  
 
} 
 
CDisassemblyBar::~CDisassemblyBar() 
{ 
 
} 
int CDisassemblyBar::OnCreate(LPCREATESTRUCT lpCreateStruct)  
{ 
	if (CCJControlBar::OnCreate(lpCreateStruct) == -1) 
		return -1; 
 
 
//	LPCREATESTRUCT lpCreateStruct: 
//	CCrystalEditView::OnCreate(lpCreateStruct); 
 
 
 
 
	DWORD dwStyle=ES_MULTILINE|WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_HSCROLL 
		| LBS_NOINTEGRALHEIGHT|ES_AUTOHSCROLL|ES_AUTOVSCROLL |ES_READONLY ; 
     
	 
	//创建各个输出页面 
//	int nListCount = sizeof(m_OutputList)/sizeof(m_OutputList[0]); 
//	for( int iList = 0; iList < nListCount; ++iList) 
	{ 
 
		 
		if (!m_disassemctrl.Create( dwStyle, CRect(0,0,0,0), this, 
			IDC_DISASSEMBCTRL )) 
 
		{ 
			TRACE(_T("Failed to create output window.\n")); 
			return -1; 
		} 
		//设置输出页面的字体 
		m_disassemctrl.SetFont( &m_Font ); 
	} 
	 
	SetChild(&m_disassemctrl); 
	return 1; 
} 
 
 
void CDisassemblyBar::OnPaint()  
{ 
	CPaintDC dc(this); // device context for painting 
	CRect rc; 
	m_iAuxImage = (UINT)-1; 
	GetClientRect(&rc); 
	CRect rect; 
	GetChildRect(rect); 
	DrawBorders(&dc,rc); 
	dc.Draw3dRect(rect, ::GetSysColor(COLOR_3DDKSHADOW), 
		::GetSysColor(COLOR_3DDKSHADOW)); 
} 
int CDisassemblyBar::UpdateText(CString str_dir) 
{ 
 
	CString str_addstring=_T(""); 
	CString str_line=_T(""); 
 
//	str_addstring=_T("Compiling ")+str_file+_T("..."); 
	int i_fend=0; 
	int i_errnum=0; 
//	FILE *pf; 
//	if((pf=fopen(str_errordir,"r"))==NULL) 
//		return 0; 
//	ferr..open(str_errordir,'r'); 
   
	CFileException fileException;   
	CStdioFile myFile;  
	if(!myFile.Open(str_dir,CFile::modeRead|CFile::typeText)) 
		  return 0; 
	int i=myFile.GetLength(); 
	if(myFile.GetLength()!=0) 
	do 
	{ 
	i_fend=myFile.ReadString(str_line); 
	str_addstring=str_addstring+str_line+"\n"; 
//	i_errnum++; 
	}while (i_fend!=NULL); 
 
//	CString str_num=_T(""); 
//	str_num.Format("%d", i_errnum); 
 
//	str_addstring=str_addstring+"There are "+str_num+" errors"; 
 
	m_disassemctrl.SetWindowText(str_addstring); 
 
	myFile.Close(); 
 
 
	return 1; 
}