C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Как обновить список файлов в общих диалогах / Файлы, папки, диски / Файловая система

Как обновить список файлов в общих диалогах

Иногда, в общих диалогах, таких как File Open или Save As необходимо обновить список файлов не закрывая диалога. Сделать это можно путём эмулирования двойного щелчка по списку директорий. Можно конечно отправить сообщение из любого другого приложения, однако, чтобы отправить сообщение диалогу, надо использовать процедуру ловушки.

Функции общих диалогов для обновления списка файлов и директорий являются встроенными в общие диалоги, поэтому недоступны для приложений, работающих с подпрограммами общих диалогов. Эти функции срабатывают только когда пользователь сделает двойной щелчёк по списку.

Пример кода

Следующий код использует кнопку Cancel общего диалога для обновления списка:

   BOOL CALLBACK __export FileOpenHook (HWND hDlg, UINT message,
                            WPARAM wParam, LPARAM lParam)
   {
      switch (message)
      {
         case WM_COMMAND:
            switch(wParam)
            {
            // Далее эмулируем двойной щелчёк на списке директорий,
            // заставляя диалог по новой считать текущую директорию
            // с файлами и обновить список файлов.
               case IDCANCEL :
                  PostMessage( hDlg, WM_COMMAND, lst2,
                               MAKELPARAM(GetDlgItem(hDlg, lst2),
                               LBN_DBLCLK);
                  return TRUE;
            }
         break;
      }
      return FALSE;
   } 

Если приложение для платформы Win32, то уведомительное сообщение отправляется немного подругому; ниже приведён код PostMessage для приложений Win32:

   PostMessage (hDlg, WM_COMMAND, MAKEWPARAM (lst2,LBN_DBLCLK),
             (LPARAM)GetDlgItem (hDlg, lst2)); 

Приложения, использующие ID элементов управления общего диалога должны включать файл DLGS.H.

Шаблоны для общих диалогов находятся в директории \SAMPLES\COMMDLG либо в директории \INCLUDE дистрибутива Windows SDK.