Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: GetOpenFileName() - подвисает программа под W2k  (Прочитано 7329 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Pu
Большой босс

ru
Offline Offline
78


« : 01-03-2004 12:22 » 

Трабл в следующем
GetOpenFileName вешает программу на двух машинах в оффисе. На одной помогла переустановка виндов. ПРичем на остальных все чикичики. Давали прогу тестить на сторону - в 50% случаев результат неуд. что посоветуете?
кусок кода прилагается.
(в проге используется ATL, компилю VC7.1)

 TCHAR strFileName[1024] = {0,};
 OPENFILENAME ofn = {0,};

    ofn.lStructSize = sizeof( OPENFILENAME);
    ofn.hwndOwner = m_hWnd;

    ofn.lpstrFilter = _T( "projects (*.bla)\0*.bla\0All files\0*.*\0\0");
    ofn.lpstrCustomFilter = NULL;
    ofn.nMaxCustFilter = 0;
    ofn.nFilterIndex = 1;
   
    ofn.lpstrFile = strFileName;
    ofn.nMaxFile = sizeof( strFileName)/sizeof( TCHAR);
   
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
   
    ofn.lpstrInitialDir = NULL;
    ofn.lpstrTitle = _T("Save as");
    ofn.Flags = 0;
    ofn.lpfnHook = NULL;
   ofn.lpstrDefExt = _T("bla");

    if (!GetSaveFileName(&ofn))    //здесь все заканчивается
        return 1;

спасибо!
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Serega
Гость
« Ответ #1 : 01-03-2004 13:56 » 

Вот так у меня не работает
Код:
TCHAR strFileName[1024(;

а зачем так инициализировать ?
Код:
OPENFILENAME ofn = | 0, ";

а с m_hwnd проблем нету ?
у меня он NULL и заставить этот код не сработать получилось только не инициализируя строку с путем
Записан
Pu
Большой босс

ru
Offline Offline
78


« Ответ #2 : 01-03-2004 14:11 » 

Цитата

а зачем так инициализировать ?
Код:
OPENFILENAME ofn = { 0, };
.
А какая разница?
Вечером все уйдут попробую протрассировать всю структуру офн. У меня лично сложилось впечатление, что какието софтины заменили стандартные файлы из АПИшных библиотек которые пользует comdlg32.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Pu
Большой босс

ru
Offline Offline
78


« Ответ #3 : 01-03-2004 14:14 » 

Цитата

Вот так у меня не работает
Код:
TCHAR strFileName[1024];

Так вылетает потому что там не нультерминированая строка а мусор который GetOpenFileName воспринимает соответственно как имя файла имхо однако
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Pu
Большой босс

ru
Offline Offline
78


« Ответ #4 : 01-03-2004 16:21 » new

поделюсь последними исследованиями по теме:
программа перестает виснуть при изменении
MULTITHREADED на
APARTMENTTHREADED.
Надо почитать, хочу понять как это зависит от машины.
Если у кого есть соображения , плз , поделитесь!
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines