Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
291 / 239 / 102
Регистрация: 07.04.2011
Сообщений: 1,435
1

Структура OPENFILENAME - определить количество выделенных файлов

07.04.2015, 20:01. Показов 1672. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь через OPENFILENAME открывать несколько необходимых мне файлов.
Задача следующая:Открыть несколько файлов,поместить их имена с расширениями в массив,и в дальнейшем будет открываться каждый файл по очереди для обработки.Браться имена будут из массива.
Выбираю 2 файла xls.Нижеприведенный код выводит имена выделенных файлов в мессажбокс.2 выделенных файла выводит имена корректно,а потом всякий мусор - пустые сообщения,точки,иероглифы.
Собственно вопрос:Почему выводится всякий мусор.Выделено всего 2 файла.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include "windows.h"
#include <iostream>
#include <conio.h>
#include <CommDlg.h>
 
 
int main(int argc, char* argv[])    
{   
    
            OPENFILENAME ofn;  
            wchar_t nameFile[260];
            wchar_t szFile[260]; 
            ZeroMemory(&ofn, sizeof(ofn));
            ofn.lStructSize = sizeof(ofn);
            ofn.hwndOwner = NULL;
            ofn.lpstrFile = szFile;
           //ofn.lpstrFile[0] = '\0';
            ofn.nMaxFile = sizeof(szFile);
            ofn.lpstrFilter = L"Excel files\0*.XLS;*.XLSX\0";
            ofn.nFilterIndex = 1;
            ofn.lpstrFileTitle = nameFile;
            ofn.nMaxFileTitle = 256;
            ofn.lpstrInitialDir = NULL;
            ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT|OFN_EXPLORER;
 
            if (GetOpenFileName(&ofn) == 0) {return 0;}
 
            else { 
                int nOffset = ofn.nFileOffset;
                MessageBox(NULL, ofn.lpstrFile, L"Directory", MB_OK);
                if (nOffset > lstrlen(ofn.lpstrFile))
                {while(ofn.lpstrFile[nOffset]!=' ')
                    {
                        MessageBox(NULL, ofn.lpstrFile + nOffset, L"Files", MB_OK);
                        nOffset = nOffset + wcslen(ofn.lpstrFile+nOffset) + 1;
                    }
                }
return 0;
            }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2015, 20:01
Ответы с готовыми решениями:

Структура OPENFILENAME
Здравствуйте, дорогие участники форму! Подскажите, пожалуйста, как в OPENFILENAME задать путь к...

Выбор нескольких файлов в OPENFILENAME
std::vector&lt;bstr_t&gt; NameFilesExcel; OPENFILENAME ofn; wchar_t nameFile = {0}; wchar_t...

Список выделенных файлов
Здравствуйте. Как можно сделать список выбранных файлов, использую реестр для пункта меню...

Структура: Определить количество сотрудников, получивших больше 50 и меньше 120 у.е.
Помогите, пожалуйста, с двумя разными заданиями на тему &quot;Структура&quot; 1.Определить тип данных...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
07.04.2015, 20:17 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    OPENFILENAME ofn;
    wchar_t nameFile[260] = {0}; // инициализировать нулями не забываем
    wchar_t szFile[260] = {0};
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = NULL;
    ofn.lpstrFile = szFile;
    // ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = L"Excel files\0*.XLS;*.XLSX\0\0"; // двойной ноль в конце
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = nameFile;
    ofn.nMaxFileTitle = 256;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_EXPLORER;
 
    if (GetOpenFileName(&ofn) == 0)
    {
        return 0;
    }
 
    else
    {
        int nOffset = ofn.nFileOffset;
        MessageBox(NULL, ofn.lpstrFile, L"Directory", MB_OK);
        if (nOffset > lstrlen(ofn.lpstrFile))
        {
            while (ofn.lpstrFile[nOffset]) // проверять на \0
            {
                MessageBox(NULL, ofn.lpstrFile + nOffset, L"Files", MB_OK);
                nOffset = nOffset + wcslen(ofn.lpstrFile + nOffset) + 1;
            }
        }
        return 0;
    }
1
07.04.2015, 20:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2015, 20:17
Помогаю со студенческими работами здесь

Копирование файлов, выделенных в ListBox
Всем доброго здоровичка!!! Такая проблема: На форме 2 листбокса с мультивыделением. В них...

Удаление выделенных файлов из Listbox
Всем привет! Есть Listbox, который заполняется файлами из папки ListBox1.Items.AddRange((From...

Получить список выделенных файлов
2. Как получить список выделенных файлов в любом менеджере файлов, который будет передаваться в мою...

Прошу сделать 2 скрина выделенных файлов и выслать
Кто может у себя в матлабе 2017 открыть сделать 2 скрина выделенных файлов и выслать пожалуйста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru