Как создать файловый менеджер для windows

Visual C++ — расширенное программирование

Всего доброго. До встречи в следующей рассылке.

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

Путеводитель по файловым менеджерам для Windows

Официальный сайт: http://netez.com/2xExplorer

Как назывался ваш первый файловый менеджер? Если в прошлом десятилетии можно было смело ожидать ответ «Norton Commander», то сегодня знакомство с файловой структурой чаще всего начинается с Проводника Windows. 2xExplorer во многом повторяет концепцию стандартного инструмента Windows, при этом имея массу дополнительных полезных функций.

Сразу стоит отметить небольшой размер дистрибутива и бесплатный статус программы. Оба эти фактора делают 2xExplorer максимально доступным.

Файловый менеджер, имея поддержку множества горячих клавиш, позволяет осуществлять управление только с клавиатуры. Для часто используемых папок можно назначать собственные клавиатурные сочетания. Разработчики уделили пристальное внимание просмотру и изменению файлов, включив в дистрибутив неплохой редактор. 2xExplorer позволяет создавать миниатюры для BMP и HTML-файлов с целью более удобного просмотра.

Основная часть функций вынесена на панель инструментов, располагающуюся в нижней части рабочего окна приложения.

Использование программы омрачает лишь один факт. Разработка 2xExplorer прекращена несколько лет назад, перспектив улучшения продукта нет.

Официальный сайт: http://www.flexigensoft.com

AccelMan объединяет в себе функции файлового менеджера и программы для просмотра множества различных типов документов. Файловый менеджер содержит полноценный медиа-проигрыватель, текстовый редактор с возможностью подсветки синтаксиса, а также с поддержкой документов, использующих сложное форматирование (RTF, DOC). Рабочее окно AccelMan предоставляет множество полезной информации. В верхней части каждой панели располагается контекстно-зависимое меню. Во время стандартного просмотра папок вы видите список логических дисков. Если переходите в другой режим, то вместе с этим поменяются и элементы меню. Например, если на панели отображается содержимое файла, то вы можете видеть инструменты управления редактированием.

Во время установки AccelMan вы можете импортировать множество пользовательских данных из Total Commander, что заметно облегчает переход с популярнейшего файлового менеджера.

AccelMan понимает несколько типов архивов, в число которых входит TAR, GZIP, ARJ и RAR, а также имеет встроенный ZIP-архиватор. В файловый менеджер встроен инструмент конвертирования графических документов с поддержкой форматов JPEG, TIFF, GIF, PNG и BMP.

При разработке программы учитывается множество факторов. Конечный продукт должен обладать достаточным количеством возможностей, чтобы заинтересовать пользователя, но при этом иметь простой, доступный интерфейс и приемлемую скорость. AccelMan, безусловно, заслуживает самых лестных слов в плане функциональности. Но при этом разработчики забывают о том, что файловый менеджер — это один из самых первых инструментов, устанавливаемых на рабочей станции. Соответственно, программа должна работать максимально быстро и не забивать голову пользователя необходимостью изучения десятков кнопок и пунктов меню. AccelMan — далеко не самая быстрая и интуитивно понятная программа. Ее нужно детально изучать, чтобы получить максимальную выгоду от использования. Впрочем, лицензия позволяет потратить на изучение целый месяц, чтобы самостоятельно сделать окончательный вывод.

К содержанию Directory Opus 8.2.2.2

Официальный сайт: http://www.gpsoft.com.au

Файловые менеджеры делятся на две группы — двухпанельные и имеющие вид Проводника Windows. Directory Opus объединяет в себе оба способа представления информации, являясь примером завидной универсальности. Несмотря на огромное количество возможностей, рабочее окно программы не перегружено сложными элементами, Directory Opus легко осваивается даже при наличии только базовых знаний о файловой структуре.

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

С помощью Directory Opus вы можете просматривать огромное количество типов документов. Файловый менеджер позволяет подключать плагины, цель которых сводится именно к обеспечению подобного просмотра внутри рабочего окна приложения. В программу встроен небольшой браузер, инструмент просмотра документов MS Office, проигрыватель аудио и видео информации. С помощью Directory Opus можно просматривать большое количество типов графических файлов, включая формат RAW. Стоит заметить, что Directory Opus не имеет встроенных редакторов, все внимание сосредоточено именно на просмотре информации. В целом, все подобные инструменты работают хорошо, однако видеопроигрыватель работает очень медленно, даже обычные фильмы в формате DivX воспроизводятся с сильными рывками. Впрочем, это нельзя считать большим недостатком, ведь мы говорим о файловом менеджере.

Directory Opus позволяет очень гибко настраивать свои панели инструментов, горячие клавиши. В дистрибутив включено большое количество панелей, включающее в себя как управление работой непосредственно файлового менеджера, так и осуществление взаимодействия с внешними инструментами. На каждую кнопку, пункт меню может быть назначено произвольное клавиатурное сочетание.

Вы можете преобразовывать форматы графических файлов, а также управлять яркостью во время просмотра.

При ознакомлении с программой стоит обратить внимание на то, что большинство кнопок на панелях инструментов могут выполнять три функции, в зависимости от того, какой кнопкой мыши их активировать — левой, средней или правой.

Официальный сайт: http://www.efsoftware.com/cw/e.htm

EF Commander — один из старейших файловых менеджеров на сегодняшнем рынке. Изначально он был написан в 1994 году для OS/2 и лишь два года спустя портирован в среду Win32.

За долгие годы своего развития программный продукт не превратился в тяжелого монстра, так и оставшись компактной и быстрой программой. Рабочее окно приложения очень напоминает Total Commander, что многим облегчит знакомство, ведь не секрет, что продукт Кристиана Гислера пользуется огромной популярностью среди русскоязычных пользователей.

Между тем, EF Commander обладает мощными средствами просмотра документов, вплоть до HEX-редактора. С помощью плагинов можно осуществлять поддержку дополнительных типов документов. Файловый менеджер понимает более 20 типов архивов.

Вы можете стирать перезаписываемые оптические диски, а также записывать данные на большинство типов болванок. Для корректной работы данных механизмов, необходимо иметь установленный пакет Nero Burning ROM в системе.

EF Commander в свое время был первым файловым менеджером, в котором появился инструмент сопряжения с карманными ПК, на которых установлен Windows CE.

Разработчики дают 30 дней на ознакомление с программой. Знакомство проходит под градом постоянно выскакивающих окон с предложением в десятый, сотый раз согласиться с лицензией и приобрести программу online. Разумеется, необходимо соглашаться, иначе программа закрывается. Согласие дает передышку на несколько минут, после чего снова следует предложение о покупке.

Официальный сайт: http://www.rarlab.com/far_manager.htm

Легендарные синие текстовые панели впервые появились в Norton Commander. Само слово «нортон» в начале 90-х годов воспринималось как обозначение любого файлового менеджера. Впрочем, немного позже среди русскоязычных пользователей заслуженную популярность завоевал Dos Navigator, обладающий массой новых, по тем временам уникальных возможностей. С приходом Windows 95 и массовым переводом всего программного обеспечения в 32-битную среду старые легенды стали потихоньку забываться.

Александр Рошал, автор архиватора RAR, хотел в то время написать его консольную 32-битную версию. Видимо, дело пошло даже лучше, чем ожидалось, и вместо простой оболочки в стиле RAR для DOS, мы увидели настоящий файловый менеджер, несущий старые, проверенные временем традиции управления файлами.

FAR позволяет работать не только с локальными ресурсами, но и с сетевыми дисками, а также имеет FTP-клиент. В дистрибутив FAR включено несколько дополнительных модулей, позволяющих организовывать временную панель, список системных процессов, редактор реестра, а также инструмент, позволяющий изменять регистры букв в названиях групп файлов.

Отсутствие GUI сильно сковывает возможности файлового менеджера, но, вместе с тем, позволяет ему считаться самым быстрым продуктом данного класса ПО. Однако разработчики и не ставят перед собой задачу наполнения своего продукта массой функций. Вместо этого, FAR позволяет подключать внешние модули, с помощью которых можно выполнять самые неожиданные операции. На странице загрузки плагинов вы можете загрузить базу данных всех доступных модулей, насчитывающих более 600 штук.

FAR бесплатен для пользователей, проживающих на территории xUSSR. Для регистрации запустите файловый менеджер с ключом «-r», введите имя пользователя «xUSSR регистрация», а вместо кода регистрации наберите строчными русскими буквами текущий день недели.

К содержанию File Ant 20050830

Официальный сайт: http://www.fileant.com

