#ifndef __CHOOSEPHOTOBASE_H__ #define __CHOOSEPHOTOBASE_H__ #include "MyBmpButton2.h" #include "resource.h" #include #include "shockwaveflash.h" #include "EditListCtrl.h" #include "ShowSelPhoto.h" #include "ShowSelPhoto2.h" #include "DragListCtrl.h" // add by Jeff 2015.04.06 #include "DragDropListCtrl.h" // add by Jeff 2015.04.06 #include using namespace std; #define THUMBNAIL_WIDTH 100 #define THUMBNAIL_HEIGHT 90 //文件类型; typedef enum _FILETYPE { TYPE_FOLDER = 1, //文件夹; TYPE_ICON //图标; }FILETYPE; //查看相片时的操作类型索引; typedef enum _OPERTYPEINDX { INDX_ALL = 0, //全部; INDX_SEL, //选中; INDX_NOSEL, //未选; INDX_DEL, //删除; INDX_INTOALBUM, //入册; INDX_ENTRYPHASSE //入底; }OPERTYPEINDX; //图片资源; typedef struct _SResData { int nType; //文件类型; CString strName; //文件名; CString strFilePath; //文件图片全路径; }SResData; //菜单按钮信息; struct SMenuBtnData { UINT nID; CString strBtnName; SMenuBtnData(const UINT n, const LPCTSTR pName) { nID = n; strBtnName = pName; } }; typedef struct _SFolderInfo SFolderInfo; // 选片、选设计基类; class ChoosePhotoBase : public CDialog { public: ChoosePhotoBase(); ChoosePhotoBase(DWORD id, CWnd *pParent); virtual ~ChoosePhotoBase(); virtual BOOL OnInitDialog(); virtual CStringArray* GetCurArray(const int nIndx, SFolderInfo* m_pForder = NULL); virtual BOOL OnDel(); //点击右键事件 virtual void OnRclickList1(); virtual CString GetZSInfo(int iItem); virtual BOOL ReLoad(); virtual BOOL GetData(); virtual void UpdateChooseZS(); virtual void LoadPhotos(); virtual void GetNoSelPhoto(); virtual void GetDelPhotos(OUT CString& strDelPhotos); //获取所有文件夹名; virtual void GetAllFolderNames(CString& strNames); // 排序; virtual void ChoosePhotoBase::SortArray2(CArray&datearray); // 创建线程加载函数LoadThumbNail3; virtual void LoadThumbImages(); virtual BOOL TerminateThread(); // 绘制工作; virtual void DrawImageWork() = 0; // 缩放图片大小; virtual void ZoomImage(Image* pImage, Rect& desRt); // 绘制界面; virtual void DrawInterface(); // 获取路径添加到选中相片; virtual int GetPathAddToSel(CStringArray* pSelArr, const CString& strName, CStringArray* pAllArr); virtual void OnPaint2(CWnd *pWnd); //通过文件夹获取所有文件; virtual void GetAllFileFromFolder(const int nType, CString& strFileNames); public: static CString GetModifyTime2(CString path); // 从相片编号获取路径; static CString GetPathFromNo2(CString dir, CString no, CStringArray *pArray); // 从相片编号获取路径; static CString GetPathFromNo(CString dir, CString no, CStringArray *pArray); void SetLiaPath(CString path); int DelPhotoFromName(CStringArray& arr, const CString& strName); int GetZS(CString str); int GetCrrSel(){return m_SelectCategory;} void GetSelCountFromName(CString name, CString &scount); // 获取全部图片路径; void GetAllPhotoPath(CString& strDirPath, CStringArray& arr); // 获取套系名称; void GetTXName(const CString* pStrOrder, const int nModle, BOOL& bGrowthTx, CString& strTxName); void GetPhotos(); // 判断字符串是否是数字组成; BOOL CheckOK(CString name); BOOL CheckName(CString name); CString GetSelName(CString name); // 清除资源的路径; void ClearResData(); // 记录要删除的相片; void RecordDeletedPhotos(CString* pStrDel, CStringArray& arr); // 添加选中相片; int AddPhotoFromDir(CStringArray* pSelArr, const CString& strDir, CString& str); void Save(IN LPCTSTR lpPath, IN LPCTSTR lpFileName); BOOL IsPhoto2Exist(); // 文件是否存在; BOOL IsFileExistInDir(CString* pPath); // 是否选取相片; BOOL IsSelPhoto(CString strPhotoName); // 检查本机上是否有缓存的相片; BOOL IsThereACacheImg(); // 获取未选相片数量; int GetNoSelPhotoCount(CStringArray* pAllPhotoPath, CStringArray* pSelPhotoPath); void CalChooseZS(CStringArray* pSelArr, CStringArray* pAllArr); //重新从资源里加载图片; int ReLoadImageFromRes(Image** pImageOut, const CString& strFile, BOOL& bNulling); //检测目录是否存在; BOOL IsShareFolderExist(CString& strSharePath); protected: BOOL m_bSort; BOOL m_bCanSave; int m_ticks; int m_timer; int m_nChoosePhotoType; // =0:修片; =1:原片 =2:原片+修片; CString m_sChooseFilter; CStringArray m_DirArrayBuf; ShowSelPhoto m_selphotownd; ShowSelPhoto2 m_selphotownd2; public: CString m_liapath; CString m_path; // 选片或看设计的片种目录; CString m_strOrderNumber; CString m_status8; CString m_name; CString m_seltxname; // 选片时选中的套系名或景点名; CString taoxiname; CString m_taoxijiage; CString m_waiter1; CString m_waiter2; CString m_clothescount; CString ren; CString m_time5old; CString m_time6old; CString m_checkstatus; // 未看 或者 OK; CString m_size; CString m_oldmoney3; CString m_name1; CString m_name2; CString m_phone1; CString m_phone2; CString m_time4; CString m_waiter3; // 选片人员(g_user.name当前登陆系统人员) CString m_takezs; CString m_taoxizs; CString m_choosezs; CString m_money3; CString m_urgent; CString m_bz3; CString m_bz4; CString m_bz2; CString m_time5; CString m_time6; CString m_delphotos; // dindan.delphotos字段里保存着删除的相片,格式:001;002;003;004; CStringArray m_AllPhotoPath; // 查看全部相片;相片名的全路径名; CStringArray m_SelPhotoPath; // 查看选中相片; CStringArray m_NoSelPhotoPath; // 查看未选相片; CStringArray m_DelPhotoPath; // 查看删除相片;相片名的全路径名; CStringArray m_IntoAlbumPath; // 查看入册相片; CStringArray m_EntryPhasepath; // 查看入底相片; CArray m_oldsparray; // 表dindansp3; CArray m_sparray; // 表shangpin:订单号、商品名、商品单位、商品价格1、价格2、价格3、类别、是否上架、备注; CArray m_List2array; // 表shangpin; int m_SelectCategory; // 作用:当前欲查看的相片(全部、选中、未选、删除、入册、入底); int m_Runingmode; // 作用:选片模式==0、看设计模式==1, 默认为0; BOOL m_bSave; int m_bModify; // 修改; BOOL m_bSaveFail; BOOL m_bGrowthTX; BOOL m_bHide; //是否显示小图; BOOL m_bFromLocal; //是否通过本地获取相图路径; bool m_bRunning; // 线程运行标志; bool m_bTerminate; // 线程终止的标志; unsigned int m_dwThreadID; // Thread ID; HANDLE m_hThread; HANDLE m_hEvent; // Thread and Event handle; vector m_vResData; // HWND m_showpichwd; Image* m_pHideImg; // 相片icon; Image* m_pBk; CArray m_picarray; // DWORD = MyBmpButton2*地址; CArray m_rcarray; // MyBmpButton2位置; // dindansp.no或no2的记录(未使用); CStringArray m_noarray; // dindansp.no或no2的记录; CStringArray m_no2array; // CListCtrl m_ListCtrl; CImageList m_ImageListThumb; // image list holding the thumbnails // dindansp表: 自动id、编号、商品名称、价格、数量、(p数、张数、)照片编号; CEditListCtrl m_List3; // dindansp表: 用于显示dindansp表,商品编号,商品名,数量; CEditListCtrl m_List2; CComboBox m_combo1; #if JEFF_TEST_ON //CDragListCtrl m_List1; CDragDropListCtrl m_List1; #else CListCtrl m_List1; #endif }; #endif // #ifndef __CHOOSEPHOTOBASE_H__