Керівництво повного ідіота по написанню розширень оболонки - частина v

У п'ятій частині керівництва ми наважимося заглянути в світ вікон властивостей. Коли Ви виводите властивості об'єктів файлової системи провідник показує їх на сторінці "Загальні". Оболонка дозволяє нам розширити вікно набору властивостей, використовуючи тип розширення, який називається обробником набору властивостей (property sheet handler).

Оброблювач набору властивостей

Всі знайомі з вікнами властивостей провідника. Точніше кажучи, це набір властивостей, який містить одну або більше сторінок. Кожен набір властивостей має сторінку "Загальні", яка буде показувати повний шлях, дату модифікації та іншу інформацію. Провідник дозволяє нам додати свої власні сторінки до набору властивостей, використовуючи розширення - обробник набору властивостей. Оброблювач набору властивостей може також додати або замінити сторінки властивостей для певних елементів панелі управління, але ця тема тут не буде розглядатися.

Якщо Ви подивіться властивості для файлів * .URL (ярлички до internet сторінок), Ви можете побачити обробник набору властивостей в дії. Вкладка "CodeProject" є наочним прикладом розширення з цієї статті. Вкладка "Web Document" показує розширення, інстальовані IE.

Керівництво повного ідіота по написанню розширень оболонки - частина v

Використання AppWizard

У майстра ATL об'єктів, на першій панелі вже вказано Simple Object, тому просто натисніть кнопку Next. У другій панелі, в поле редагування Short Name введіть коротке ім'я FileTimeShlExt і клацніть OK. (Решта поля заповнюються автоматично.) Ми створили клас CFileTimeShlExt. який містить основний код для реалізації об'єкта COM. Додамо свій код до цього класу.

інтерфейс ініціалізації

Оскільки обробник набору властивостей оперує всіма виділеними файлами відразу, як інтерфейс ініціалізації використовується IShellExtInit. Нам необхідно додати IShellExtInit до списку інтерфейсів, які реалізує CFileTimeShlExt. Інструкція, як це зробити, міститься в частині IV. Класу також необхідний список рядків, в якому будуть зберігатися імена виділених файлів.

Ви могли помітити, що GUID розширення збережений тут як ім'я ключа реєстрації замість строкового значення. Документація і книги, які я переглядав, суперечать один одному з приводу правильного позначення, хоча під час мого швидкого випробування обидва варіанти працювали. Я вирішив йти по шляху Dino Esposito ( "Visual C ++ Windows Shell Programming") і помістив GUID як ім'я ключа.

Далі буде.

У частині VI ми розглянемо інший новий тип розширень - обробник скидання, який завантажується, коли об'єкти оболонки скидаються на файл.