Алекс Jenter - Программирование на Visual C++. Архив рассылки

Тут можно читать онлайн Алекс Jenter - Программирование на Visual C++. Архив рассылки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на Visual C++. Архив рассылки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.33/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Алекс Jenter - Программирование на Visual C++. Архив рассылки краткое содержание

Программирование на Visual C++. Архив рассылки - описание и краткое содержание, автор Алекс Jenter, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Программирование на Visual C++. Архив рассылки - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование на Visual C++. Архив рассылки - читать книгу онлайн бесплатно, автор Алекс Jenter
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Интерфейс IShellFolderпредоставляет метод SetNameOf, позволяющий изменить экранное имя файлового объекта или вложенной папки. Изменяя экранное имя элемента, Вы изменяете его идентификатор, поэтому функция возвращает PIDL-указательна новый идентификатор. Изменение экранного имени файлового объекта приводит к его фактическому переименованию в файловой системе.

Интерфейс IShellFolderтакже предоставляет метод ParseDisplayName, который позволяет узнать идентификатор элемента по его имени. Этому методу необходимо передавать имя, сгенерированное методом GetDisplayNameOfс установленным флагом SHGDN_FORPARSING.

С помощью глобального метода SHGetPathFromIDListпо списку идентификаторов, определяющих объект относительно корня пространства имён, можно определить путь к объекту файловой системы.

С помощью глобального метода SHAddToRecentDocsВаше приложение может добавить документ к списку последних, с которыми работал пользователь, или очистить этот список.

С помощью глобального метода SHEmptyRecycleBin, появившегося в версии 4.71 оболочки windows, Ваше приложение может очистить корзину (recycle bin). Удаление файла в корзину (то есть – с возможностью дальнейшего восстановления) производится глобальным методом SHFileOperation, подробное описание которого выходит за рамки этого обзора. Вы также можете узнать количество объектов, расположенных в корзине, и их суммарный размер, с помощью метода SHQueryRecycleBin.

Примечания

Microsoft Visual C++ поставляется с файлами заголовков и поддержки COM, в которых определены шаблон класса _com_ptr_t, инкапсулирующий функциональность ссылки на com-объект, и самые распространённые специализации этого шаблона (в том числе для большинства стандартных интерфейсов пространства имён оболочки). При их использовании освобождение ссылок автоматизируется.

Copyright 1999 by Akzhan Abdulin. При публикации просьба указывать источник и авторство.

Комментарии, исправления, замечания и пожелания приветствуются по адресу: akzhan@beep.ru.

ВОПРОС-ОТВЕТ

Q. У меня одна проблема: Пишу одну программку (написал уже довольно много) используя Win32API. И у меня возникла проблема со ScrollBar'ами. Вся загвоздка в том, что позиция бегунка прокрутки описана как short int и соответственно лежит в двухбайтном диапазоне. А в моей программе диапазон прокрутки может быть больше чем 32767. В хелпе на сообщение WM_VSCROLL советуют использовать функцию GetScrollPos, у меня че-то не получилось ее использовать. Как решить эту проблему?

Алексей Иванов

A 1 При работе с 32-битными значениями позиции бегунка значение nPos, передаваемое обработчику OnHScroll некорректно, для получения реального значения можно использовать ф-цию GetScrollPos, либо GetScrollInfo [возвращается в scrollinfo.nPos]. Однако, при обработке случая nSBCode==SB_THUMBTRACK, правильное значение текущей позиции возможно получить лишь при вызове GetScrollInfo(). Это значение будет возвращено в поле scrollinfo.nTrackPos;

Для работы с 32-битными значениями могут быть использованы следующие ф-ции: SetScrollPos, SetScrollRange, GetScrollPos, и GetScrollRange, SetScrollInfo, GetScrollInfo

Это все работает – лично проверял.

Bad Sector

A 2Из вопроса не ясно, использует ли автор стили WS_HSCROLL и WS_VSCROLL или элемент управления scroll bar. Однако и в том, и в другом случае можно использовать одни и те же функции (SetScrollInfo/GetScrollInfo), чтобы управлять полосой прокрутки. Сначала (с помощью SetScrollInfo) для неё задаются 32-разрядные значения основных параметров (положения ползунка, диапазона изменения его положения и размера страницы). Затем в обработчике сообщений WS_HSCROLL и WS_VSCROLL можно использовать GetScrollInfo, чтобы получить значения всех этих параметров (опять же 32-разрядные!).