FileAnt — весьма необычный файловый менеджер для Windows. Во-первых, управление программой с клавиатуры резко отличается от принятых стандартов (F5 — копировать, F7 — создать папку и т.д.). Во-вторых, программа сочетает в себе как дерево каталогов (как Проводник), так и две традиционные панели (Norton Commander).

По умолчанию, программа загружается в системный лоток, откуда ее можно быстро вызывать в любое время. Поддержка архивов по умолчанию осуществляется с помощью установленного в системе 7-zip, который, в свою очередь, понимает множество типов сжатия.

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

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

Во время тестирования FileAnt работал очень нестабильно. Кстати, это единственная программа во всем путеводителе, у которой наблюдались подобные проблемы. Во время попытки посмотреть видео, файловый менеджер зависал через раз. Один раз программа вылетела на ровном месте. И еще одна проблема связана с отображением заголовок вкладок — кириллица не поддерживается.

Официальный сайт: http://www.frigate3.com/rus

Разработчики, отбросив всякую скромность, называют свой продукт «самым функциональным и самым мощным средством работы с файлами». Но не это главное. Важнейшим достоинством Frigate является сохранение простоты освоения при всем богатстве возможностей.

Файловый менеджер позволяет просматривать огромное количество типов документов. Помимо традиционных архивов, текстовых документов, аудио и видео информации, вы можете открывать базы данных (DBF) и электронные таблицы (XLS).

Frigate имеет несколько оригинальных утилит в своем составе, не имеющих аналогов у конкурентов. С помощью калькулятора можно выполнять простейшие арифметические вычисления, блокнот помогает вести заметки, а часы с поддержкой тем оформления помогут не пропустить конец рабочего дня. Кроме того, в файловый менеджер встроена утилита контроля за автоматически запускающимися программами Windows, неплохой браузер, использующий движок Trident (возможно, даже не хуже, чем Internet Explorer), а также собственная консоль.

Поклонникам Total Commander будет приятно узнать, что Frigate поддерживает большинство плагинов легендарного файлового менеджера. Но и среди собственных дополнений можно найти весьма интересные примеры. Например, можно подключить проверку орфографии на русском языке. Работая в текстовом редакторе, вы можете использовать подсветку для множества типов документов (исходные тексты, HTML и другие). Если вы работаете над документом типа HTML, то можете сразу просматривать результат во встроенном браузере. Редактор поддерживает различные кодовые страницы. Frigate позволяет редактировать не только plain-text, но и RTF-документы.

Многие пользователи Total Commander облюбовали возможность запуска приложений прямо из панели инструментов. Frigate выполняет данную задачу несколько иначе. В правой части главного меню располагается панель быстрого запуска. При желании ее можно перенести в любое место. Панель выглядит очень компактно и позволяет сохранить драгоценное место для традиционных инструментов файлового менеджера.

Frigate распространяется в трех вариантах. Облегченный вариант (Lite) можно установить бесплатно и пользоваться без ограничений по времени. Остальные варианты имеют ознакомительный период 30 дней.

К содержанию Sky Commander 1.6.8.702

Официальный сайт: http://www.nmzlabs.com

Sky Commander — молодой и весьма амбициозный проект. За основу файлового менеджера взята концепция Проводника Windows. По умолчанию вы видите довольно крупные значки файлов и папок. Для графических файлов сразу создаются миниатюры.

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

При наведении мышью на файл внутри панелей появляется подсказка, кратко раскрывающая его содержание. Для графических файлов отображаются довольно крупные миниатюры, в MP3-файлах показываются теги, а содержание текстовых документов раскрывается с помощью первых двух строк.

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

Одна из особенностей Sky Commander заключается в наличии пакетного режима работы с архивами. C помощью специального инструмента вы можете указать произвольное количество архивов, а затем выполнить распаковку с помощью одной команды. Кроме того, файловый менеджер позволяет восстанавливать поврежденные ZIP-архивы.

Как было сказано ранее, проект еще очень молодой. Sky Commander еще не успел обрасти огромным количеством функций и в некоторых вопросах уступает конкурентам. С другой стороны, возможности продукта намного выше, чем у Проводника. А ведь многим пользователям достаточно стандартных средств Windows управления файлами. Может быть, и не нужно Sky Commander становиться вторым Фрегатом?

К содержанию Speed Commander 11.1

Официальный сайт: http://www.speedproject.de/enu/speedcommander

