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

📄 cxmlprt.h

📁 将exe等可执行文件转化成c程序的反编译程序,先到汇编再到c
💻 H
字号:
// Copyright(C) 1999-2005 LiuTaoTao,bookaa@rorsoft.com

//	CXmlPrt.h

#ifndef	CXmlPrt_H
#define CXmlPrt_H

#include "CXmlList.h"
#include "CMyString.h"

#include "../EXE2C.h"   //for I_XmlOut


class CXmlPrt : public I_XmlOut
{
	CXmlList* 	m_xmllist;
	CMyString*	m_str;

	XMLTYPE m_curword_type;
	PVOID	m_curword_p;

	CString GetLine(int nLine);
    int GetPosXY(int x, int y);
public:

	CXmlPrt();
	~CXmlPrt();
	
	virtual void __stdcall prtt(PCSTR s);
	virtual void __stdcall XMLbegin(enum XMLTYPE xmltype, PVOID p);
	virtual void __stdcall XMLend(enum XMLTYPE xmltype);

	void	prtprtout(class CXmlOutPro* prt);

	void Clear();
	void Clicked(long x1,long x2);
	BOOL GetRightWord(long curpos, long &posfrom, long &posto);
	BOOL GetLeftWord(long curpos, long &posfrom, long &posto);
	BOOL GetCurWord(long curpos, long &posfrom, long &posto);
	int MoveHome(int nLine);
	int MoveLeftWord(int x, int y);
	int MoveRightWord(int x, int y);
	int WordToLeft(int x, int y);
	int WordToRight(int x, int y);
    CString GetText(int y1, int x1, int y2, int x2);
	
    void GetItem(int x, int y, OUT enum XMLTYPE& xmltype, OUT PVOID& p);
	void Display(I_COLOROUT* iColorOut);
    int GetLineCount();
    int GetLineLength(int nLine);
    CString GetString();
    void CommaLast();
    bool SetCurWord(int x, int y);
};

class CXmlOutPro
{
    I_XmlOut* m_out;
	UINT    m_nIdent;
    bool b_OneLine;
    bool fHasSpace;
public:
	BOOL	m_f_prt_in_1line;	//	为true表明要求输出到一行上,不能有回车
	BOOL	m_f_prt_in_comma;	//	为 1 表明用','代替';'
    CXmlOutPro(I_XmlOut* out)
    {
        fHasSpace = false;
        b_OneLine = false;
        m_out = out;
        m_f_prt_in_1line = FALSE;
        m_f_prt_in_comma = FALSE;
        m_nIdent = 0;
    }
	void prtt(PCSTR s)
    {
        if (fHasSpace)
            this->m_out->prtt(" ");
        fHasSpace = false;
        
        this->m_out->prtt(s);
    }
	void prtslen(PCSTR s, int len);
	void XMLbegin(enum XMLTYPE xmltype, PVOID p)
    {
        if (fHasSpace)
            this->m_out->prtt(" ");
        fHasSpace = false;
        this->m_out->XMLbegin(xmltype,p);
    }
	void XMLend(enum XMLTYPE xmltype)
    {
        this->m_out->XMLend(xmltype);
        this->fHasSpace = true;
    }
    void prtspace(int n = 1)
    {
        for (int i=0; i<n; i++) prtt(" ");
    }
	void prtf(PCSTR fmt,...);
	void prtl(PCSTR fmt,...);
	void	EOL();		//	一般情况下,是";\n"
    void endline();
    void SetOneLine(bool b)
    {
        b_OneLine = b;
        if (b)
        {
            m_f_prt_in_1line = true;
            m_f_prt_in_comma = true;
        }
        else
        {
            m_f_prt_in_1line = false;
            m_f_prt_in_comma = false;
        }
    }

	
	void	ident_add1();
	void	ident_sub1();
	void    ident();
	void 	prtl_ident(PSTR fmt,...);
    void 	prtf_ident(PSTR fmt,...);
    void    nospace()
    {
        fHasSpace = false;
    }

    //这个class的用意是,界面给我们提供了一个I_XmlOut,使用起来不方便
    //需要扩展一下
};

#endif	//	CXmlPrt_H

⌨️ 快捷键说明

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