Кнопка

Zajchik
Кнопка. Технологическое эссе в 110 частях.

001. Хэлп

Дима сидел за компьютером и размышлял: «Как бы сделать так, чтобы программа не отображала собственной кнопки на таскбаре?  Да чтобы при этом окно программы оставалось видимым? Если бы не это – и рассуждать бы не о чем: скрываешь окно - и кнопка тоже скрывается. А так…»
Перед ним на экране компьютера враждебно светилась многочисленными окнами среда разработки. Дима отхлебнул чаю и с мрачной решимостью ткнул мышкой в хэлп.
«В каком же разделе это искать?... Посмотрю сперва в стилях.» - он отстучал в окошке поиска «WS_EX…» и по ссылке перешёл в раздел “extended window styles”.
«Так, ага… вы-эс-екс-акссептфайлз…. файлы сбрасывать… не то… вы-эс-екс-райт, лефт… нет, тоже не то… тут, похоже, нету. Посмотрю в обычных стилях. Вы-эс-бордер, вы-эс-капшин… вы-эс-вскролл… тоже нету. Наверное не через стили делается. А через что?...»
Дима сжевал сушку, запил чаем и задумался, по каким словам найти нужный раздел хэлпа. Он открыл аську и увидел в онлайне Карлсона. «Спрошу у Карлсона!» - решил Дима.


010. Карлсон

- Привет. Не знаешь, как в программе сделать, чтобы она убрала свою кнопку с таскбара?
- Не, не знаю. – ответил Карлсон.
- Ну вот… - сказал Дима, и пририсовал грустный смайлик.
- Я вообще глупый. – сказал Карлсон. – А зачем?
- Неее, ты – мудрый, всезнающий Карлсон, - недобро пошутил Дима. – Если уж ты не знаешь… - Он пририсовал весёлый смайлик, отправил сообщение и начал следующее:
- А хочу, чтобы только иконка в трэе маячила, а на таскбаре ничего не было. А то места много занимает, и напрасно, на таскбаре-то…
На оба сообщения пришло по ответу:
- Нет, я точно глупый. Я вообще не умею программировать, - гласило первое.
- А бывают специальные проги, которые любую другую прогу так сворачивают, - сообщало второе.
- Да проги-то ладно, фиг с ними, с прогами. – ответил Дима. – Я сам хочу такое сделать. Одна идея есть, правда, но уж очень извратной она кажется…
- И какая идея?
Дима отхлебнул еще чая и забегал пальцами по клавишам:
- А сделать большое окно, и его скрыть на фиг. А те окна, которые надо чтобы были видимыми, создать как дочерние. А икону в трэй положить. Если окно невидимо, то от него на таскбаре кнопка не появляется. Только вот вопрос, будут ли при этом видны дочерние окна…
- Ужас! – сказал Карлсон.
- То-то и оно. – сказал Дима. – Можно бы попробовать это сделать, да очень много всего переделывать. Думаю, гораздо проще всё должно бы быть. Такие вот дела…
Он закрыл окно с сообщениями и свернул аську.


011. Яндекс

Дима запустил Интернет Эксплорер и пошел на Яндекс. В окне поиска ввёл «программирование» и нажал «Найти». Игнорируя выданные на экран результаты, поставил галку «Искать в найденном», набрал «таскбар» и снова нажал «Найти».
«Так, - подумал он, разглядывая результаты поиска. – FAQ – как скрыть таскбар… делфи – нет, не то… …без кнопки в таскбаре, форумы по программированию, множество форумов по.... ну-ка, ну-ка… «Как на MFC написать приложение, не создающее кнопки в таскбаре?» Вот оно!» - мысленно вскричал Дима, вонзая курсор в ссылку.


100. Форум

На форуме некто Garik писал: «Как на MFC написать приложение, не создающее кнопки в таскбаре? Вернее, правильнее будет спросить: как убрать кнопку с таскбара?»
На что некто DANik отвечал: «Значит так. Берём метод PreCreateWindow в классе твоего окна и указываем там флаг WS_EX_TOOLWINDOW. У меня это выглядело так…»
Далее шёл фрагмент кода на сиплюсплюсе.
«Запускаем и смотрим в таскбар. Нету? Лепота!»


101. Победа

Дима запустил компилятор. Метода PreCreateWindow у него в программе не было,  поэтому он просто добавил флаг WS_EX_TOOLWINDOW в функцию Create в конструкторе главного окна. Собрав программу, он запустил её: кнопки в таскбаре и правда не было. Он снова залез в справку по расширенным стилям. Вожделенный флаг был указан там четвертым снизу и подробно описан. Было указано и то, что при его применении исчезает кнопка с таскбара. «Блин, как же это я проглядел!...» - подумал Дима, впрочем, не особо расстраиваясь.


110. Эпилог

- Нашёл-таки, как кнопку с таскбара убирать, – сказал Дима Карлсону. – Оказалось до смешного просто, как я и думал.
- А как?
- А там всего-то в расширенном стиле окна ставишь WS_EX_TOOLWINDOW, и усё.
- Круто, – ответил Карлсон.
- Вот типа того, - написал Дима и пририсовал смайлик.