#if !defined(AFX_ShowEffectDlg_H__2F27D99E_BAA5_4945_85CE_96D524B078DA__INCLUDED_)
#define AFX_ShowEffectDlg_H__2F27D99E_BAA5_4945_85CE_96D524B078DA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ShowEffectDlg.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// ShowEffectDlg dialog
#include <vector>
using namespace std;
#define RCARRARCOUNT 100
class ShowEffectDlg : public CDialog
{	
	float m_tempscale;
	
	// �Ƿ�Ҫ���¼���PNGЧ��ͼ;
	BOOL m_bLoadPNG;
	// �Ƿ�Ҫ���¼���JPG�˿���Ƭ;
	BOOL m_bLoadJPG;
	CArray<int,int>m_rcarray[RCARRARCOUNT];		// m_rcarray����,���ڼ�¼PNGͼƬ���alphaɫС��200�����ص�����;
	// ��ǰ�����ص�PNGЧ��ͼ;
	Bitmap *m_pImgPNG;
	// ��ǰ�����ص�PNGЧ������ͼ;
	Bitmap *m_pImgPNGbake;

	// ��ǰ�����صĹ˿�JPG��Ƭ;
	Image *m_pImgJPG;
	float m_fscale;
	CRect m_rcscreen;
	CPoint m_startpt;
	CPoint m_startpt2;

	// PNGЧ��ͼ����;
	CStringArray m_AryPNGImgpaths;
	// PNGЧ��ͼ��List�б����λ������ֵ;
	int m_nPNGIndex;
	// JPG�˿���Ƭ��List�б��е�λ������ֵ;
	int m_nJPGIndex;

    Bitmap *m_pImgFinalShow;// m_pImgFinalShow:������ʾPNGЧ��ͼ��Bimap����PNG+������Ƭ �϶�Ϊһ�Ľ����;
	CRect m_rc;
	CRect m_rcbak;
// Construction
public:
	void GetRgn(Bitmap *pBmpImage);
	// ѡƬ��������ʾ����Ƭ����;
	CStringArray *m_pPhotopatharray;
	void RcChange();
	void InitRc(Image *img);
	void MakeEffect();
	ShowEffectDlg(CWnd* pParent = NULL);   // standard constructor

	vector<CString> m_vPNGFile;
	CImageList	m_ImageListThumb;		// image list holding the thumbnails
	bool m_bRunning;			// Flag to whether thread is on running or not
	bool m_bTerminate;			// Flag to Thread to be terminated
	unsigned int m_dwThreadID;	// Thread ID
	HANDLE m_hThread, m_hEvent; // Thread and Event handle
	BOOL TerminateThread();

	vector<CString> m_vJPGFile;
	CImageList	m_ImageListThumb2;		// image list holding the thumbnails
	bool m_bRunning2;			// Flag to whether thread is on running or not
	bool m_bTerminate2;			// Flag to Thread to be terminated
	unsigned int m_dwThreadID2;	// Thread ID
	HANDLE m_hThread2, m_hEvent2; // Thread and Event handle
	BOOL TerminateThread2();
// Dialog Data
	//{{AFX_DATA(ShowEffectDlg)
	enum { IDD = IDD_DLGShowEffect };
	// JPG���õ�Listͼ�б�;
	CListCtrl	m_ListJPG;
	// PNG���õ�Listͼ�б�;
	CListCtrl	m_ListPNG;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(ShowEffectDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(ShowEffectDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnDestroy();
	afx_msg void OnPaint();
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnButton1();
	afx_msg void OnButton2();
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
	afx_msg void OnClickList1(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnClickList2(NMHDR* pNMHDR, LRESULT* pResult);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_ShowEffectDlg_H__2F27D99E_BAA5_4945_85CE_96D524B078DA__INCLUDED_)