#include "stdafx.h" #include "GlobalFunctions.h" #include "AdminToolClient.h" #include "CharacterDoc.h" #include "Clipboard.h" #include "CheckComboBox.h" #include "WindowMgr.h" #include "AdminStoreDlgBar.h" #include #include #include #include #include #include #include #include static const char* szSetupFileName = _T("./AdminToolClientSetup.ini"); // ¸®½ºÆ® ÄÁÆ®·Ñ¿¡¼­ ¼±ÅÃÇÑ ³»¿ëÀ» ¿¢¼¿ Æ÷¸ËÀ¸·Î Ŭ¸³ÇÎÇϱâ // ¸Å°³º¯¼ö : ctrlList - Ŭ¸³ÇÎ ÇÒ ¸®½ºÆ® ÄÁÆ®·Ñ, nColCount - Ä÷³ ¼ö bool ClippingListCtrl(CListCtrl& ctrlList, int nColCount, bool bIsAllSel) { CString strBuffer; strBuffer.Empty(); if(bIsAllSel) { for(int nRow = 0; nRow < ctrlList.GetItemCount(); ++nRow) { for(int nCol = 0; nCol < nColCount; ++nCol) { strBuffer.AppendFormat(_T("%s"), ctrlList.GetItemText(nRow, nCol)); strBuffer.AppendFormat(_T("\t")); } strBuffer.AppendFormat(_T("\r\n")); } } else { POSITION pos = ctrlList.GetFirstSelectedItemPosition(); while(pos) { int nSelIndex = ctrlList.GetNextSelectedItem(pos); for(int nCol = 0; nCol < nColCount; ++nCol) { strBuffer.AppendFormat(_T("%s"), ctrlList.GetItemText(nSelIndex, nCol)); strBuffer.AppendFormat(_T("\t")); } strBuffer.AppendFormat(_T("\r\n")); } } return CClipboard::SetText(strBuffer); } void CustomPeekMessage() { MSG msg; if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { AfxGetApp()->PumpMessage(); } } int SearchListCtrlCol(CListCtrl& ctrlList, CString strSearchValue, int nColIndex) { CString strGetString; for(int nIndex = 0; nIndex < ctrlList.GetItemCount(); ++nIndex) { strGetString = ctrlList.GetItemText(nIndex, nColIndex); if(0 == strGetString.Compare(strSearchValue)) return nIndex; } return -1; } void ServerGroupComboSet(CComboBox &Cb) { CCharacterDoc::listServerInfoPos nEndPos = CCharacterDoc::GetInstance().GetServerInfoEnd(); CCharacterDoc::listServerInfoPos nPos = CCharacterDoc::GetInstance().GetServerInfoBegin(); int ComboIdx = 0; while(nPos != nEndPos) { CCharacterDoc::ServerInfo& Info = (*nPos); Cb.InsertString(ComboIdx++, Info.m_strServerName); ++nPos; } } void ServerGroupComboSet(CCheckComboBox &Cb, bool bIsCheck) { CCharacterDoc::listServerInfoPos nEndPos = CCharacterDoc::GetInstance().GetServerInfoEnd(); CCharacterDoc::listServerInfoPos nPos = CCharacterDoc::GetInstance().GetServerInfoBegin(); int ComboIdx = 0; while(nPos != nEndPos) { CCharacterDoc::ServerInfo& Info = (*nPos); Cb.InsertString(ComboIdx++, Info.m_strServerName); ++nPos; } for(int nIdx = 0; nIdx < Cb.GetCount(); ++nIdx) { Cb.SetCheck(nIdx, bIsCheck); } } CString GetRaceString(int nRaceIndex) { switch(nRaceIndex) { case CClass::HUMAN: return GetLocalString("HUMAN"); case CClass::AKHAN: return GetLocalString("AKHAN"); default: return _T("UNKNOWN"); } } CString GetNationString(int nNationIndex) { switch(nNationIndex) { case Creature::KARTERANT: return GetLocalString("NATION_001"); case Creature::MERKADIA: return GetLocalString("NATION_002"); case Creature::STATELESS: return GetLocalString("NATION_003"); case Creature::ALMIGHTY_PIRATE: return GetLocalString("NATION_004"); } return _T("UNKNOWN"); } CString GetSiegeObjectTypeString(int nSiegeObjectTypeIndex) { using namespace Siege; switch(nSiegeObjectTypeIndex) { case Siege::EMBLEM: return GetLocalString("ADDED_STRING_120"); case Siege::GATE: return GetLocalString("ADDED_STRING_121"); case Siege::BACKDOOR: return GetLocalString("ADDED_STRING_122"); case Siege::CAMP: return GetLocalString("ADDED_STRING_123"); case Siege::CASTLE_ARMS_NPC: return GetLocalString("ADDED_STRING_124"); case Siege::GUARD: return GetLocalString("ADDED_STRING_125"); case Siege::SHORT_RANGE_CASTLE_ARMS: return GetLocalString("ADDED_STRING_126"); case Siege::LONG_RANGE_CASTLE_ARMS: return GetLocalString("ADDED_STRING_127"); case Siege::SHORT_RANGE_SIEGE_ARMS: return GetLocalString("ADDED_STRING_128"); case Siege::LONG_RANGE_SIEGE_ARMS: return GetLocalString("ADDED_STRING_129"); case Siege::AIRSHIP: return GetLocalString("ADDED_STRING_130"); case Siege::MINING_CAMP: return GetLocalString("ADDED_STRING_131"); case Siege::CAMP_SHOP: return GetLocalString("ADDED_STRING_132"); case Siege::KARTERANT_WEAPON: return GetLocalString("ADDED_STRING_133"); case Siege::MERKADIA_WEAPON: return GetLocalString("ADDED_STRING_134"); case Siege::DEFAULT_TYPE: return GetLocalString("ADDED_STRING_135"); } return _T("UNKNOWN"); } int GetSiegeObjectTypeIndex(char* szSiegeObjectType) { CString strEMBLEM = GetLocalString("ADDED_STRING_120"); CString strGATE = GetLocalString("ADDED_STRING_121"); CString strBACKDOOR = GetLocalString("ADDED_STRING_122"); CString strCAMP = GetLocalString("ADDED_STRING_123"); CString strCASTLE_ARMS_NPC = GetLocalString("ADDED_STRING_124"); CString strGUARD = GetLocalString("ADDED_STRING_125"); CString strSHORT_RANGE_CASTLE_ARMS = GetLocalString("ADDED_STRING_126"); CString strLONG_RANGE_CASTLE_ARMS = GetLocalString("ADDED_STRING_127"); CString strSHORT_RANGE_SIEGE_ARMS = GetLocalString("ADDED_STRING_128"); CString strLONG_RANGE_SIEGE_ARMS = GetLocalString("ADDED_STRING_129"); CString strAIRSHIP = GetLocalString("ADDED_STRING_130"); CString strMINING_CAMP = GetLocalString("ADDED_STRING_131"); CString strCAMP_SHOP = GetLocalString("ADDED_STRING_132"); CString strKARTERANT_WEAPON = GetLocalString("ADDED_STRING_133"); CString strMERKADIA_WEAPON = GetLocalString("ADDED_STRING_134"); CString strDEFAULT_TYPE = GetLocalString("ADDED_STRING_135"); if (0 == strEMBLEM.CompareNoCase(szSiegeObjectType)) return Siege::EMBLEM; else if (0 == strGATE.CompareNoCase(szSiegeObjectType)) return Siege::GATE; else if (0 == strBACKDOOR.CompareNoCase(szSiegeObjectType)) return Siege::BACKDOOR; else if (0 == strCAMP.CompareNoCase(szSiegeObjectType)) return Siege::CAMP; else if (0 == strCASTLE_ARMS_NPC.CompareNoCase(szSiegeObjectType)) return Siege::CASTLE_ARMS_NPC; else if (0 == strGUARD.CompareNoCase(szSiegeObjectType)) return Siege::GUARD; else if (0 == strSHORT_RANGE_CASTLE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::SHORT_RANGE_CASTLE_ARMS; else if (0 == strLONG_RANGE_CASTLE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::LONG_RANGE_CASTLE_ARMS; else if (0 == strSHORT_RANGE_SIEGE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::SHORT_RANGE_SIEGE_ARMS; else if (0 == strLONG_RANGE_SIEGE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::LONG_RANGE_SIEGE_ARMS; else if (0 == strAIRSHIP.CompareNoCase(szSiegeObjectType)) return Siege::AIRSHIP; else if (0 == strMINING_CAMP.CompareNoCase(szSiegeObjectType)) return Siege::MINING_CAMP; else if (0 == strCAMP_SHOP.CompareNoCase(szSiegeObjectType)) return Siege::CAMP_SHOP; else if (0 == strKARTERANT_WEAPON.CompareNoCase(szSiegeObjectType)) return Siege::KARTERANT_WEAPON; else if (0 == strMERKADIA_WEAPON.CompareNoCase(szSiegeObjectType)) return Siege::MERKADIA_WEAPON; else return Siege::DEFAULT_TYPE; } CString GetStateString(int nStateIndex) { switch(nStateIndex) { case Siege::COMPLETE: return GetLocalString("ADDED_STRING_136"); case Siege::UPGRADING: return GetLocalString("ADDED_STRING_137"); case Siege::REPARING: return GetLocalString("ADDED_STRING_138"); case Siege::DESTROYING: return GetLocalString("ADDED_STRING_139"); case Siege::CHANGING: return GetLocalString("ADDED_STRING_140"); case Siege::DEVELOPING: return GetLocalString("ADDED_STRING_141"); case Siege::CANCELING: return GetLocalString("ADDED_STRING_142"); case Siege::RESTORING: return GetLocalString("ADDED_STRING_143"); case Siege::DESTROYED: return GetLocalString("ADDED_STRING_144"); } return _T("UNKNOWN"); } CString GetSubStateString(int nSiegeObjectTypeIndex, int nSubStateIndex) { switch(nSiegeObjectTypeIndex) { case Siege::EMBLEM: { switch(nSubStateIndex) { case Siege::MINE: return GetLocalString("ADDED_STRING_146"); case Siege::ENEMY: return GetLocalString("ADDED_STRING_147"); } } case Siege::GATE: { switch(nSubStateIndex) { case Siege::OPENED: return GetLocalString("ADDED_STRING_148"); case Siege::CLOSED: return GetLocalString("ADDED_STRING_149"); } } case Siege::BACKDOOR: { switch(nSubStateIndex) { case Siege::OPENED: return GetLocalString("ADDED_STRING_148"); case Siege::CLOSED: return GetLocalString("ADDED_STRING_149"); } } case Siege::MINING_CAMP: { switch(nSubStateIndex) { case Siege::MINING_OFF: return GetLocalString("ADDED_STRING_150"); case Siege::MINING_ON: return GetLocalString("ADDED_STRING_151"); case Siege::MINING_READY: return GetLocalString("ADDED_STRING_152"); } } case Siege::KARTERANT_WEAPON: { switch(nSubStateIndex) { case Siege::WEAPON_EMPTY: return GetLocalString("ADDED_STRING_153"); case Siege::WEAPON_CHARGE: return GetLocalString("ADDED_STRING_154"); case Siege::WEAPON_READY: return GetLocalString("ADDED_STRING_155"); case Siege::WEAPON_FIRE: return GetLocalString("ADDED_STRING_156"); } } case Siege::MERKADIA_WEAPON: { switch(nSubStateIndex) { case Siege::WEAPON_EMPTY: return GetLocalString("ADDED_STRING_153"); case Siege::WEAPON_CHARGE: return GetLocalString("ADDED_STRING_154"); case Siege::WEAPON_READY: return GetLocalString("ADDED_STRING_155"); case Siege::WEAPON_FIRE: return GetLocalString("ADDED_STRING_156"); } } default : return GetLocalString("ADDED_STRING_145"); } return _T("UNKNOWN"); } CString GetJewelString(int nJewelIndex) { switch(nJewelIndex) { case Siege::NO_JEWEL: return GetLocalString(""); case Siege::RUBY: return GetLocalString(""); case Siege::EMERALD: return GetLocalString(""); case Siege::SAPPHIRE: return GetLocalString(""); case Siege::DIAMOND: return GetLocalString(""); case Siege::BLACKMOON: return GetLocalString(""); } return _T("UNKNOWN"); } unsigned char GetNationIndex(char* szNation) { CString strKarterant = GetLocalString("NATION_001"); CString strMerkadia = GetLocalString("NATION_002"); CString strStateless = GetLocalString("NATION_003"); CString strThirdNation = GetLocalString("NATION_004"); if (0 == strKarterant.CompareNoCase(szNation)) return Creature::KARTERANT; else if (0 == strMerkadia.CompareNoCase(szNation)) return Creature::MERKADIA; else if (0 == strStateless.CompareNoCase(szNation)) return Creature::STATELESS; else if (0 == strThirdNation.CompareNoCase(szNation)) return Creature::ALMIGHTY_PIRATE; else return Creature::STATELESS; } CString GetSkillTypeString(unsigned char SkillType) { switch(SkillType) { case Skill::Type::NONE: return _T("NONE"); case Skill::Type::PASSIVE: return _T("PASSIVE"); case Skill::Type::INSTANCE: return _T("INSTANCE"); case Skill::Type::CAST: return _T("CAST"); case Skill::Type::CHANT: return _T("CHANT"); case Skill::Type::ENCHANT: return _T("ENCHANT"); case Skill::Type::ITEM: return _T("ITEM"); } return _T("UNKNOWN"); } CString GetZoneString(unsigned char cZoneIdx) { switch(cZoneIdx) { case SERVER_ID::ZONE1: return GetLocalString("ZONE_001"); case SERVER_ID::ZONE2: return GetLocalString("ZONE_002"); case SERVER_ID::ZONE4: return GetLocalString("ZONE_004"); case SERVER_ID::ZONE5: return GetLocalString("ZONE_005"); case SERVER_ID::CAPITAL: return GetLocalString("ZONE_008"); case SERVER_ID::ZONE9: return GetLocalString("ZONE_009"); case SERVER_ID::ZONE12: return GetLocalString("ZONE_012"); case SERVER_ID::STONE_WAR1: return GetLocalString("ZONE_016"); case SERVER_ID::STONE_WAR2: return GetLocalString("ZONE_017"); case SERVER_ID::STONE_WAR3: return GetLocalString("ZONE_018"); } return _T("NONE"); } CString GetClassString(int nClassIndex) { CString strClassName, strKey; strKey.Format("CLASS_%03d", nClassIndex); strClassName = GetLocalString(strKey); if(false == strClassName.IsEmpty()) { return strClassName; } return _T("NONE"); } CString GetSetupString(CString Section, CString key) { TCHAR value[255]; GetPrivateProfileString(Section, key, _T("default"), value, 255, szSetupFileName); return value; } CString GetSTableString(unsigned int nIDS) { CString strString; strString.LoadString(nIDS); return strString; } int GetSetupInt(CString Section, CString key) { return GetPrivateProfileInt(Section, key, 255, szSetupFileName); } void Report(CString report, REPORT_TYPE eType) { CAdminStoreDlgBar* StoreBar = static_cast(GET_WINDOW(IDD_STATUS_DLGBAR)); if(NULL != StoreBar) { StoreBar->WorkReport(report, eType); } } void Report(UINT nID, REPORT_TYPE eType) { CAdminStoreDlgBar* StoreBar = static_cast(GET_WINDOW(IDD_STATUS_DLGBAR)); CString strStringTable; strStringTable.LoadString(nID); StoreBar->WorkReport(strStringTable, eType); } COLORREF GetItemTypeColor(Item::ItemType::Type ItemTypeIndex) { COLORREF ItemTypeColor; using namespace Item::ItemType; switch (ItemTypeIndex) { case SHIRT: ItemTypeColor = RGB(0, 221, 111); break; case TUNIC: ItemTypeColor = RGB(0, 221, 111); break; case CON_ARMOUR: ItemTypeColor = RGB(0, 221, 111); break; case CON_HELM: ItemTypeColor = RGB(0, 221, 111); break; case CON_GLOVE: ItemTypeColor = RGB(0, 221, 111); break; case CON_BOOTS: ItemTypeColor = RGB(0, 221, 111); break; case DEX_ARMOUR: ItemTypeColor = RGB(255, 74, 74); break; case DEX_HELM: ItemTypeColor = RGB(255, 74, 74); break; case DEX_GLOVE: ItemTypeColor = RGB(255, 74, 74); break; case DEX_BOOTS: ItemTypeColor = RGB(255, 74, 74); break; case ONEHANDED_SWORD: ItemTypeColor = RGB(255, 74, 74); break; case TWOHANDED_SWORD: ItemTypeColor = RGB(255, 74, 74); break; case ONEHANDED_AXE: ItemTypeColor = RGB(255, 74, 74); break; case TWOHANDED_AXE: ItemTypeColor = RGB(255, 74, 74); break; case ONEHANDED_BLUNT: ItemTypeColor = RGB(255, 74, 74); break; case TWOHANDED_BLUNT: ItemTypeColor = RGB(255, 74, 74); break; case BOW: ItemTypeColor = RGB(0, 221, 111); break; case CROSSBOW: ItemTypeColor = RGB(0, 221, 111); break; case STAFF: ItemTypeColor = RGB(255, 0, 255); break; case DAGGER: ItemTypeColor = RGB(255, 0, 255); break; case SHIELD: ItemTypeColor = RGB(77, 255, 255); break; case CON_BODY: ItemTypeColor = RGB(77, 255, 255); break; case CON_HEAD: ItemTypeColor = RGB(77, 255, 255); break; case CON_PELVIS: ItemTypeColor = RGB(255, 128, 192); break; case CON_PROTECT_A: ItemTypeColor = RGB(255, 255, 128); break; case DEX_BODY: ItemTypeColor = RGB(255, 255, 128); break; case DEX_HEAD: ItemTypeColor = RGB(255, 255, 128); break; case DEX_PELVIS: ItemTypeColor = RGB(77, 255, 255); break; case DEX_PROTECT_A: ItemTypeColor = RGB(255, 188, 155); break; case COM_BLUNT: ItemTypeColor = RGB(0, 221, 111); break; case COM_SWORD: ItemTypeColor = RGB(0, 221, 111); break; case OPP_HAMMER: ItemTypeColor = RGB(0, 221, 111); break; case OPP_AXE: ItemTypeColor = RGB(0, 221, 111); break; case OPP_SLUSHER: ItemTypeColor = RGB(255, 74, 74); break; case OPP_TALON: ItemTypeColor = RGB(255, 74, 74); break; case OPP_SYTHE: ItemTypeColor = RGB(255, 74, 74); break; case SKILL_A_GUARD: ItemTypeColor = RGB(255, 74, 74); break; case SKILL_A_ATTACK: ItemTypeColor = RGB(255, 74, 74); break; case SKILL_A_GUN: ItemTypeColor = RGB(255, 74, 74); break; case SKILL_A_KNIFE: ItemTypeColor = RGB(255, 74, 74); break; case ARROW: ItemTypeColor = RGB(0, 221, 111); break; case BOLT: ItemTypeColor = RGB(255, 74, 74); break; case AMMO: ItemTypeColor = RGB(255, 74, 74); break; case POTION: ItemTypeColor = RGB(255, 74, 74); break; case EXP_BOOK: ItemTypeColor = RGB(128, 255, 255); break; case CASH_BOOK: ItemTypeColor = RGB(0, 250, 0); break; case EVENT_LOTTERY: ItemTypeColor = RGB(0, 0, 255); break; case PORTAL: ItemTypeColor = RGB(218, 218, 180); break; case FIRE_CRACKER: ItemTypeColor = RGB(255, 0, 128); break; case SKILL_BOOK: ItemTypeColor = RGB(255, 162, 68); break; case GEM: ItemTypeColor = RGB(77, 255, 255); break; case ORE: ItemTypeColor = RGB(77, 255, 255); break; case ETC: ItemTypeColor = RGB(255, 20, 20); break; // case EVENT_DROP: ItemTypeColor = RGB(77, 255, 255); break; case CAMP_KIT: ItemTypeColor = RGB(77, 255, 255); break; case SHORT_RANGE_ARMS_KIT: ItemTypeColor = RGB(255, 20, 20); break; case LONG_RANGE_ARMS_KIT: ItemTypeColor = RGB(77, 255, 255); break; case AIRSHIP_KIT: ItemTypeColor = RGB(77, 255, 255); break; case QUEST_ITEM: ItemTypeColor = RGB(239, 213, 192); break; default: ItemTypeColor = RGB(100, 100, 100); break; } return ItemTypeColor; } void SetAdminLevelCb(CComboBox& ctrlLevelCb) { ctrlLevelCb.InsertString(0, _T("Supporter")); ctrlLevelCb.InsertString(1, _T("GM")); ctrlLevelCb.InsertString(2, _T("Master")); ctrlLevelCb.InsertString(3, _T("Developer")); } unsigned char GetAdminLVInitial(CString strAdminLVName) { if(strAdminLVName == _T("Developer")) return 'D'; if(strAdminLVName == _T("Master")) return 'M'; if(strAdminLVName == _T("GM")) return 'G'; if(strAdminLVName == _T("Supporter")) return 'S'; return 'X'; } unsigned char SetAuthorityMask(unsigned char cLV) { switch(cLV){ case 'D': return PktAdminMgr::AuthorityMask::DEVELOPER; case 'M': return PktAdminMgr::AuthorityMask::MASTER; case 'G': return PktAdminMgr::AuthorityMask::GM; case 'S': return PktAdminMgr::AuthorityMask::SUPPORTER; default: return PktAdminMgr::AuthorityMask::QUEST_MODE; } } CString GetAdminLVName(unsigned char Initial) { CString strLevelName = _T("UNKNOWN"); switch(Initial){ case 'D': strLevelName = _T("Developer"); break; case 'M': strLevelName = _T("Master"); break; case 'G': strLevelName = _T("GM"); break; case 'S': strLevelName = _T("Supporter"); break; } return strLevelName; } int GetAdminLVIconIndex(unsigned char Initial) { switch(Initial){ case 'D': return 0; break; // Developer case 'M': return 1; break; // Master case 'G': return 2; break; // GM case 'S': return 3; break; // Supporter default: return 4; break; // Unknown Level } } CString GetExtraSpacePosString(unsigned char cType) { switch(cType) { case Item::ExtraSpacePos::UPGRADE_EQUIPMENT_POS: return _T("UPGRADE_EQUIPMENT_POS"); break; case Item::ExtraSpacePos::UPGRADE_MATERIAL_POS: return _T("UPGRADE_MATERIAL_POS"); break; case Item::ExtraSpacePos::HOLDITEM_POS: return _T("HOLDITEM_POS"); break; case Item::ExtraSpacePos::KIT_MATERIAL_POS: return _T("KIT_MATERIAL_POS"); break; case Item::ExtraSpacePos::CAMP_MATERIAL_POS: return _T("CAMP_MATERIAL_POS"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS1: return _T("EMBLEM_JEWEL_POS1"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS2: return _T("EMBLEM_JEWEL_POS2"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS3: return _T("EMBLEM_JEWEL_POS3"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS4: return _T("EMBLEM_JEWEL_POS4"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS5: return _T("EMBLEM_JEWEL_POS5"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS6: return _T("EMBLEM_JEWEL_POS6"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS7: return _T("EMBLEM_JEWEL_POS7"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS8: return _T("EMBLEM_JEWEL_POS8"); break; case Item::ExtraSpacePos::EMBLEM_JEWEL_POS9: return _T("EMBLEM_JEWEL_POS9"); break; case Item::ExtraSpacePos::GRAFT_ORIGINAL_POS: return _T("GRAFT_ORIGINAL_POS"); break; case Item::ExtraSpacePos::GRAFT_SACRIFICE_POS: return _T("GRAFT_SACRIFICE_POS"); break; case Item::ExtraSpacePos::GRAFT_RESULT_POS: return _T("GRAFT_RESULT_POS"); break; case Item::ExtraSpacePos::COMPENSATION_POS: return _T("COMPENSATION_POS"); break; default: return _T("UNKNOWN"); break; } } CString GetLocalString(CString strKey) { char szReturned[256] = ""; GetPrivateProfileString("LOCAL_STRING", strKey, NULL, szReturned, 256, szSetupFileName); if(NULL == szReturned) { return _T("UNKNOWN"); } else { return static_cast(szReturned); } } void SetUIString(HWND hWnd, int nResID, char* szKey) { CString strFormat; strFormat.Format(" %s ", GetLocalString(szKey)); if(FALSE == SetDlgItemText(hWnd, nResID, strFormat)) { ERRLOG2(g_Log, "Local string set failed: err - %u, key - %s", GetLastError(), szKey); } }