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

📄 floattooldlg.h

📁 研究浮点运算的工具。在汇编下研究使用浮点运算
💻 H
字号:
// FloatToolDlg.h : 头文件
//
/*
 *	
 以后工作
 1。UNICODE				ok
 2.移植到C++。net
 3。移植到C#。net
 4。资源国际化
 5。增加位宽度
 6。改进转换函数
 7。优化代码,使规范化

 */
#pragma once

#ifndef __AFXWIN_H__
#include "afxwin.h"
#endif

#ifndef _INCLUDE_SDBG_ERROR_HPP_INCLUDE
#include "sdbg_error.hpp"
#endif

#ifndef _INCLUCDE_BIGINT_HPP_INCLUDE
#include "BigInt.hpp"
#endif

using namespace SLib;
#pragma pack(push)

//#ifndef _WIN32

#pragma pack(8)
typedef union __m64
{
	UINT64 m64_u64;
	float m64_f32[2];
	__int8 m64_i8[8];
	short int m64_i16[4];
	int m64_i32[2];
	INT64 m64_i64;
	unsigned __int8 m64_u8[8];
	unsigned short int m64_u16[4];
	unsigned int m64_u32[2];
} __m64;

#pragma pack(16)

typedef struct __m128 {
	float m128_f32[4];
} __m128;

typedef struct __m128d {
	double m128d_f64[2];
} __m128d;

typedef union __m128i {
	__int8 m128i_i8[16];
	short int m128i_i16[8];
	int m128i_i32[4];
	INT64 m128i_i64[2];
	unsigned __int8 m128i_u8[16];
	unsigned short int m128i_u16[8];
	unsigned int m128i_u32[4];
	UINT64 m128i_u64[2];
} __m128i;

//#endif //_WIN32
typedef union m128
{
	__m128i m128i;
	__m128d m128d;
	__m128	m128f;
	__m64	m64[2];
}m128;

#pragma pack(pop)

//class CError : public  SLib::CSError
//{
//
//public:
//	CError();
//	~CError();
//	virtual void OutputMsg(const tstring & msg)const ;
//};

// CFloatToolDlg 对话框
class CFloatToolDlg : public CDialog,public  CSError
{
public:
	enum {  BIN =2, DEC = 10, HEX = 16, FLOAT, DOUBLE, LONG_DOUBLE};
	enum { NO_SEPERATOR, SPACE_SEPERATOR, COMMA_SEPERATOR };

	afx_msg void OnBnClickedFloat2();
	afx_msg void OnBnClickedDec2();
	afx_msg void OnBnClickedDouble2();
	afx_msg void OnBnClickedLongDouble2();
	afx_msg void OnBnClickedBin2();
	afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedCancel();
	afx_msg void OnBnClickedClearInput();
	afx_msg void OnBnClickedQuit();
	afx_msg void OnBnClickedNoSeperator();
	afx_msg void OnBnClickedSpaceSeperator();
	afx_msg void OnBnClickedCommaSeperator();
	afx_msg void OnBnClickedSize2();
	afx_msg void OnBnClickedSize4();
	afx_msg void OnBnClickedSize6();
	afx_msg void OnBnClickedSize8();
	afx_msg void OnBnClickedSize10();
	afx_msg void OnBnClickedSize16();
	afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnEnChangeInputStr();
	afx_msg void OnBnClickedHex();
	afx_msg void OnBnClickedFloat();
	afx_msg void OnBnClickedDec();
	afx_msg void OnBnClickedDouble();
	afx_msg void OnBnClickedLongDouble();
	afx_msg void OnBnClickedBin();
	afx_msg void OnBnClickedHex2();

	void OutputResult(tstring ostring);
	void ClearFloatStr(void);
	void SetInterFaceItem(void);
	void EnableAllItem(void);
	void Convert(void);
	void GenOutput(void);
	tstring GetInputStr(void);
	virtual void OutputMsg(const tstring & msg)const ;

protected:

	int m_Type;
	int m_OutputType;
	int m_Seperator;
	float m_fInputVal;
	double m_dInputVal;
	long double m_ldInputVal;
	int m_Size;

	UINT64 m_hdbInputVal;
	CStatic m_OutputLabel;
	m128 m_m128;
	CBigInt m_BigInt;

	CEdit m_InputStr;
	CEdit m_OutputStr;
	CString m_BinHigh;
	CString m_SignBit;
	CString m_DecMantissa;
	CString m_HexMantissa;
	CString m_DecExponent;
	CString m_HexExponent;
	CString m_HideBit;
	CString m_2Exponent;
	CString m_2Mantissa;


	tstring Filter(const tstring& s);
	BOOL GetInput(tstring in);

// 构造

public:
	CFloatToolDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_FLOATTOOL_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持
	HCURSOR OnQueryDragIcon();
// 实现
protected:
	HICON m_hIcon;
	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR O2nQueryDragIcon();
	DECLARE_MESSAGE_MAP()
};

⌨️ 快捷键说明

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