528 lines
19 KiB
C
528 lines
19 KiB
C
|
|
#pragma once
|
|||
|
|
#include "EtUIDialogInfo.h"
|
|||
|
|
#include "EtUIControlProperty.h"
|
|||
|
|
#include "EtUIDialogBase.h"
|
|||
|
|
#include "LostDeviceProcess.h"
|
|||
|
|
#include "EtUITemplate.h"
|
|||
|
|
|
|||
|
|
#define UI_FILE_STRING "Eternity Engine UI File 0.3"
|
|||
|
|
#define UI_HEADER_RESERVED ( 1024 - sizeof( SUIFileHeader ) )
|
|||
|
|
#define UI_FILE_VERSION_01 0x0101
|
|||
|
|
#define UI_FILE_VERSION 0x0102
|
|||
|
|
|
|||
|
|
#define PRE_FIX_COMBOBOX_ELLIPSIS
|
|||
|
|
|
|||
|
|
struct SUIFileHeader
|
|||
|
|
{
|
|||
|
|
char szHeaderString[ 256 ];
|
|||
|
|
int nVersion;
|
|||
|
|
int nTemplateCount;
|
|||
|
|
int nControlCount;
|
|||
|
|
int nFontCount;
|
|||
|
|
|
|||
|
|
SUIFileHeader()
|
|||
|
|
{
|
|||
|
|
ZeroMemory( this, sizeof(SUIFileHeader) );
|
|||
|
|
strcpy_s( szHeaderString, sizeof(szHeaderString), UI_FILE_STRING );
|
|||
|
|
nVersion = UI_FILE_VERSION;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class CEtUIControl;
|
|||
|
|
class CEtUITemplate;
|
|||
|
|
struct SUIElement;
|
|||
|
|
class CEtUIDialog;
|
|||
|
|
|
|||
|
|
class CEtUICallback
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
CEtUICallback() {}
|
|||
|
|
~CEtUICallback() {}
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
virtual void OnUICallbackProc( int nID, UINT nCommand, CEtUIControl *pControl, UINT uiMsg = 0 ) {}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class CEtUIDialog : public CEtUIDialogBase
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
CEtUIDialog( UI_DIALOG_TYPE dialogType = UI_TYPE_FOCUS, CEtUIDialog *pParentDialog = NULL, int nID = -1, CEtUICallback *pCallback = NULL, bool bAutoCursor = false );
|
|||
|
|
virtual ~CEtUIDialog(void);
|
|||
|
|
|
|||
|
|
enum FadeModeEnum {
|
|||
|
|
None,
|
|||
|
|
AllowRender,
|
|||
|
|
CancelRender,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
bool m_bShow;
|
|||
|
|
bool m_bAcceptInputMsgWhenHide; // show <20><><EFBFBD>´<EFBFBD> <20>ƴϴ<C6B4> <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ְ<EFBFBD> <20><><EFBFBD>ִ<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<CEB1> hide <20><>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>ųƮ<C5B3><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
HWND m_hWnd;
|
|||
|
|
std::vector< CEtUIControl * > m_vecControl;
|
|||
|
|
std::vector< CEtUITemplate * > m_vecUITemplate;
|
|||
|
|
std::vector< SUIElement > m_vecDlgFrameElement;
|
|||
|
|
std::vector< SUICoord > m_vecDlgFrameCoord;
|
|||
|
|
EtTextureHandle m_hTexture;
|
|||
|
|
EtTextureHandle m_hDlgTexture;
|
|||
|
|
CEtUIControl *m_pDefaultControl;
|
|||
|
|
std::vector< CEtUIControl* > m_TempControlList;
|
|||
|
|
|
|||
|
|
int m_nDialogID;
|
|||
|
|
CEtUICallback *m_pCallback;
|
|||
|
|
|
|||
|
|
SUIDialogInfo m_DlgInfo;
|
|||
|
|
|
|||
|
|
float m_fScreenWidth;
|
|||
|
|
float m_fScreenWidthRatio;
|
|||
|
|
float m_fScreenWidthBorder;
|
|||
|
|
|
|||
|
|
float m_fScreenHeight;
|
|||
|
|
float m_fScreenHeightRatio;
|
|||
|
|
float m_fScreenHeightBorder;
|
|||
|
|
|
|||
|
|
std::string m_strCmdControlName; // Note : ProcessCommand<6E>ȿ<EFBFBD><C8BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20≯<EFBFBD>
|
|||
|
|
|
|||
|
|
SUIColorEx m_renderDlgColor;
|
|||
|
|
bool m_bFadeOut;
|
|||
|
|
FadeModeEnum m_FadeMode;
|
|||
|
|
bool m_bMouseInDialog;
|
|||
|
|
bool m_bEndInitialize;
|
|||
|
|
|
|||
|
|
float m_fMouseX;
|
|||
|
|
float m_fMouseY;
|
|||
|
|
|
|||
|
|
SHORT m_HotKeyState;
|
|||
|
|
int m_nHotKey;
|
|||
|
|
|
|||
|
|
CEtUIDialog *m_pParentDialog; // Note : <20>ڽ<EFBFBD><DABD><EFBFBD> <20>θ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
std::list<CEtUIDialog*> m_listChildDialog; // Note : <20>ڽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
std::list<CEtUIDialog*> m_listChildModalDialog; // Note : <20>ڽ<EFBFBD><DABD>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
|
|||
|
|
std::string m_strDialogFileName;
|
|||
|
|
SUICoord m_BaseDlgCoord;
|
|||
|
|
|
|||
|
|
bool m_bPassMessageToChild;
|
|||
|
|
bool m_bShowModal;
|
|||
|
|
bool m_bAutoCursor;
|
|||
|
|
bool m_bCursor;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD>ڽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ϲ<EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ<C3BC><C5A9> <20>صӴϴ<D3B4>.
|
|||
|
|
bool m_bElementDialog;
|
|||
|
|
bool m_bElementDialogShowState;
|
|||
|
|
|
|||
|
|
std::map< std::string, CEtUIDialog*> m_cachedControls;
|
|||
|
|
std::vector< std::pair<CEtUIDialog*, bool> > m_vecChildRenderPriorityInfo;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
// <20><><EFBFBD>ϴ<EFBFBD><CFB4>̾<EFBFBD><CCBE>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD>ڽ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20>ȸ´<C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DFBB>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
// <20><>¿ <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>.
|
|||
|
|
//
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|||
|
|
// FontMng<6E><67> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD> <20><><EFBFBD>콺 <20>巡<EFBFBD><E5B7A1> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<EFBFBD>(<28><><EFBFBD><EFBFBD>,<2C>κ<EFBFBD>,<2C><><EFBFBD><EFBFBD>)<29><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> s_fDialogScale<6C><65> <20>ǵ帮<C7B5>°<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
// <20>̹Ƿ<CCB9>, s_fDialogScale<6C><65><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲٴ<D9B2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
static void SetForceDialogScale( float fScale );
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
static float s_fScreenMouseX;
|
|||
|
|
static float s_fScreenMouseY;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
// Note : <20>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>õ<EFBFBD> <20><><EFBFBD><EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><><EFBFBD>µǴ<C2B5> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
|||
|
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ѵ<EFBFBD> <20>ϴ<EFBFBD>. <20><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD> <20><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD> <20>ƴ϶<C6B4> <20><><EFBFBD>̾<EFBFBD><CCBE>α<CEB1><D7B8><EFBFBD>
|
|||
|
|
// <09><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD> <20><><EFBFBD>ڴ<EFBFBD>.
|
|||
|
|
//
|
|||
|
|
static int s_nTooltipStringIndex;
|
|||
|
|
static std::wstring s_strTooltipString;
|
|||
|
|
static CEtUIDialog *s_pTooltipDlg;
|
|||
|
|
|
|||
|
|
static float s_fDialogScale;
|
|||
|
|
static float s_fDialogScaleValueVert;
|
|||
|
|
static float s_fDialogScaleValueHori;
|
|||
|
|
static float s_fMinDialogScale;
|
|||
|
|
static float s_fMaxDialogScale;
|
|||
|
|
static int s_nUISize;
|
|||
|
|
static void (_stdcall *s_pAutoCursorPtr)( bool bShow );
|
|||
|
|
|
|||
|
|
static int s_nDialogTextureSize;
|
|||
|
|
|
|||
|
|
float m_fLastShowDelta;
|
|||
|
|
bool m_bLoadedTexture;
|
|||
|
|
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
static CEtUIControl *s_pMouseEnterControl;
|
|||
|
|
|
|||
|
|
static void ReleaseMouseEnterControl();
|
|||
|
|
static void SetMouseEnterControl( CEtUIControl *pControl );
|
|||
|
|
static void SetAutoCursorCallback( void (_stdcall *pFunc)( bool bShow ) ) { s_pAutoCursorPtr = pFunc; }
|
|||
|
|
|
|||
|
|
// FadeForBlow<6F><77> UI<55><49><EFBFBD><EFBFBD> <20><><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>Ѵٰ<D1B4> <20>Ѵ<EFBFBD>. <20>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
static CEtUIDialog *s_pFadeDlg;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
void AddChildDialog( CEtUIDialog *pDialog );
|
|||
|
|
void AddChildModalDialog( CEtUIDialog *pDialog );
|
|||
|
|
void SetChildRenderPriority(CEtUIDialog* pDlg, bool bTail);
|
|||
|
|
void RefreshChildRenderPriority();
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
// EtUIListBoxEx<45><78> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڽ<EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<CEB1> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEBCAD><EFBFBD><EFBFBD>,
|
|||
|
|
// <20>ƿ<EFBFBD> <20>ڽĴ<DABD><C4B4>̾<EFBFBD><CCBE>α<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
// <20><EFBFBD><D7B7><EFBFBD> EtUIListBoxEx<45><78> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڽ<EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<CEB1> ó<><C3B3><EFBFBD>Ϸ<EFBFBD> <20>Ҷ<EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD>.
|
|||
|
|
// (<28><><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD> <20>ڽ<EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<CEB1> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<CAB1><E2B6A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.)
|
|||
|
|
//
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EtUIDialog<6F><67> <20>Ҹ<EFBFBD><D2B8>ڿ<EFBFBD><DABF><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD> <20>θ<CEB8> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뵵<EFBFBD><EBB5B5> <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>.
|
|||
|
|
void DelChildDialog( CEtUIDialog *pDialog );
|
|||
|
|
void DelChildModalDialog( CEtUIDialog *pDialog );
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
bool IsRootDialog() { return (m_pParentDialog==NULL)?true:false; }
|
|||
|
|
bool IsChildDialog( const CEtUIDialog *pDialog );
|
|||
|
|
CEtUIDialog* GetParentDialog() { return m_pParentDialog; }
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
// Note : <20>ڽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Show()<29><> <20>Ҷ<EFBFBD><D2B6><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Show()<29><> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20>Ʒ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
//
|
|||
|
|
void ShowChildDialog( CEtUIDialog *pDialog, bool bShow );
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
void ShowChildDialog( std::list<CEtUIDialog*> &listDialog, CEtUIDialog *pDialog, bool bShow );
|
|||
|
|
bool IsAllowRender();
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
static void SetTooltipDlg( CEtUIDialog *pTooltipDlg ) { s_pTooltipDlg = pTooltipDlg; }
|
|||
|
|
static void ShowTooltipDlg( CEtUIControl *pControl, bool bShow, int nStringIndex = 0, DWORD color = 0xffffffff, bool bPermanent = false );
|
|||
|
|
static void ShowTooltipDlg( CEtUIControl *pControl, bool bShow, const std::wstring &strTooltip, DWORD color = 0xffffffff, bool bPermanent = false );
|
|||
|
|
static int GetTooltipStringIndex() { return s_nTooltipStringIndex; }
|
|||
|
|
static bool IsTooltipControl(CEtUIControl* pCtrl);
|
|||
|
|
static bool IsShowTooltipDlg() { return s_pTooltipDlg->IsShow(); }
|
|||
|
|
|
|||
|
|
virtual void SetTooltipControl( CEtUIControl *pControl ) {}
|
|||
|
|
virtual void SetTooltipInfo(DWORD color = 0xffffffff, bool bPermanent = true) { _ASSERT(0); }
|
|||
|
|
virtual void ClearTooltipInfo() { _ASSERT(0); }
|
|||
|
|
virtual CEtUIControl* GetTooltipCtrl() const { _ASSERT(0); return NULL; }
|
|||
|
|
|
|||
|
|
static float GetDialogScale() { return s_fDialogScale; }
|
|||
|
|
static void UpDialogSize();
|
|||
|
|
static void DownDialogSize();
|
|||
|
|
static void CalcDialogScaleValue( int nWidth = 0, int nHeight = 0 );
|
|||
|
|
|
|||
|
|
// <20>ػ<D8BB> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>.
|
|||
|
|
static void CalcDialogScaleByResolution( int nWidth, int nHeight );
|
|||
|
|
|
|||
|
|
static void SetDialogSize( int nStep, int nWidth = 0, int nHeight = 0 );
|
|||
|
|
|
|||
|
|
static int GetTextureMemorySize() { return s_nDialogTextureSize; }
|
|||
|
|
void ProcessMemoryOptimize( float fElapsedTime );
|
|||
|
|
void FreeDialogTexture();
|
|||
|
|
void LoadDialogTexture();
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
void SetFadeMode( FadeModeEnum Mode ) { m_FadeMode = Mode; }
|
|||
|
|
|
|||
|
|
bool IsMouseInDlg() { return m_bMouseInDialog; }
|
|||
|
|
void GetMouseMovePoints( float &fMouseX, float &fMouseY );
|
|||
|
|
void GetScreenMouseMovePoints( float &fMouseX, float &fMouseY );
|
|||
|
|
|
|||
|
|
void SetRenderColor( DWORD dwColor )
|
|||
|
|
{
|
|||
|
|
m_renderDlgColor.dwColor[UI_STATE_NORMAL] = dwColor;
|
|||
|
|
m_renderDlgColor.dwCurrentColor = dwColor;
|
|||
|
|
}
|
|||
|
|
void SetSoundEnable( bool bEnable ) { m_DlgInfo.bSound = bEnable; }
|
|||
|
|
// Note : <20>θ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>찡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾƵ<CABE> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB0A1><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
|
|||
|
|
// <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ä<><C3A4>â<EFBFBD><C3A2><EFBFBD><EFBFBD> ä<><C3A4>â<EFBFBD><C3A2> <20>Ⱥ<EFBFBD><C8BA>϶<EFBFBD> <20><><EFBFBD>콺 Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ä<><C3A4>â<EFBFBD><C3A2> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
//
|
|||
|
|
void SetPassMessageToChild( bool bPass ) { m_bPassMessageToChild = bPass; }
|
|||
|
|
void SetShowModal( bool bShowModal ) { m_bShowModal = bShowModal; }
|
|||
|
|
|
|||
|
|
void SetElementDialog( bool bElement ) { m_bElementDialog = bElement; }
|
|||
|
|
bool IsElementDialog() { return m_bElementDialog; }
|
|||
|
|
// ElementDialog<6F><67> <20><><EFBFBD>쿣 <20><><EFBFBD><EFBFBD> UI_TYPE_SELF<4C><46> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD> MsgProc<6F><63> Render<65>Ǵ<EFBFBD> <20><><EFBFBD>찡 <20><><EFBFBD><EFBFBD><E2B6A7><EFBFBD><EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IsShow<6F>Լ<EFBFBD><D4BC><EFBFBD> <20>˻<EFBFBD><CBBB><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20>̶<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
virtual void SetElementDialogShowState( bool bShow ) { m_bElementDialogShowState = bShow; }
|
|||
|
|
bool IsShowElementDialog() { return m_bElementDialogShowState; }
|
|||
|
|
|
|||
|
|
// <20><>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><>¿ <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
void SetHotKeyState( SHORT HotKeyState ) { m_HotKeyState = HotKeyState; }
|
|||
|
|
|
|||
|
|
bool IsCmdControl( const char *szCmdCtlName );
|
|||
|
|
protected:
|
|||
|
|
void UpdateScreen();
|
|||
|
|
void UpdateFrameRectsEx();
|
|||
|
|
|
|||
|
|
void SetCmdControlName( const char *szCmdCtlName ) { m_strCmdControlName = szCmdCtlName; }
|
|||
|
|
const std::string& GetCmdControlName() const { return m_strCmdControlName; }
|
|||
|
|
|
|||
|
|
void FadeIn( float fElapsedTime );
|
|||
|
|
void FadeOut( float fElapsedTime );
|
|||
|
|
|
|||
|
|
void SetFadeIn() { m_bFadeOut = false; }
|
|||
|
|
void SetFadeOut() { m_bFadeOut = true; }
|
|||
|
|
|
|||
|
|
virtual bool OnMouseMove( float fX, float fY );
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
void CreateTestUIControl();
|
|||
|
|
|
|||
|
|
bool Load_01( CStream &Stream, SUIFileHeader &fileheader );
|
|||
|
|
bool Load( CStream &Stream );
|
|||
|
|
bool Save( CStream &Stream );
|
|||
|
|
const char *GetDialogFileName() { return m_strDialogFileName.c_str(); }
|
|||
|
|
const char *GetDialogUITextureFileName() { return m_DlgInfo.szUITexturename; }
|
|||
|
|
|
|||
|
|
void SetDialogID( int nID ) { m_nDialogID = nID; }
|
|||
|
|
int GetDialogID() { return m_nDialogID; }
|
|||
|
|
|
|||
|
|
virtual void Show( bool bShow );
|
|||
|
|
virtual bool IsShow() const { return m_bShow; }
|
|||
|
|
void SetAcceptInputMsgWhenHide( bool bAcceptMsg ) { m_bAcceptInputMsgWhenHide = bAcceptMsg; };
|
|||
|
|
|
|||
|
|
HWND GetHWnd() { return m_hWnd; }
|
|||
|
|
void SetHWnd( HWND hWnd ) { m_hWnd = hWnd; }
|
|||
|
|
|
|||
|
|
void SetCallback( CEtUICallback *pCallback ) { m_pCallback = pCallback; }
|
|||
|
|
CEtUICallback *GetCallBack() { return m_pCallback; }
|
|||
|
|
|
|||
|
|
void SetDlgInfo( SUIDialogInfo &DlgInfo );
|
|||
|
|
void GetDlgInfo( SUIDialogInfo &DlgInfo );
|
|||
|
|
void ReloadDlgTexture();
|
|||
|
|
void DeleteDlgTexture();
|
|||
|
|
|
|||
|
|
// Note : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⺻ <20><><EFBFBD><EFBFBD>Ʈ <20>ػ<D8BB> 1024x768.
|
|||
|
|
// Border<65><72> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> ũ<><EFBFBD><E2BFA1> <20><><EFBFBD><EFBFBD>Ʈ <20><>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> ũ<>⸦ <20><> <20>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
// Ratio<69><6F> <20><><EFBFBD><EFBFBD>Ʈ ũ<><C5A9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
//
|
|||
|
|
float GetScreenWidth() { return m_fScreenWidth; }
|
|||
|
|
float GetScreenWidthBorderSize() { return m_fScreenWidthBorder; }
|
|||
|
|
float GetScreenWidthRatio() { return m_fScreenWidthRatio; }
|
|||
|
|
|
|||
|
|
float GetScreenHeight() { return m_fScreenHeight; }
|
|||
|
|
float GetScreenHeightBorderSize() { return m_fScreenHeightBorder; }
|
|||
|
|
float GetScreenHeightRatio() { return m_fScreenHeightRatio; }
|
|||
|
|
|
|||
|
|
//void GetScreenSize( float &fWidth, float &fHeight );
|
|||
|
|
float GetXCoord();
|
|||
|
|
float GetYCoord();
|
|||
|
|
virtual void MoveDialog( float fX, float fY );
|
|||
|
|
|
|||
|
|
void SetAllignType( UIAllignHoriType Hori, UIAllignVertType Vert ) { m_DlgInfo.AllignHori = Hori; m_DlgInfo.AllignVert = Vert; }
|
|||
|
|
void GetAllignType( UIAllignHoriType &Hori, UIAllignVertType &Vert ) { Hori = m_DlgInfo.AllignHori; Vert = m_DlgInfo.AllignVert; }
|
|||
|
|
virtual void SetDlgCoord( const SUICoord &DlgCoord ) { m_DlgInfo.DlgCoord = DlgCoord; UpdateRects(); }
|
|||
|
|
void GetDlgCoord( SUICoord &Coord ) { Coord = m_DlgInfo.DlgCoord; }
|
|||
|
|
const SUICoord& GetDlgCoord() const { return m_DlgInfo.DlgCoord; }
|
|||
|
|
|
|||
|
|
SUICoord DlgCoordToScreenCoord( const SUICoord &Coord );
|
|||
|
|
SUICoord ScreenCoordToDlgCoord( SUICoord &Coord );
|
|||
|
|
float Width() { return m_DlgInfo.DlgCoord.fWidth; }
|
|||
|
|
float Height() { return m_DlgInfo.DlgCoord.fHeight; }
|
|||
|
|
void GetPosition( float &fX, float &fY );
|
|||
|
|
void SetPosition( float fX, float fY );
|
|||
|
|
CEtUIControl *GetControlAtPoint( float fX, float fY );
|
|||
|
|
|
|||
|
|
int GetTemplateCount() { return ( int )m_vecUITemplate.size(); }
|
|||
|
|
void SetTemplate( int nIndex, CEtUITemplate &Template );
|
|||
|
|
int AddTemplate( CEtUITemplate &Template );
|
|||
|
|
void DeleteTemplate( int nIndex );
|
|||
|
|
void DeleteAllTemplate();
|
|||
|
|
CEtUITemplate *GetTemplate( int nIndex );
|
|||
|
|
float GetFontHeight( int &nFontSetIndex, int nFontHeight );
|
|||
|
|
|
|||
|
|
//ID3DXFont *GetFont( int &nFontSetIndex, int nFontHeight );
|
|||
|
|
const wchar_t* GetUIString( int nCategoryID, int nIndex );
|
|||
|
|
|
|||
|
|
void PointToFloat( POINT pt, float &fX, float &fY );
|
|||
|
|
|
|||
|
|
void SetUITextureName( const char *pszTextureName ) { strcpy_s( m_DlgInfo.szUITexturename, _MAX_PATH, pszTextureName ); }
|
|||
|
|
EtTextureHandle GetUITexture() { return m_hTexture; }
|
|||
|
|
void SetUITexture( EtTextureHandle hTexture ) { SAFE_RELEASE_SPTR( m_hTexture ); m_hTexture = hTexture; }
|
|||
|
|
|
|||
|
|
// Note : <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> Ÿ<><C5B8><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>ȯ<EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
// ex) std::vector<CButton*> vector
|
|||
|
|
//
|
|||
|
|
template < typename T > void GetGontrolList( std::vector< T* > &vecControl );
|
|||
|
|
std::vector<CEtUIControl*>& GetControlList() { return m_vecControl; }
|
|||
|
|
|
|||
|
|
int GetControlCount() { return ( int )m_vecControl.size(); }
|
|||
|
|
CEtUIControl *GetControl( const char *pszControlName );
|
|||
|
|
template < typename T >
|
|||
|
|
T* _GC( const char *pszControlName );
|
|||
|
|
template < typename T >
|
|||
|
|
T* GetControl( const char *pszControlName, bool *pExistControl = NULL );
|
|||
|
|
|
|||
|
|
//#if defined(_DEBUG) || defined(_RDEBUG)
|
|||
|
|
static bool s_bUITest;
|
|||
|
|
static std::map<std::string, int> s_mapUITest;
|
|||
|
|
//#endif
|
|||
|
|
|
|||
|
|
CEtUIControl *GetControl( int nIndex ) { return m_vecControl[ nIndex ]; }
|
|||
|
|
void SetControl( int nIndex, CEtUIControl *pControl ) { m_vecControl[ nIndex ] = pControl; }
|
|||
|
|
CEtUIControl *CreateControl( UI_CONTROL_TYPE Type );
|
|||
|
|
void DeleteControl( CEtUIControl *pControl );
|
|||
|
|
void DeleteAllControl();
|
|||
|
|
|
|||
|
|
virtual bool FindControl( std::vector< CEtUIControl* > &vecControl, int nTypeCount, UI_CONTROL_TYPE *pType, bool bCheckCoveredControl, std::vector<SUICoord> &vecDlgCoord );
|
|||
|
|
|
|||
|
|
void MoveToHead( CEtUIControl *pControl );
|
|||
|
|
void MoveToTail( CEtUIControl *pControl );
|
|||
|
|
|
|||
|
|
//void DeleteAllFont();
|
|||
|
|
bool IsUsableFocusControl();
|
|||
|
|
int FindControlIndex( CEtUIControl *pControl );
|
|||
|
|
CEtUIControl *GetNextControl( CEtUIControl *pControl );
|
|||
|
|
CEtUIControl *GetPrevControl( CEtUIControl *pControl );
|
|||
|
|
|
|||
|
|
bool OnCycleFocus( bool bForward );
|
|||
|
|
void RequestFocus( CEtUIControl* pControl );
|
|||
|
|
void PushFocusControl();
|
|||
|
|
void PopFocusControl();
|
|||
|
|
#ifdef PRE_FIX_COMBOBOX_ELLIPSIS
|
|||
|
|
bool MakeStringWithEllipsis(SUIElement* pElement, float lineWidth, std::wstring& text, const std::wstring& symbol);
|
|||
|
|
#else
|
|||
|
|
void MakeStringWithEllipsis(SUIElement* pElement, float lineWidth, std::wstring& text, const std::wstring& symbol);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// Note : <20>Ʒ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> UITool<6F><6C><EFBFBD><EFBFBD> <20><><EFBFBD>δ<EFBFBD>.
|
|||
|
|
//
|
|||
|
|
void ShowAllControl( bool bShow );
|
|||
|
|
void EnableAllControl( bool bEnable );
|
|||
|
|
void UpdateAllControl();
|
|||
|
|
|
|||
|
|
void ClearRadioButtonGroup( int nButtonGroup );
|
|||
|
|
|
|||
|
|
void DrawDlgFrame();
|
|||
|
|
void CalcTextRect( LPCWSTR strText, SUIElement *pElement, SUICoord &Coord, int nCount = -1, DWORD dwFontFormat = 0xffffffff );
|
|||
|
|
void CalcTextRect( LPCWSTR szText, int fontIndex, int fontHeight, SUICoord &CalcCoord, DWORD dwFontFormat, bool bUseCache );
|
|||
|
|
void DrawDlgText( LPCWSTR szText, SUIElement *pElement, DWORD dwFontColor, const SUICoord &Coord, int nCount = -1, DWORD dwFontFormat = 0xffffffff, bool bClip = false, float ZValue = 0.f, DWORD dwBgColor = 0, int nBorderFlag = 0 );
|
|||
|
|
void DrawSprite( EtTextureHandle hTexture, SUICoord &UVCoord, DWORD dwUIColor, SUICoord &Coord, float fRotate = 0.0f, float ZValue = 0.f );
|
|||
|
|
void DrawSprite( SUICoord &UVCoord, DWORD dwUIColor, SUICoord &Coord, float fRotate = 0.0f, float ZValue = 0.f );
|
|||
|
|
void DrawRect( SUICoord &Coord, DWORD dwColor );
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
virtual void Initialize( const char *pFileName, bool bShow );
|
|||
|
|
virtual void Initialize( bool bShow );
|
|||
|
|
virtual void InitialUpdate() {}
|
|||
|
|
virtual CEtUIControl *CreateControl( SUIControlProperty *pProperty );
|
|||
|
|
virtual bool MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
|
|||
|
|
virtual void ProcessCommand( UINT nCommand, bool bTriggeredByUser, CEtUIControl *pControl, UINT uMsg = 0 );
|
|||
|
|
virtual void Render( float fElapsedTime );
|
|||
|
|
virtual void Process( float fElapsedTime );
|
|||
|
|
virtual void UpdateDlgCoord( float fX, float fY, float fWidth, float fHeight );
|
|||
|
|
virtual void UpdateRects();
|
|||
|
|
virtual void OnCloseCompletely() {}
|
|||
|
|
// <20><>ųƮ<C5B3><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
// content <20><><EFBFBD>̾<EFBFBD><CCBE>αװ<CEB1> <20><>ųƮ<C5B3><C6AE>ó<EFBFBD><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Է<EFBFBD> <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<CEB1> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// CEtUIDialog::ShowChildDialog() <20>Լ<EFBFBD> ȣ<><C8A3> <20>ÿ<EFBFBD> üũ<C3BC>ؼ<EFBFBD> <20><>Ŀ<EFBFBD><C4BF> ó<><C3B3><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|||
|
|
virtual void GetContentDialog( /*IN OUT*/ std::vector<CEtUIDialog*>& vlpContentDialogs ) {};
|
|||
|
|
|
|||
|
|
virtual void OnChangeResolution();
|
|||
|
|
static void ProcessChangeResolution();
|
|||
|
|
|
|||
|
|
virtual void OnEndInitialize();
|
|||
|
|
|
|||
|
|
virtual void OnHandleMsg(int protocol, char* pData) {}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
template < typename T >
|
|||
|
|
void CEtUIDialog::GetGontrolList( std::vector< T* > &vecControl )
|
|||
|
|
{
|
|||
|
|
for( int i=0; i<(int)m_vecControl.size(); i++ )
|
|||
|
|
{
|
|||
|
|
if( m_vecControl[i] )
|
|||
|
|
{
|
|||
|
|
if( typeid(*m_vecControl[i]) == typeid( T ) )
|
|||
|
|
{
|
|||
|
|
vecControl.push_back( (T*)m_vecControl[i] );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#define CONTROL( cls, name ) _GC<CEtUI##cls>(#name)
|
|||
|
|
#define DN_CONTROL( cls, name ) _GC<CDn##cls>(#name)
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ȭ <20><><EFBFBD><EFBFBD>
|
|||
|
|
template < typename T >
|
|||
|
|
T* CEtUIDialog::_GC( const char *pszControlName )
|
|||
|
|
{
|
|||
|
|
std::map< std::string, CEtUIDialog*>::iterator it = m_cachedControls.find(pszControlName);
|
|||
|
|
if( it != m_cachedControls.end() ) {
|
|||
|
|
return (T*)it->second;
|
|||
|
|
}
|
|||
|
|
bool bExistControl = false;
|
|||
|
|
T *pResult = GetControl<T>( pszControlName, &bExistControl);
|
|||
|
|
if( bExistControl ) { // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD>쿣 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><> <20>ֵ<EFBFBD><D6B5><EFBFBD> <20>Ѵ<EFBFBD>..
|
|||
|
|
m_cachedControls[ pszControlName ] = (CEtUIDialog*)pResult;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
static bool bFirst = true;
|
|||
|
|
if( bFirst ) {
|
|||
|
|
ASSERT( false );
|
|||
|
|
bFirst = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return pResult;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
template < typename T >
|
|||
|
|
T* CEtUIDialog::GetControl( const char *pszControlName, bool *pExistControl )
|
|||
|
|
{
|
|||
|
|
for( int i = 0; i < ( int )m_vecControl.size(); i++ )
|
|||
|
|
{
|
|||
|
|
if( strcmp( pszControlName, m_vecControl[ i ]->GetControlName() ) == 0 )
|
|||
|
|
{
|
|||
|
|
#if defined(_DEBUG) || defined(_RDEBUG) // Ȥ<><C8A4> <20><><EFBFBD><EFBFBD> <20>Ǽ<EFBFBD><C7BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ÿ<EFBFBD><C3BF><EFBFBD> Ÿ<><C5B8>üũ<C3BC><C5A9> <20><><EFBFBD>ش<EFBFBD>.
|
|||
|
|
T* pResult = dynamic_cast<T*>(m_vecControl[ i ]);
|
|||
|
|
if( !pResult ) {
|
|||
|
|
ASSERT( 0 && "UI Control ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!!");
|
|||
|
|
T* pTempControl = new T( 0 );
|
|||
|
|
m_TempControlList.push_back( pTempControl );
|
|||
|
|
if( pExistControl ) *pExistControl = false;
|
|||
|
|
return pTempControl;
|
|||
|
|
}
|
|||
|
|
#else
|
|||
|
|
T* pResult = static_cast<T*>(m_vecControl[ i ]);
|
|||
|
|
#endif
|
|||
|
|
if( pExistControl ) *pExistControl = true;
|
|||
|
|
return pResult;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//#if defined(_DEBUG) || defined(_RDEBUG)
|
|||
|
|
//assert( 0 && "UI Control <20><> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>! <20>ڼ<EFBFBD><DABC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EtUIDialog.h<><68> 374<37><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
char szFileName[256];
|
|||
|
|
_GetFullFileName(szFileName, _countof(szFileName), m_strDialogFileName.c_str());
|
|||
|
|
OutputDebug(" [UI Error] \"%s\" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %s Control <20><> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>!\n", szFileName, pszControlName);
|
|||
|
|
//#endif
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD> <20>ѹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD> <20>dzʶٰ<CAB6> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD>, string <20>ʿ<EFBFBD> <20>־<EFBFBD><D6BE>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
if( s_bUITest )
|
|||
|
|
{
|
|||
|
|
std::string szKey = szFileName;
|
|||
|
|
szKey += "_";
|
|||
|
|
szKey += pszControlName;
|
|||
|
|
|
|||
|
|
std::map<std::string, int>::iterator it = s_mapUITest.find( szKey );
|
|||
|
|
if( it == s_mapUITest.end() )
|
|||
|
|
{
|
|||
|
|
FILE *fp = NULL;
|
|||
|
|
fopen_s( &fp, "uitest.txt", "at" );
|
|||
|
|
fprintf_s( fp, "[UI Error] \"%s\" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %s Control <20><> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>!\n", szFileName, pszControlName );
|
|||
|
|
fclose( fp );
|
|||
|
|
s_mapUITest.insert( make_pair( szKey, 1 ) );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|||
|
|
for( DWORD i=0; i<m_TempControlList.size(); i++ ) {
|
|||
|
|
if( strcmp( m_TempControlList[i]->GetControlName(), pszControlName ) == NULL ) return static_cast<T*>(m_TempControlList[i]);
|
|||
|
|
}
|
|||
|
|
T* pTempControl = new T( 0 );
|
|||
|
|
pTempControl->SetParent( this );
|
|||
|
|
if( pszControlName ) _strcpy( pTempControl->GetProperty()->szUIName, _countof(pTempControl->GetProperty()->szUIName), pszControlName, (int)strlen(pszControlName) );
|
|||
|
|
m_TempControlList.push_back( pTempControl );
|
|||
|
|
if( pExistControl ) *pExistControl = false;
|
|||
|
|
return pTempControl;
|
|||
|
|
}
|