Название программы обещает высокую скорость, однако нельзя сказать, что Speed Commander является чем-то выдающимся в данном аспекте. Расход оперативной памяти весьма значителен, если сравнивать с конкурентами, да и интерфейс, наполненный множеством графических элементов, нельзя однозначно назвать быстрым. Между тем, если проанализировать отзывы пользователей Speed Commander на форумах, то нетрудно обнаружить доминирование положительной риторики.

Первое, на что следует обратить внимание во время ознакомления — это удивительная гибкость настроек всех панелей, горячих клавиш. Вы можете свободного перемещать любые панели, а с помощью правой кнопки мыши вызывать инструмент конфигурирования. Speed Commander позволяет создать кнопку и привязать к ней любую поддерживаемую программой операцию. Вы можете указать свой графический файл для кнопки. Любая операция может дублироваться с помощью сочетания клавиш. Программа поддерживает смену тем оформления, которые, впрочем, не меняют дизайн кнопок, но могут управлять цветовыми и дизайнерскими решениями, затрагивающими панели в целом. Вы можете указывать размер кнопок на панелях.

Speed Commander поддерживает множество типов архивов, причем архивирование может происходить вместе с шифрованием. Вы можете создать архив, зашифровать данные и имена файлов и поставить на него пароль. В Speed Commander имеется встроенная поддержка просмотра около 80 (!) графических и текстовых форматов. Текстовый редактор допускает возможность подсветки синтаксиса.

Метафора быстрого запуска приложений реализована не совсем обычно. На панели инструментов есть кнопка, нажав на которую, вы попадаете в аналог стартового меню Windows. Кроме того, можно назначить кнопки на открытие рабочего стола, элемента «Мой компьютер», системных папок, а также Избранного Internet Explorer.

К счастью, погоня за необычными функциями не привела Speed Commander в разряд сложных, тяжело осваиваемых программ. По крайней мере, пользователю Total Commander, скорее всего, будет казаться, что все элементы расположены логично. Speed Commander во многом похож на программу Кристиана Гислера, о которой и пойдет речь далее.

К содержанию Total Commander 6.53

Официальный сайт: http://www.ghisler.com/

«Пришел, увидел, победил» — сообщал о победе над Понтийским царем Юлий Цезарь. Кристиан Гислер, будучи студентом Университета Берна, в 1993 году написал файловый менеджер. Ему не нравились другие программы. Написал и победил.

Много ли вы помните файловых менеджеров с графическим интерфейсом, написанных во времена царствования Windows 3.x? Вопрос практически риторический. В начале 90-х годов большинство программ подобного класса были рассчитаны на работу в MS DOS. Windows Commander (старое название продукта) фактически стал первой ласточкой, первой программой, использовавшей все преимущества GUI.

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

Несмотря на то, что в последнее время все больше программ рассчитано на управление с помощью мыши, работа с Total Commander может осуществляться исключительно с помощью клавиатуры, что значительно увеличивает скорость выполнения повторяющихся задач. Файловый менеджер обладает массой мелких возможностей, ставших для многих предметами первой необходимости. «Чем архивировал?» — задается вопрос, «Total Commander» — дается ответ, подразумевающий использование алгоритма ZIP. Навигация по FTP-серверам постепенно стала привычной операцией, без которой работа с файловым менеджером кажется неполноценной. Возможность добавления собственных кнопок на панель инструментов, пакетное переименование файлов, история каталогов и список любимых папок, разбиение и объединение файлов — все это лишь малая часть большого списка возможностей Total Commander. А многое из того, что находится за пределами данного списка, реализовано в виде плагинов.

Как уже было сказано ранее, Total Commander не идеален в плане абсолютных качеств. Frigate обладает более широкими возможностями, Far менее требователен к ресурсам, Speed Commander позволяет более гибко настраивать внешний вид. Может быть, в данном случае работает пословица «лучшее — враг хорошего?»

Стоит обратить внимание на условия распространения программы. Если очень сильно упростить условия всех современных лицензий, то программы бывают либо платными, имея некоторый срок для ознакомления, либо бесплатными. Лицензия Total Commander позволяет вам бесплатно использовать продукт неограниченное количество времени. В этом случае при старте программы отображается окно с предложением купить программу. Вы закрываете его и после этого пользуете полнофункциональной версией файлового менеджера. Заплатив за программу, вы сможете работать с Total Commander без назойливого стартового окна.