Допустим, окно имеет стиль WS_VSCROLL. Тогда в указанные функции нужно передавать HWND этого окна и константу SB_VERT (в случае с горизонтальной полосой прокрутки используется SB_HORZ). Например:

// Создаём окно и инициализируем scroll bar.

HWND hWnd = CreateWindow(…);

SCROLLINFO si;

si.cbSize = sizeof(si);

si.fMask = SIF_POS | SIF_RANGE | SIF_PAGE;

si.nMin = 0;

si.nMax = 100000; // больше, чем вмещает short!

si.nPos = 0;

si.nPage = 100;

SetScrollInfo(hWnd, SB_VERT, &si, TRUE);

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {

switch (message) { // Обрабатываем сообщение WM_VSCROLL.

case WM_VSCROLL:

{

SCROLLINFO si;

si.cbSize = sizeof(si);

si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE | SIF_TRACKPOS;

GetScrollInfo(hWnd, SB_VERT, &si);

int pos = si.nPos;

switch(LOWORD(wParam)) {

case SB_LINEUP:

pos--;

break;

case SB_LINEDOWN:

pos++;

break;

case SB_PAGEUP:

pos -= si.nPage;

break;

case SB_PAGEDOWN:

pos += si.nPage;

break;

case SB_TOP:

pos = si.nMin;

break;

case SB_BOTTOM:

pos = si.nMax;

break;

case SB_THUMBPOSITION:

pos = si.nTrackPos;

break;

}

// Устанавливаем новое положение ползунка.

SetScrollPos(hWnd, SB_VERT, pos, TRUE);

break;

}

}

return DefWindowProc(hWnd, message, wParam, lParam);

}

В том случае, когда вместо стилей WS_xSCROLL используется элемент управления scroll bar, код выглядит совершенно аналогично, но функциям SetScrollInfo, GetScrollInfo и пр. передаётся HWND самой полосы прокрутки (а не владеющего ею окна), а в качестве второго параметра передаётся SB_CTL.

Александр Шаргин ( rudankort@mail.ru)
В ПОИСКАХ ИСТИНЫ

Q. Как сделать так, чтобы программа сама себя могла стереть, т.е. свой *.exe файл?

LowFeaR

Это все на сегодня. Пока!

Алекс Jenter jenter@mail.ru Красноярск, 2001.

Программирование на Visual C++

Выпуск №32 от 11 февраля 2001 г.

Приветствую вас, уважаемые подписчики!

СТАТЬЯ

Автоматизация и моторизация приложения

Акт первый

Автор: Николай Куртов

Редактор журнала СофтТерра

Софт Терра: Технологии Microsoft для разработчиков

Интро

Неслучайно именно эта статья была выбрана мной для начала рубрики, посвященной технологиям Microsoft для разработчиков. Слова OLE и COM (Component Object Model) на устах программистов вот уже 5 лет, тем не менее, парадигма компонентного подхода остается базовым и неизменным моментом в создании приложений. Я помню, насколько широкие горизонты я для себя открыл, осознав идею объектного подхода – с тех пор строю свои программы из компонентов-кирпичиков, объединяя их в более абстрактные модели – сервисы. Программирование давно стало сплавом творчества и строительства, оставляя в прошлом сугубо научно-шаманскую окраску ремесла. И если такой переход уже сделан, то сейчас можно обозначить новый виток – ломание барьеров API и переход к более обобщенному подходу в проектировании, выход на новый уровень абстракции. Немало этому способствовал интернет и его грандиозное творение – XML. Сегодня ключ к успеху приложения сплавляется из способности его создателей обеспечить максимальную совместимость со стандартами и в то же время масштабируемость. Придумано такое количество различных технологий для связи приложений и повторного использования кода, что сегодня прикладные программы не могут жить без такой "поддержки". Под термином "автоматизация" я понимаю настоящее оживление приложений, придание им способности взаимодействовать с внешней средой, предоставление пользователю максимального эффекта в работе с приложениями. Не равняясь на такие гранды технической документации, как MSDN, я, тем не менее, этой статьей хочу указать на путь, по которому сегодня проектируются современные приложения.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Алекс Jenter читать все книги автора по порядку

Алекс Jenter - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование на Visual C++. Архив рассылки отзывы


Отзывы читателей о книге Программирование на Visual C++. Архив рассылки, автор: Алекс Jenter. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x