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

📄 prime.h

📁 Thinkinc++English 电子书籍,英文版
💻 H
字号:
// Prime.h : CPrime 的声明

#pragma once
#include "resource.h"       // 主符号

#include "Simple17.h"


// CPrime

class ATL_NO_VTABLE CPrime : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CPrime, &CLSID_Prime>,
	public IDispatchImpl<IPrime, &IID_IPrime, &LIBID_Simple17Lib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
	public IPersistStreamInit
{
public:
	CPrime()
		: m_nNow(0)
		, m_bDirty(false)
	{
	}

DECLARE_REGISTRY_RESOURCEID(IDR_PRIME)


BEGIN_COM_MAP(CPrime)
	COM_INTERFACE_ENTRY(IPrime)
	COM_INTERFACE_ENTRY(IDispatch)
		// 手工添加接口映射表
	COM_INTERFACE_ENTRY(IPersistStreamInit)
		// 表示如果要取得 IPersistStream 指针,则返回 IPersistStreamInit 指针
	COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStreamInit)
		// 表示如果要取得 IPersist 指针,则返回 IPersistStremInit 指针
	COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersistStreamInit)
END_COM_MAP()


	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		return S_OK;
	}
	
	void FinalRelease() 
	{
	}

public:
	STDMETHOD(GetNext)(LONG* pVal);
private:
	// 从这里开始计算素数
	long m_nNow;
	// 内部持续性数据是否已经变化了
	bool m_bDirty;
public:
// IPersist
	STDMETHOD(GetClassID)(/*[out]*/CLSID * pClassID);
// IPersistStream
	STDMETHOD(IsDirty)(void);
	STDMETHOD(Load)(/*[in]*/IStream *pStm);
	STDMETHOD(Save)(/*[in]*/IStream *pStm,/*[in]*/BOOL fClearDirty);
	STDMETHOD(GetSizeMax)(/*[out]*/ULARGE_INTEGER *pcbSize);
// IPersistStreamInit
	STDMETHOD(InitNew)(void);
};

OBJECT_ENTRY_AUTO(__uuidof(Prime), CPrime)

⌨️ 快捷键说明

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