Partager via


Домашнее задание — Windows 7

Можно ли отключить отображение библиотек в стандартных диалогах открытия/сохранения файлов?

Совсем отключить отображение библиотек нельзя. Тем не менее, это не будет проблемой при использовании диалога сохранения файлов. Дело в том, что если не указывать в какую из папок библиотеки сохраняется файл, он попадает в папку, помеченную как место сохранения файлов по умолчанию — Default save location.

Library locations

Тем не менее, еще раз хочу обратить внимание на необходимость использования метода IFileDialog::GetResult и последующей работы с интерфейсом IShellItem во всех случаях при работе с файловыми диалогами. Только данный метод гарантирует получение пути до выбранного файла или папки в случае работы с библиотеками. Фрагмент кода ниже сохраняет полный путь до выбранного объекта в переменную LPWSTR resultFilePath.

#include <comdef.h>
#include <shlobj.h>

_COM_SMARTPTR_TYPEDEF (IFileOpenDialog, __uuidof (IFileOpenDialog));
_COM_SMARTPTR_TYPEDEF (IShellItem, __uuidof (IShellItem));

IFileOpenDialogPtr fileOpenDialog (__uuidof (FileOpenDialog));
if (fileOpenDialog->Show(window) != HRESULT_FROM_WIN32 (ERROR_CANCELLED)) {
      IShellItemPtr resultShellItem;
      fileOpenDialog->GetResult (&resultShellItem);
      LPWSTR resultFilePath = NULL;
      resultShellItem->GetDisplayName (SIGDN_FILESYSPATH, &resultFilePath);
}

Каково будущее библиотеки WTL (Windows Template Library)?

Будущее данной библиотеки в руках сообщества разработчиков. Данная библиотека официально не поддерживается Microsoft, несмотря на то, что была изначально разработана у нас.

Последняя доступная на сегодня версия — WTL 8.0. Она распространяется на условиях Microsoft Permissive License. Эта версия поддерживает новые элементы пользовательского интерфейса Windows Vista — подробнее читайте в статье Кенни Кера (по-русски).

Полезные ресурсы по WTL:

Поддерживает ли новая технология вывода текста DirectWrite вертикальное направление письма?

Вертикальное направление, используемое, например, традиционным китайским и японским письмом, к сожалению, DirectWrite не поддерживает (по состоянию в Windows 7 Beta). Направление письма задается значением перечисления DWRITE_READING_DIRECTION в вызове метода IDWriteTextFormat::SetReadingDirection. В данный момент в документации описаны только два значения:

  • DWRITE_READING_DIRECTION_LEFT_TO_RIGHT
  • DWRITE_READING_DIRECTION_RIGHT_TO_LEFT

ГБ