/////////////////////////////////////////////////////////////////////////////////////////////// // // ÆÄÀÏ ¿ÀÇ Ŭ·¡½º // /////////////////////////////////////////////////////////////////////////////////////////////// #include "FileOpen.h" #include //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(strlen(FileName)); for(Counter = 0; Counter < FileNameLen; Counter++) if(FileName[Counter] == '.') return true; return false; }