Читайте также:  Пропало контекстное меню создать windows 10
Оцените статью

Выпуск № 6
Cайт : SoftMaker.fatal.ru
Архив рассылки : SoftMaker.fatal.ru
Количество подписчиков : 36

&nbsp&nbspЗдравствуйте, уважаемые подписчики.
&nbsp&nbspРад сообщить вам, что в разделе «MFC — простое и сложное» начат новый цикл статей «Создание файлового менеджера», в которых будет подробно рассмотрен процесс разработки программы-аналога широко известного Windows Commander — а. Надеюсь, вам будет интересно.

&nbsp&nbspКак всегда, Вы можете отправить свои пожелания, кликнув по этой ссылке.

Искренне Ваш. С уважением, Вахтуров Виктор.

В этом выпуске
MFC — простое и сложное [Создание файлового менеджера (часть 1)].
Пролог.

&nbsp&nbspКак я писал в прошлой рассылке, сегодня мы начнем рассматривать новую тему.

&nbsp&nbspХочу предложить вам интересное занятие — мы напишем файловый менеджер. Писать будем, конечно же, используя среду разработки Microsoft Visual C++ и библиотеку MFC.

&nbsp&nbspСначала мы создадим интерфейс — «лицо» нашего программного продукта, а потом «наполним» его «мозгами».

&nbsp&nbspНе будем долго думать в отношении того, какой же интерфейс у нас будет. Классический образ пользовательского интерфейса файлового менеджера существует уже давно (со времен первых версий Norton Commander). Потом он был воспроизведен во многих программах-оболочках, работающих под DOS и унаследован программами-файловыми менеджерами, работающими под Windows. Итак, «центром» всего интерфейса будут, как обычно, две панели, имеющие одинаковый внешний вид (содержащие списки файлов и директорий, а также некоторые элементы управления) и несущие одинаковую функциональную нагрузку.

&nbsp&nbspКак я сказал выше, не будем далеко ходить за примером. К тому же учиться лучше воспроизводя некоторые классические вещи. Поэтому выберем в качестве образца именно такой классический пример — в своем роде образец среди программ данного класса — Windows Commander (сейчас он, правда, называется Total Commander, ибо дядя Билли очень заботится о чистоте восприятия логотипа своих форточек).
Так вот. Мы просто попытаемся в некоторой степени воспроизвести интерфейс Total Commander — а. На самом деле это совсем не трудно. На это у меня ушла всего пара часов. Но это если четко представлять себе что надо делать.
Обещаю вам, что после прочтения данного цикла статей вы сможете разрабатывать с помощью MFC пользовательские интерфейсы, гораздо более сложные чем у Total Commander.

&nbsp&nbspЗа основное правило в нашей работе мы примем принцип : «разделяй и властвуй». Мы будем делить задачу на части, а каждую часть — еще на части. И реализовывать последовательно то, что необходимо на данном этапе. Мы будем строить программу из модулей, которые с успехом могут быть использованы потом в других приложениях.

&nbsp&nbspКак я уже сказал, первое что должно быть у современного файлового менеджера — это две панели, отображающие содержимое каталогов дисков компьютера. Почему две (не одна, не три, а именно две) ? Как говорится, исторический опыт. Это самое удачное построение пользовательского интерфейса программ данной категории. Вспомните проводник Windows. Большинство людей пользуются им только тогда, когда под рукой нет ни одной, даже самой захудалой, но более удобной программы-оболочки или файлового менеджера.

&nbsp&nbspЕще раз взглянем на пользовательский интерфейс программы Total Commander.
Две панели, разделенные. Чем ? Вот об этом сегодня и пойдет речь.
О разделяемых окнах. О сплиттерах.

Сплиттеры.

&nbsp&nbspПрежде чем начать создавать наш проект, позвольте изложить немного теории (ибо, куда же без нее, родной).

&nbsp&nbspНаблюдая за развитием пользовательского интерфейса прикладных программ, работающих под управлением Windows, можно отметить явный прогресс в этой области за последние годы. Интерфейс действительно становится все более удобным и приятным, все более «дружественным». Все большую роль в этом процессе играют «неродные» Windows элементы управления, обладающие функциональностью, не реализованной в стандартных элементах и созданные разработчиками для решения специфических задач.

