Знаю, как иногда бывают проблемы даже с простыми вещами и как иногда не хватает кода (когда-то ведь тоже учился, посему...) Посторался обойтись без MFC, но так как приложение было сделано на его основе, все же пару функция пришлось использовать
| Код | HWND hWnd = AfxGetApp ()->m_pMainWnd->m_hWnd; char szFileName [] = "c:\\listbox.txt"; char* lpString = new char [0xFF]; //заполняем наш ListBox lstrcpy (lpString, "First Item"); ::SendDlgItemMessage (hWnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpString); lstrcpy (lpString, "Second Item"); ::SendDlgItemMessage (hWnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpString); lstrcpy (lpString, "Third Item"); ::SendDlgItemMessage (hWnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpString);
//теперь надо создать файл и внести в него содержимое нашего ListBox'а
//создаем файл и открываем его только для записи HANDLE hFile = CreateFile (szFileName, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, NULL, NULL); //если файл создался и открылся, то выполняем наши действия, но сначала стоит проверить;-) if (hFile != INVALID_HANDLE_VALUE) { DWORD dwCount = (DWORD)::SendDlgItemMessage (hWnd, IDC_LIST1, LB_GETCOUNT, 0, 0); //получаем количество строк for (DWORD i = 0; i < dwCount; i++) { ::SendDlgItemMessage (hWnd, IDC_LIST1, LB_GETTEXT, i, (LPARAM) (LPCTSTR) lpString); //получим элемент listbox'а lstrcat (lpString, "\xD\xA"); //добавим перенос строки DWORD dwBytesCount; WriteFile (hFile, (LPCVOID) lpString, lstrlen (lpString), &dwBytesCount, NULL);//запишем в файл элемент } CloseHandle (hFile);//закроем наш файл }
delete [] lpString;//удалим временный буфер
| |