/** * @file GlobalMacro.h * @brief À̰÷¿¡ °¢Á¾ ¸ÞÅ©·ÎµéÀ» ¿Ã·Á¼­ »ç¿ëÇսôÙ. * @author Unknown * @version Unknown */ ////---------------------------------------------------------------------------- ///** global macro header // @author : Yu, Jae Young (y2jinc@webzen.co.kr) // @desc : À̰÷¿¡ °¢Á¾ ¸ÞÅ©·ÎµéÀ» ¿Ã·Á¼­ »ç¿ëÇսôÙ. // @remark //*/ #ifndef GLOBALMACRO_H #define GLOBALMACRO_H #pragma once #define DoNothing() // ¾Æ¹«°Íµµ ½ÇÇàµÉ Çʿ䰡 ¾øÀ½À» ºÐ¸íÈ÷ ÇØ ÁÖ´Â ¸ÅÅ©·Î #define SET_ARRAY_VECTOR(fOutArrVec, x, y, z) { fOutArrVec[0] = x; fOutArrVec[1] = y; fOutArrVec[2] = z; } //--------------------------------------------------------------------------------------- // ½ºÆ®¸µ °ü·Ã //--------------------------------------------------------------------------------------- #ifdef Sprintf #undef Sprintf #endif #define CONVERT_LENGTH 2048 __forceinline void ConvertToASCII(IN wchar_t * pInStr , OUT char * pOutStr) { WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK, pInStr, -1 , pOutStr, CONVERT_LENGTH , NULL, NULL ); } __forceinline void ConvertToUNICODE(IN char * pInStr , OUT wchar_t * pOutStr ) { MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, pInStr, -1, pOutStr, CONVERT_LENGTH ); } namespace GLOBALMACRO { // strcpy __forceinline void StrCopy( char * pSrc , const char * pDest ) { strcpy( pSrc , pDest ); } __forceinline void StrCopy( char * pSrc , const wchar_t * pDest) { WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK, pDest, -1 , pSrc, CONVERT_LENGTH , NULL, NULL ); } __forceinline void StrCopy( wchar_t * pSrc , const wchar_t * pDest) { wcscpy( pSrc , pDest); } __forceinline void StrCopy ( wchar_t * pSrc , const char * pDest) { MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, pDest, -1, pSrc, CONVERT_LENGTH ); } // strncopy __forceinline void StrnCopy( char * pSrc , const char * pDest ,size_t Length ) { strncpy( pSrc , pDest , Length); } __forceinline void StrnCopy( char * pSrc , const wchar_t * pDest, size_t Length) { WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK, pDest, -1 , pSrc, CONVERT_LENGTH , NULL, NULL ); } __forceinline void StrnCopy( wchar_t * pSrc , const wchar_t * pDest, size_t Length) { wcsncpy( pSrc , pDest , Length ); } __forceinline void StrnCopy ( wchar_t * pSrc , const char * pDest, size_t Length) { if( strlen(pDest) > 0) MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, pDest, -1, pSrc, CONVERT_LENGTH ); } // sprintf __forceinline void Sprintf( char * pSrc , char * pDest , ...) { char szOutputMsg[512] = {0,}; va_list args; va_start(args, pDest); _vsnprintf( szOutputMsg, 512, pDest, args ); va_end(args); sprintf( pSrc , szOutputMsg ); } __forceinline void Sprintf( wchar_t * pSrc , wchar_t * pDest , ...) { wchar_t szOutputMsg[512] = {0,}; va_list args; va_start(args, pDest); _vsnwprintf( szOutputMsg, 512, pDest, args ); va_end(args); swprintf( pSrc , szOutputMsg ); } //snprintf __forceinline void Snprintf( char * pSrc , size_t Length , char * pDest , ...) { char szOutputMsg[512] = {0,}; va_list args; va_start(args, pDest); _vsnprintf( szOutputMsg, 512, pDest, args ); va_end(args); _snprintf( pSrc , Length , szOutputMsg ); } __forceinline void Snprintf( wchar_t * pSrc , size_t Length , wchar_t * pDest , ...) { wchar_t szOutputMsg[512] = {0,}; va_list args; va_start(args, pDest); _vsnwprintf( szOutputMsg, 512, pDest, args ); va_end(args); _snwprintf( pSrc , Length , szOutputMsg ); } // Strcmp __forceinline int Strcmp( const char * pStr1 , const char * pStr2) { return strcmp( pStr1 , pStr2 ); } __forceinline int Strcmp( const wchar_t * pStr1 , const wchar_t * pStr2 ) { return wcscmp( pStr1 , pStr2 ); } __forceinline int Strcmp( const char * pStr1 , const wchar_t * pStr2) { char szMessage[2048 ]= {0,}; WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK, pStr2, -1 , szMessage, CONVERT_LENGTH , NULL, NULL ); return strcmp( szMessage , pStr1 ); } __forceinline int Strcmp( const wchar_t * pStr1 , const char * pStr2 ) { char szMessage[2048 ]= {0,}; WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK, pStr1, -1 , szMessage, CONVERT_LENGTH , NULL, NULL ); return strcmp( szMessage , pStr2 ); } /// Strncmp __forceinline int StrnCmp( const char * pStr1 , const char * pStr2 , size_t Length) { return strncmp( pStr1 , pStr2 , Length ); } __forceinline int StrnCmp( const wchar_t * pStr1 , const wchar_t * pStr2 , size_t Length ) { return wcsncmp( pStr1 , pStr2 , Length ); } __forceinline int StrnCmp( const char * pStr1 , const wchar_t * pStr2 , size_t Length) { char szMessage[2048 ]= {0,}; WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK, pStr2, -1 , szMessage, CONVERT_LENGTH , NULL, NULL ); return strncmp( szMessage , pStr1 , Length); } __forceinline int StrnCmp( const wchar_t * pStr1 , const char * pStr2 , size_t Length) { char szMessage[2048 ]= {0,}; WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK, pStr1, -1 , szMessage, CONVERT_LENGTH , NULL, NULL ); return strncmp( szMessage , pStr2 , Length); } } #define StrnCopy _tcsncpy #define StrCopy _tcscpy #define Strcmp _tcscmp #define Stricmp _tcsicmp #define Sprintf _stprintf #define Snprintf _sntprintf #define StrnCmp GLOBALMACRO::StrnCmp //--------------------------------------------------------------------------------------- // UI ÄÁÆ®·Ñ °ü·Ã //--------------------------------------------------------------------------------------- #define UI_CONTROL_STATIC_PROPERTY(Name, WzID) \ public: \ inline CCtrlStaticWZ * GetCtrl##Name() \ { \ return (CCtrlStaticWZ *) GetControlWZ(WzID); \ } \ inline DWORD GetWzID##Name() \ { \ return GetControlWZ(WzID)->GetCtrlID(); \ } \ inline void SetCaption##Name(TCHAR * pszData) \ { \ GlobalFunc::SetCaption((CCtrlStaticWZ *)GetControlWZ(WzID), pszData); \ } \ inline void SetCaption##Name(DWORD dwStrID) \ { \ TCHAR szBuf[INTERFACE_STRING_LENGTH]; \ g_InterfaceManager.GetInterfaceString(dwStrID, szBuf, INTERFACE_STRING_LENGTH); \ GlobalFunc::SetCaption((CCtrlStaticWZ *)GetControlWZ(WzID), szBuf); \ } \ inline void Show##Name(BOOL bFlag) \ { \ ENUM_STATEWZ es = bFlag? WZ_SHOW:WZ_HIDE; \ GetControlWZ(WzID)->ShowWindowWZ(es); \ } \ inline BOOL IsShow##Name() \ { \ return (BOOL)WZ_SHOW == GetControlWZ(WzID)->GetState(); \ } #define UI_CONTROL_VSCROLL_PROPERTY(Name, WzID) \ public: \ inline CCtrlVScrollWZ * GetCtrl##Name() \ { \ return (CCtrlVScrollWZ *) GetControlWZ(WzID); \ } \ inline DWORD GetWzID##Name() \ { \ return GetControlWZ(WzID)->GetCtrlID(); \ } \ inline void Show##Name(BOOL bFlag) \ { \ ENUM_STATEWZ es = bFlag? WZ_SHOW:WZ_HIDE; \ GetControlWZ(WzID)->ShowWindowWZ(es); \ } \ inline BOOL IsShow##Name() \ { \ return (BOOL)WZ_SHOW == GetControlWZ(WzID)->GetState(); \ } #define UI_CONTROL_HSCROLL_PROPERTY(Name, WzID) \ public: \ inline CCtrlHScrollWZ * GetCtrl##Name() \ { \ return (CCtrlHScrollWZ *) GetControlWZ(WzID); \ } \ inline DWORD GetWzID##Name() \ { \ return GetControlWZ(WzID)->GetCtrlID(); \ } \ \ inline void Show##Name(BOOL bFlag) \ { \ ENUM_STATEWZ es = bFlag? WZ_SHOW:WZ_HIDE; \ GetControlWZ(WzID)->ShowWindowWZ(es); \ } \ inline BOOL IsShow##Name() \ { \ return (BOOL)WZ_SHOW == GetControlWZ(WzID)->GetState(); \ } #define UI_CONTROL_TI_PROPERTY(Name, WzID) \ public: \ inline CCtrlImageStaticWZ * GetCtrl##Name() \ { \ return (CCtrlImageStaticWZ *) GetControlWZ(WzID); \ } \ inline DWORD GetWzID##Name() \ { \ return GetControlWZ(WzID)->GetCtrlID(); \ } \ inline void SetCaption##Name(TCHAR * pszData) \ { \ GlobalFunc::SetCaption((CCtrlStaticWZ *)GetControlWZ(WzID), pszData); \ } \ inline void SetCaption##Name(DWORD dwStrID) \ { \ TCHAR szBuf[INTERFACE_STRING_LENGTH]; \ g_InterfaceManager.GetInterfaceString(dwStrID, szBuf, INTERFACE_STRING_LENGTH); \ GlobalFunc::SetCaption((CCtrlStaticWZ *)GetControlWZ(WzID), szBuf); \ } \ inline void Show##Name(BOOL bFlag) \ { \ ENUM_STATEWZ es = bFlag? WZ_SHOW:WZ_HIDE; \ GetControlWZ(WzID)->ShowWindowWZ(es); \ } \ inline BOOL IsShow##Name() \ { \ return (BOOL)WZ_SHOW == GetControlWZ(WzID)->GetState(); \ } #define UI_CONTROL_BUTTON_PROPERTY(Name, WzID) \ public: \ inline CCtrlButtonWZ * GetCtrl##Name() \ { \ return (CCtrlButtonWZ *) GetControlWZ(WzID); \ } \ inline DWORD GetWzID##Name() \ { \ return GetControlWZ(WzID)->GetCtrlID(); \ } \ inline void SetCaption##Name(TCHAR * pszData) \ { \ GlobalFunc::SetCaption((CCtrlButtonWZ *)GetControlWZ(WzID), pszData); \ } \ inline void SetCaption##Name(DWORD dwStrID) \ { \ TCHAR szBuf[INTERFACE_STRING_LENGTH]; \ g_InterfaceManager.GetInterfaceString(dwStrID, szBuf, INTERFACE_STRING_LENGTH); \ GlobalFunc::SetCaption((CCtrlButtonWZ *)GetControlWZ(WzID), szBuf); \ } \ inline void Show##Name(BOOL bFlag) \ { \ ENUM_STATEWZ es = bFlag? WZ_SHOW:WZ_HIDE; \ GetControlWZ(WzID)->ShowWindowWZ(es); \ } \ inline BOOL IsShow##Name() \ { \ return (BOOL)WZ_SHOW == GetControlWZ(WzID)->GetState(); \ } #define UI_CONTROL_CHECK_BUTTON_PROPERTY(Name, WzID) \ public: \ inline CCtrlButtonCheckWZ * GetCtrl##Name() \ { \ return (CCtrlButtonCheckWZ *) GetControlWZ(WzID); \ } \ inline DWORD GetWzID##Name() \ { \ return GetControlWZ(WzID)->GetCtrlID(); \ } \ inline void SetCaption##Name(TCHAR * pszData) \ { \ GlobalFunc::SetCaption((CCtrlButtonWZ *)GetControlWZ(WzID), pszData); \ } \ inline void SetCaption##Name(DWORD dwStrID) \ { \ TCHAR szBuf[INTERFACE_STRING_LENGTH]; \ g_InterfaceManager.GetInterfaceString(dwStrID, szBuf, INTERFACE_STRING_LENGTH); \ GlobalFunc::SetCaption((CCtrlButtonWZ *)GetControlWZ(WzID), szBuf); \ } \ inline void SetCheck##Name(BOOL bFlag) \ { \ CCtrlButtonCheckWZ * pCtrl = (CCtrlButtonCheckWZ *)GetControlWZ(WzID); \ if (pCtrl) \ { \ pCtrl->SetCheckState(FALSE != bFlag); \ } \ }\ inline BOOL GetCheck##Name() \ { \ CCtrlButtonCheckWZ * pCtrl = (CCtrlButtonCheckWZ *)GetControlWZ(WzID);\ if (pCtrl) \ { \ return pCtrl->GetCheckState(); \ } \ }\ inline void Show##Name(BOOL bFlag) \ { \ ENUM_STATEWZ es = bFlag? WZ_SHOW:WZ_HIDE; \ GetControlWZ(WzID)->ShowWindowWZ(es); \ } \ inline BOOL IsShow##Name() \ { \ return (BOOL)WZ_SHOW == GetControlWZ(WzID)->GetState(); \ } #define UI_CONTROL_LIST_PROPERTY(Name, WzID) \ public: \ inline CCtrlListWZ * GetCtrl##Name() \ { \ return (CCtrlListWZ *) GetControlWZ(WzID); \ } \ DWORD GetWzID##Name() \ { \ return GetControlWZ(WzID)->GetCtrlID(); \ } \ inline void Show##Name(BOOL bFlag) \ { \ ENUM_STATEWZ es = bFlag? WZ_SHOW:WZ_HIDE; \ GetControlWZ(WzID)->ShowWindowWZ(es); \ } \ inline BOOL IsShow##Name() \ { \ return (BOOL)WZ_SHOW == GetControlWZ(WzID)->GetState(); \ } //----------------------------------------------------------- #define TYPEDEF_MAP(Name, KEY_TYPE, DATA_TYPE) \ typedef std::map Name##_MAP; \ typedef Name##_MAP::iterator Name##_ITR; \ typedef std::pair Name##_PAIR; #define WzIdToConst(l1,l2,l3,l4) ((l1) * 0x01000000 + (l2) * 0x00010000 + (l3) * 0x00000100 + (l4) * 0x00000001) #define GET_USER_INTERFACE( type, id ) ((type*)g_InterfaceManager.GetUserInterface( id )) #define GET_DIALOG( id ) ((uiBase*)g_InterfaceManager.GetDialog( id )) #define GET_CAST_DIALOG( type, id ) ((type*)g_InterfaceManager.GetDialog( id ) ) #define GET_DIALOG_MANAGER( type, id ) ((type*)g_InterfaceManager.GetUserInterfaceManager( id )) #define RGBATOARGB(r,g,b,a) ((COLORREF)((((BYTE)(b)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(r))<<16))|(((DWORD)(BYTE)(a))<<24))) //. ARGB #define IS_NUMBERIC(t) ((t) == VALUE_TYPE_VALUE) #define IS_PERCENTAGE(t) ((t) != VALUE_TYPE_VALUE) #endif