#pragma once

#include "PDFHostDlg.h"

// DLPdfObjCtrl.h : Declaration of the CDLPdfObjCtrl ActiveX Control class.


// CDLPdfObjCtrl : See DLPdfObjCtrl.cpp for implementation.

class CDLPdfObjCtrl : public COleControl
{
	DECLARE_DYNCREATE(CDLPdfObjCtrl)

// Constructor
public:
	CDLPdfObjCtrl();

// Overrides
public:
	virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
	virtual void DoPropExchange(CPropExchange* pPX);
	virtual void OnResetState();
	virtual DWORD GetControlFlags();

// Implementation
protected:
	~CDLPdfObjCtrl();

	DECLARE_OLECREATE_EX(CDLPdfObjCtrl)    // Class factory and guid
	DECLARE_OLETYPELIB(CDLPdfObjCtrl)      // GetTypeInfo
	DECLARE_PROPPAGEIDS(CDLPdfObjCtrl)     // Property page IDs
	DECLARE_OLECTLTYPE(CDLPdfObjCtrl)		// Type name and misc status

// Message maps
	DECLARE_MESSAGE_MAP()

// Dispatch maps
	DECLARE_DISPATCH_MAP()

// Event maps
	DECLARE_EVENT_MAP()

// Dispatch and event IDs
public:
	enum {
        dispidSetLicenseNum = 18L,
        dispidGetDisplayMode = 17L,
        dispidFindNext = 16L,
        dispidFindPrevious = 15L,
        dispidFind = 14L,
        dispidSetPaperColor = 13L,
        dispidResetColor = 12L,
        dispidSetBackgroundColor = 11L,
        dispidClosePDF = 10L,
        dispidGotoLastPage = 9L,
        dispidGotoFirstPage = 8L,
        dispidGetPageCount = 7L,
        dispidGetCurrentPage = 6L,
        dispidSetDisplayMode = 5L,
        dispidGotoThisPage = 4L,
        dispidGotoPreviousPage = 3L,
        dispidGotoNextPage = 2L,
        dispidOpenPDF = 1L
    };

private:
    CPDFHostDlg m_dlgPdfHost;
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnSize(UINT nType, int cx, int cy);

protected:
    // 打开一个PDF文件，其中strFileName是PDF文件的全路径
    LONG OpenPDF(LPCTSTR strFileName);
    // 下一页
    LONG GotoNextPage(void);
    // 上一页
    LONG GotoPreviousPage(void);
    // 直接显示某一页，lPageNumber是页码
    LONG GotoThisPage(LONG lPageNumber);
    // 设置显示模式是否为单页显示（否则，为双页显示）
    void SetDisplayMode(VARIANT_BOOL bSinglePage);
    // 获取当前显示的是第几页
    LONG GetCurrentPage(void);
    // 获取PDF文件的总页数
    LONG GetPageCount(void);
    // 显示首页
    void GotoFirstPage(void);
    // 跳到末页
    void GotoLastPage(void);
    // 关闭PDF文件
    void ClosePDF(void);
    // 设置背景颜色
    VARIANT_BOOL SetBackgroundColor(ULONG color);
    // 重置背景颜色
    VARIANT_BOOL ResetColor(void);
    // 设置页面颜色
    void SetPaperColor(ULONG color);
    // 搜索某个关键字
    VARIANT_BOOL Find(LPWSTR bstrKeyword);
    // 搜索上一个
    VARIANT_BOOL FindPrevious(void);
    // 搜索下一个
    VARIANT_BOOL FindNext(void);
    // 获取显示模式，是否为单页显示
    VARIANT_BOOL GetDisplayMode(void);
    // 设置正版序列号
    void SetLicenseNum(LPCTSTR licenseNum);
};

