Files
Client/Server/ToolProject/GameDBTool/Misc/FileOpen.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

274 lines
6.9 KiB
C++

///////////////////////////////////////////////////////////////////////////////////////////////
//
// 파일 오픈 클래스
//
///////////////////////////////////////////////////////////////////////////////////////////////
#include "FileOpen.h"
#include <stdio.h>
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// FileOpen 생성자 [ public ]
// - 맴버 변수 초기화
//
///////////////////////////////////////////////////////////////////////////////////////////////
FileOpen::FileOpen(HWND hWnd_In, LPCTSTR InitialDir_In)
{
m_OpenFileName.lStructSize = sizeof(OPENFILENAME);
m_OpenFileName.hwndOwner = hWnd_In;
m_OpenFileName.hInstance = NULL;
m_OpenFileName.lpstrFilter = "All file\0*.*";
m_OpenFileName.lpstrCustomFilter = NULL;
m_OpenFileName.nMaxCustFilter = 0;
m_OpenFileName.nFilterIndex = 0;
m_OpenFileName.lpstrFile = NULL;
m_OpenFileName.nMaxFile = FileNameBufferSize;
m_OpenFileName.lpstrFileTitle = NULL;
m_OpenFileName.nMaxFileTitle = MAX_PATH;
m_OpenFileName.lpstrInitialDir = InitialDir_In;
m_OpenFileName.lpstrTitle = NULL;
m_OpenFileName.Flags = OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_LONGNAMES | OFN_EXPLORER;
m_OpenFileName.nFileOffset = 0;
m_OpenFileName.nFileExtension = 0;
m_OpenFileName.lpstrDefExt = NULL;
m_OpenFileName.lCustData = 0;
m_OpenFileName.lpfnHook = NULL;
m_OpenFileName.lpTemplateName = NULL;
m_OpenFileName.lpstrFile = m_FileNameBuffer;
m_OpenFileName.lpstrFileTitle = m_FilePathName[0];
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// FileOpen 소멸자 [ public ]
//
///////////////////////////////////////////////////////////////////////////////////////////////
FileOpen::~FileOpen(void)
{
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// OpenDlg [ public ]
// - 오픈 다이얼로그
//
// Parameter :
// 1st : 파일 필터
//
// Return:
// 성공시 true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool FileOpen::OpenDlg(char* Filter_In)
{
int Counter;
ZeroMemory(m_FileNameBuffer, FileNameBufferSize);
ZeroMemory(m_FilePathName, MAX_PATH);
m_OpenFileName.lpstrFilter = Filter_In;
if(GetOpenFileName(&m_OpenFileName))
{
m_FileCount = 0;
if(m_OpenFileName.nFileExtension == 0)
{
for(Counter = 0; m_FileCount < MaxFileNumber;)
{
if(m_FileNameBuffer[Counter++] == NULL)
{
if(m_FileNameBuffer[Counter] != NULL)
{
sprintf(m_FilePathName[m_FileCount], "%s\\%s", m_FileNameBuffer, &m_FileNameBuffer[Counter]);
m_FileCount++;
}
else
break;
}
}
}
else
{
strcpy(m_FilePathName[m_FileCount], m_FileNameBuffer);
m_FileCount++;
}
return true;
}
return false;
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// SaveDlg [ public ]
// - 저장 다이얼로그
//
// Parameter :
// 1st : 디폴트 확장자
// 2st : 파일 필터
//
// Return:
// 성공시 true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool FileOpen::SaveDlg(char* DefulatExt_In, char* Filter_In)
{
ZeroMemory(m_FileNameBuffer, FileNameBufferSize);
ZeroMemory(m_FilePathName, MAX_PATH);
m_OpenFileName.lpstrFilter = Filter_In;
if(GetSaveFileName(&m_OpenFileName))
{
m_FileCount = 0;
if(IsExistExt(m_FileNameBuffer))
strcpy(m_FilePathName[m_FileCount++], m_FileNameBuffer);
else
sprintf(m_FilePathName[m_FileCount++], "%s.%s", m_FileNameBuffer, DefulatExt_In);
}
return true;
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// GetFileNameFromBuffer [ public ]
// - 버퍼로 부터 파일 이름 얻기
//
// Parameter :
// 1st : 인덱스
//
// Return:
// 성공시 파일 이름
//
///////////////////////////////////////////////////////////////////////////////////////////////
char* FileOpen::GetFileNameFromBuffer(int Index_In)
{
if(Index_In < 0)
return NULL;
m_FileIndex = Index_In;
return ConvertToFileName(m_FilePathName[m_FileIndex++]);
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// GetNextFileNameFromBuffer [ public ]
// - 버퍼로 부터 다음 파일 이름 얻기 : GetFileNameFromBuffer 호출 이후 다음 인덱스
//
// Parameter :
//
// Return:
// 성공시 파일 이름
//
///////////////////////////////////////////////////////////////////////////////////////////////
char* FileOpen::GetNextFileNameFromBuffer(void)
{
if(m_FileIndex >= m_FileCount)
return NULL;
return ConvertToFileName(m_FilePathName[m_FileIndex++]);
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// GetFilePathNameFromBuffer [ public ]
// - 버퍼로 부터 경로 파일 이름 얻기
//
// Parameter :
// 1st : 인덱스
//
// Return:
// 성공시 경로 파일 이름
//
///////////////////////////////////////////////////////////////////////////////////////////////
char* FileOpen::GetFilePathNameFromBuffer(int Index_In)
{
if(Index_In < 0)
return NULL;
m_FileIndex = Index_In;
return m_FilePathName[m_FileIndex++];
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// GetNextFilePathNameFromBuffer [ public ]
// - 버퍼로 부터 다음 경로 파일 이름 얻기 : GetFileNameFromBuffer 호출 이후 다음 인덱스
//
// Parameter :
//
// Return:
// 성공시 경로 파일 이름
//
///////////////////////////////////////////////////////////////////////////////////////////////
char* FileOpen::GetNextFilePathNameFromBuffer(void)
{
if(m_FileIndex >= m_FileCount)
return NULL;
return m_FilePathName[m_FileIndex++];
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// ConvertToFileName [ public ]
// - 경로 파일 이름을 파일 이름으로 변경
//
// Parameter :
// 1st : 경로 파일 이름
//
// Return:
// 성공시 파일 이름
//
///////////////////////////////////////////////////////////////////////////////////////////////
char* FileOpen::ConvertToFileName(char* FilePathName_In)
{
char *FileNameStart = FilePathName_In;
char *Position;
for(Position = FileNameStart; *Position != NULL; Position++)
{
if(*Position == '\\')
FileNameStart = Position + 1;
}
return FileNameStart;
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// IsExistExt [ public ]
// - 파일명에서 확장자 존재 유무 확인
//
// Parameter :
// 1st : 파일 이름
//
// Return:
// 성공시 true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool FileOpen::IsExistExt(char* FileName)
{
int FileNameLen;
int Counter;
if(FileName == NULL)
return false;
FileNameLen = static_cast<int>(strlen(FileName));
for(Counter = 0; Counter < FileNameLen; Counter++)
if(FileName[Counter] == '.')
return true;
return false;
}