この例を使用
して、ディレクトリ内のすべてのファイル名をWindows::Forms::ListBox
.
void DisplayErrorBox(LPTSTR lpszFunction)
ユーザーは入力を行わないため、他のエラー チェックと一緒に関数を使用する必要はありません
。
イベントをトリガーするボタンをクリックすると、これがリスト ボックスに表示されます。
o //&#o/
/ //
/ //
/ //
/ //
/ //
/ //
/ //
また、ボタンをクリックするたびに1行しか表示されません。ボタンをクリックするたびに次のファイルを見つけるだけでなく、ディレクトリ内のすべてのファイルを検索して一覧表示することになっています。
また、絶対ではなく相対strPathを使用したい...これまでのところ、これは私がコードで行ったことです:
private:
void List_Files()
{
std::string strPath = "C:\\Users\\Andre\\Dropbox\\Programmering privat\\Diablo III DPS Calculator\\Debug\\SavedProfiles";
TCHAR* Path = (TCHAR*)strPath.c_str();
WIN32_FIND_DATA ffd;
LARGE_INTEGER filesize;
TCHAR szDir[MAX_PATH];
size_t length_of_arg;
HANDLE hFind = INVALID_HANDLE_VALUE;
// Prepare string for use with FindFile functions. First, copy the
// string to a buffer, then append '\*' to the directory name.
StringCchCopy(szDir, MAX_PATH, Path);
StringCchCat(szDir, MAX_PATH, TEXT("\\*"));
// List all the files in the directory with some info about them.
do
{
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
//If it's a directory nothing should happen. Just continue with the next file.
}
else
{
//convert from wide char to narrow char array
char ch[260];
char DefChar = ' ';
WideCharToMultiByte(CP_ACP,0,(ffd.cFileName),-1, ch,260,&DefChar, NULL);
//A std:string using the char* constructor.
std::string str(ch);
String ^ sysStr = gcnew String(str.c_str());
MessageBox::Show("File Found", "NOTE");
ListBoxSavedFiles->Items->Add (sysStr);
}
}
while (FindNextFile(hFind, &ffd) != 0);
FindClose(hFind);
}