&nbsp&nbspКак ни странно, сплиттеры относятся именно к группе «нестандартных» элементов управления. Это значит, что не существует класса окна сплиттера, определяемого операционной системой, и в случае необходимости его (сплиттер) придется реализовывать самому. К счастью, фирмы — производители позаботились о нуждах программистов и в состав библиотек классов для построения пользовательского интерфейса обычно входят классы, инкапсулирующие функциональность разделяемых окон.

&nbsp&nbspЕсли еще более пристально всмотреться в пользовательский интерфейс программ, использующих сплиттеры, то можно заметить, что не все сплиттеры одинаковы и, очевидно, у них разные принципы работы. Действительно, обычно различают два типа сплиттеров : дружественный и иерархический.

Остановимся на каждом типе более подробно.

&nbsp&nbspВы можете увидеть такой вид сплиттера довольно часто. Ярким примером приложения, использующего именно дружественный сплиттер является приложение справочной системы Windows hh.exe.
До появления Visual Studio NET и его справоцной системы, все файлы справки MSDN просматривались именно с помощью этого приложения. Запустите справку Windows, и вы поймете о чем я говорю.

&nbsp&nbspОбычно дружественный сплиттер — это окно, позиционирующееся между разделяемыми им окнами и имеющее одно с этими окнами родительское окно. При «захвате» мышкой этого окна, оно перемещается горизонтально или вертикально (в зависимости от того, какой — горизонтальный или вертикальный сплиттер), следуя за указателем мыши и, либо одновременно со своим движением (что приводит к частой перерисовке разделяемых окон), либо после «отпускания» изменяет размеры этих самых разделяемых окон. Недостатками использования такого сплиттера можно назвать возможные проблемы с перерисовкой как разделяемых окон, так и самого окна сплиттера, а также то, что обычно таким сплиттером можно «разделить» всего два окна. Попробуйте снова запустить справку Windows и подвинуть сплиттер сначала достаточно намного влево, а затем вправо — правее его первоначальной позиции. Я много раз наблюдал неперерисовавшиеся «следы» на полосе окна сплиттера.

&nbsp&nbspИменно такой сплиттер реализован в MFC. Принцип работы такого сплиттера заключается в том, что сплиттер является родительским окном для всех «разделяемых» окон. То есть обычно при использовании такого сплиттера его позиционируют в пределах окна — рамки таким образом, чтобы он занимал всю ее клиентскую область, а окна, которые должны быть разделены сплиттером создают как дочерние окна самого сплиттера. При «перетаскивании» области разделения такой сплиттер обычно блокирует вывод на экран в прямоугольной области, занимаемой им функцией LockWindowUpdate и производит отрисовку «области перетаскивания». Минус такого подхода в том, что на время «перетаскивания» блокируется весь графический вывод во все «разделяемые» окна.
Но к преимуществам такого сплиттера можно отнести возможность «разделять» больше чем два окна сразу и по горизонтали и по вертикали. Иными словами, можно сформировать целую «матрицу» окон, которые будут позиционироваться в пределах окна сплиттера.

&nbsp&nbspНа этом закончим лирическое отступление в область теории и приступим к практической работе.

&nbsp&nbspДля начала создадим проект.

&nbsp&nbspСоздадим его при помощи обычного визарда ( MFC AppWizard (exe) ) Visual C++ для создания MFC — приложений.
Я назвал проект VCmd. Коротко и просто.
На первом шаге визарда выберем однодокументный тип приложения и отключим поддержку архитектуры Документ/Облик, сняв соответствующий флажок. Далее — все по умолчанию до шага №4 визарда. Здесь просто снимем флажок «Initial Status Bar». Так мы заранее избавились от строки состояния (в Total Commander её нет). Все. Можно нажать кнопку «готово». Проект создан. Откомпилировав его, увидим просто окно-рамку с панелью инструментов и меню. Панелью инструментов мы займемся позже, а сейчас хотелось бы видеть не что иное, как два окна, разделенные сплиттером.

&nbsp&nbspПри создании проекта с поддержкой архитектуры Документ/Облик можно сразу создать окно, разделенное сплиттером. Можно даже создать нечто вроде «заготовки» проводника Windows, но во-первых, мы не хотим проводник. Во вторых, нам не нужны классы документов в нашем проекте — нам не нужна их сериализация и прочие возможности. Нам нужен легкий и элегантный каркас приложения. Вот этим и займемся.

