Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалог открытия файла, Как получить сам диалог? 
:(
    Опции темы
kuzzmi
Дата 30.6.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.6.2009

Репутация: нет
Всего: нет



Всем привет.

Знаю, тем таких тут пруд пруди, но ответа не нашел.

В общем, только-только перешел с консольных приложений в оконные, с горем пополам сообразил что к чему, как возникла проблема:
не получается вызвать окно открытия файла. Ммм... Поставленная цель - через выпадающее меню "Файл" и пункт "Открыть" получить стандартный диалог открытия файла для обработки.

Код

case IDM_OPENDB:

            //////////////////////////////////////////////////////
            OPENFILENAME ofn;                                    // структура диалога открытия файла
            wchar_t szFile[255];                                // буфер для имени файла
            HWND hwnd;                                            // окно - владелец
            HANDLE hf;                                            // дескриптор файла
            // Заполняем OPENFILENAME
            szFile[0]=0;
            ZeroMemory(&ofn, sizeof(ofn));
            ofn.lStructSize                        = sizeof(ofn);
            ofn.hwndOwner                        = hwnd;
            ofn.lpstrFile                        = szFile;
            ofn.nMaxFile                        = sizeof(szFile);
            ofn.lpstrFilter                    = L"All\0*.*\0Text\0*.TXT\0";
            ofn.nFilterIndex                    = 1;
            ofn.lpstrFileTitle                    = NULL;
            ofn.nMaxFileTitle                    = 0;
            ofn.lpstrInitialDir                = NULL;
            ofn.Flags                            = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
            // Открытие диалога открытия файла
            if (GetOpenFileName(&ofn))
            hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL,
                            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL);
            break;
            //////////////////////////////////////////////////////


IDM_OPENDB - вроде как событие назначенное на то самое "Открыть".

В итоге отсутствует реакция на нажатие кнопки.

Помогите, пожалуйста.
PM MAIL   Вверх
jonie
Дата 30.6.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



1. создал пустой проект Windows Applicaion
2. открыл Resource View и в меню File добавил Open, идентификатор у меня получился ID_FILE_OPEN
3. Вписал код (обрати внимание на отличия, ты не инициализурешь ничем hwnd свой) в WndProc.switch: 
Код

        case ID_FILE_OPEN:
            {
                //////////////////////////////////////////////////////
                OPENFILENAME ofn;                                    // структура диалога открытия файла
                wchar_t szFile[255];                                // буфер для имени файла
                HANDLE hf;                                            // дескриптор файла
                // Заполняем OPENFILENAME
                szFile[0]=0;
                ZeroMemory(&ofn, sizeof(ofn));
                ofn.lStructSize                        = sizeof(ofn);
                ofn.hwndOwner                        = hWnd;
                ofn.lpstrFile                        = szFile;
                ofn.nMaxFile                        = sizeof(szFile);
                ofn.lpstrFilter                    = L"All\0*.*\0Text\0*.TXT\0";
                ofn.nFilterIndex                    = 1;
                ofn.lpstrFileTitle                    = NULL;
                ofn.nMaxFileTitle                    = 0;
                ofn.lpstrInitialDir                = NULL;
                ofn.Flags                            = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
                // Открытие диалога открытия файла
                if (GetOpenFileName(&ofn))
                    hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL,
                    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL);
                break;
                //////////////////////////////////////////////////////
            }

3. добавил  #include <Commdlg.h>  в stdafx.h

запустил и все работает.

какая студия у тебя?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
kuzzmi
Дата 30.6.2009, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.6.2009

Репутация: нет
Всего: нет



Вот в чем была загвоздка... 
Запустилось без ошибок, все работает.
Спасибо  smile 

P.S. Visual Studio 2008

Это сообщение отредактировал(а) kuzzmi - 30.6.2009, 19:47
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.