// MUITransfer.h : main header file for the MUITransfer DLL
//

#pragma once

#ifndef __AFXWIN_H__
	#error include 'stdafx.h' before including this file for PCH
#endif

class CMUITransfer
{
public:
	CMUITransfer(void);
	virtual ~CMUITransfer(void);
	//RC
	virtual int GetRCCount()=0;
	virtual HRESULT GetCurNonUnicodeLangCode(LPWSTR pwszLangCode)=0;

	//EnumRC can enumerate all other language except current selected. 
	//    (ex: if support 'CHT', 'CHS', 'ENU', current selected is 'CHT', EnumRC can access 'CHS', 'ENU')
	//If current language hasn't been selected, it can access all supported language by nIndex and return it at pwszLangCode.
	//    (ex: if support 'CHT', 'CHS', 'ENU', current selected is none, EnumRC can access 'CHT', 'CHS', 'ENU')
	virtual HRESULT EnumRC(const int nIndex, LPWSTR pwszLangCode, LPWSTR pwszRCLocalName)=0;

	virtual HRESULT SelectRC(LPWSTR pwszLangCode)=0; 
	virtual HRESULT GetCurRCPath(LPWSTR pwszPath)=0; 
	virtual HRESULT GetCurLangCode(LPWSTR pwszLangCode)=0; 
	//Reference Path
	virtual int GetReferenceCount()=0;
	virtual HRESULT EnumReference(const int nIndex, LPWSTR pwszDesc, LPWSTR pwszPath)=0;
	//Shortcut
	virtual HRESULT UpdateStartMenu()=0;

	//
	virtual HRESULT UpdatePresetPath(LPWSTR pwszArguPath, LPWSTR pwszRealPath)=0;
	virtual HRESULT Reload(BOOL bInitialByCountry)=0;

};

typedef CMUITransfer* (*pfnGetMUITransfer)(LPCWSTR, LPCWSTR, LPCWSTR, BOOL, BOOL);
typedef HRESULT (*pfnReleaseMUITransfer)(CMUITransfer*);

CMUITransfer* GetMUITransfer(LPCWSTR pwszResourceXML,
							 LPCWSTR pwszReferenceXML,
							 LPCWSTR pwszStartMenuXML,
							 BOOL bInitialByCountry,
							 BOOL bIsUnicodeApp);	
HRESULT ReleaseMUITransfer(CMUITransfer* pTransfer);