&nbsp&nbspПрежде всего заметим, что добрые разработчики из Microsoft и тут оставили небольшой «след» архитектуры Документ/Облик. В проекте есть класс CChildView, понаследованный от класса CWnd. Это класс окна, создающегося в клиентской области окна — рамки и занимающего почти всю клиентскую область (за исключением области, занимаемой панелью инструментов).
Объект класса CChildView m_wndView является переменной-компонентой класса CMainFrame — класса главного окна рамки.

&nbsp&nbspТеперь избавимся от этого окна, заменив его сплиттером.

&nbsp1. Удалим строку объявления переменной m_wndView из декларации класса CMainFrame в header-файле MainFrm.h и добавим вместо нее переменную m_wndSplitter, объект класса CSplitterWnd.

&nbsp2. Удалим из функции CMainFrame::OnCreate создание окна m_wndView. То есть удалим строки :

&nbsp4. Добавим в класс CMainFrame еще две зашищенные (protected) переменные :

&nbsp&nbspэто пока будут окна — заглушки для того, чтобы их вставить в сплиттер и добиться правильного его поведения.

&nbsp5. Добавим при помощи инструмента ClassWizard функцию OnCreateClient в класс CMainFrame, в которой добавим следующий код для создания сплиттера и дочерних окон :

&nbsp&nbsp// Код создания списков, добавления в них колонок и установки расширенных
&nbsp&nbsp// стилей потом, конечно же, будет заменен на код инициализации компонентов
&nbsp&nbsp// файлового менеджера для отображения содержимого
&nbsp&nbsp// каталогов, которые мы напишем впоследствии.

&nbsp&nbspreturn CFrameWnd::OnCreateClient(lpcs, pContext);
&nbsp>

&nbspНу вот, мы видим радостную картину : окно-рамка, панель инструментов (в своем первозданном состоянии), сплиттер, разделитель которого «прилеплен» к одному краю окна.

&nbsp&nbspНе очень красиво. Не правда ли ?

&nbsp&nbspМожно переместить разделитель сплиттера как надо, но при изменении размеров главного окна-рамки разделитель сплиттера не будет перемещаться. То есть он (разделитель) имеет фиксированную позицию.
Печально. Ведь в Total Commander — е сплиттер сохраняет относительную позицию (процентное отношение ширины правого окна, находящегося в сплиттере к ширине левого окна неизменно). Но стандартный сплиттер MFC не поддерживает такой функциональности. Но на то проблемы и существуют, чтобы их решать.

&nbsp&nbspВ следующей статье я расскажу о том, как доработать сплиттер MFC, добавив ему полезную функциональность.

&nbsp&nbsp&nbsp&nbspА пока Все.

Автор статьи : Вахтуров Виктор.&nbsp&nbsp

Исходный код проекта, рассматриваемого в статье вы можете найти на сайте рассылки SoftMaker.fatal.ru на главной странице проекта.

&nbsp&nbspДабы заранее разрешить возможные недоразумения, прошу Вас помнить, что Вопросы публикуются в рассылке только один раз. Поэтому, если Вам не ответили в этой рассылке, или ваш вопрос не был опубликован, пришлите его еще раз. Не стоит отвечать на вопрос, который был задан в предыдущей рассылке (за исключением случая, когда он снова опубликован в этой).
Для того, чтобы задать свой вопрос, пришлите письмо по этой ссылке.
Для того, чтобы ответить на вопрос, надо кликнуть по ссылке «ответить», расположенной под текстом вопроса.
Обо всех ошибках, замеченных в данной рассылке, а также своих предложениях и пожеланиях пишите сюда.

&nbsp&nbspДля того, чтобы задать свой вопрос, кликните этой ссылке.
Вы можете задавать любые вопросы, касающиеся программирования на языке C и C++. Это могут быть вопросы касающиеся как конструкций языка, применения библиотек классов, шаблонов (таких как MFC или STL), использования компиляторов, так и самой философии программирования на C или C++. Здесь нет ограничений — спрашивайте и получайте ответы.

&nbsp&nbspК сожалению, вопросов сегодня нет.

&nbsp&nbspВ данной рассылке нет ответов, так как не было задано вопросов в предыдущей.
Задавайте свои вопросы, и Вы обязятельно получите ответ.