Как стать автором
Обновить

Комментарии 27

То, что надо!
Спасибо. Вы не могли бы добавить мне немножко кармы? Мне ее недостаточно чтобы переместить пост в тематический блог.
Оч жаль, что кармы добавить сил нет…
Тема нравится, и оч жаль, что уже поздно для меня — уже не прогаю. Но помню все эти мучения приведения изначального проекта к нужному состоянию.
Спасибо, порадовали.
Держите, пишите ещё :)
Пункты 3 и 6 вызывают недоумение.
3 — отключение Unicode.
Использование нестандартных строк несколько усложняет разработку, особенно для тех, кто не привык к этому. Большинство небольших проектов на C++ не нуждаются в Unicode.
6 — WinMain вместо _tWinMain
WinMain используется в качестве точки входа в Win32 приложениях не только MSVC, но и др. _tWinMain просто автоматически подставляет нужную версию WinMain в зависимости от того, какая версия проекта — Unicode или ANSI. Если при создания проекта вы выберете ANSI версию проекта — точка входа будет WinMain. Если же Unicode — _tWinMain.
3. Необходимость заключать строковые литералы, передаваемые в WinAPI, в _T() — это усложнение разработки? Из-за такого вот подхода FAR до сих пор не поддерживает Unicode, когда-то был небольшой проект, а сейчас разгрестись не могут.

6. Во что разворачивается _tWinMain я знаю. Непонятно только зачем его заменять, с main понятно, а чем мешает _tWinMain — непонятно :)
Именно поэтому я добавил эту опцию — необходимо поставить всего одну галочку при создании проекта :) В первой версии этого мода для VS2005 такой опции не было…
Современные проекты нуждаются в UNICODE хотя бы потому, что современное NT ядро юникодное изнутри. Все функции с суффиксом A конвертируют полученные строковые параметры в UNICODE и вызывают свои аналоги с префиксом W.
НеUnicode проекты — это же каменный век! Тоже мне «улучшение».
НЛО прилетело и опубликовало эту надпись здесь
Включить по умолчанию кириллицу было делом пары минут :)
На самом деле существует очень много готового C++ кода, который хотелось бы использовать, но который не рассчитан под Unicode. Приходится выбирать — переписывать то что есть или писать для ANSI…
НЛО прилетело и опубликовало эту надпись здесь
Для ХР потребуется установочный диск, чтобы в английской винде установить для неуникодных програм русский.
Напишите статью о создании собственных мастеров.
К сожалению, я сам обладаю ограниченной информацией об этом. Я поступаю так — ставлю задачу, какого эффекта хочу добиться, и после этого разбираюсь, как этого добиться.
В Visual Studio для всех мастеров используются специальные HTML + JScript. Поглядите файлы что я изменял — там в общем и целом все понятно.
Если у вас есть какие-то идеи по модификации мастера по созданию Win32 приложений — прошу писать здесь. Пока что есть идея сделать множество галочек, позволяющих быстро подключить наиболее используемые библиотеки (например, STL).
Эх… мечты мечты :) Было бы отлично сразу уметь: STL, SDL ,Boost, OpenCV, OpenCL, OpenGL, DirectX. Это все применительно к людям занятым с графикой.
Хотя все это труднореализуемо(не распространаять же все это в виде одного большого многогигабайтного архива с маленьким мастером который знает где все лежит :)).
вот юникод как раз и не стоило отключать.
Пожалуй, стоит сделать 2 варианта: где галочка Unicode в мастере по умолчанию включена, и где выключена :) Впрочем, этого можно добиться, добавив одну строчку в файл \VC\VCWizards\AppWiz\Generic\Application\html\1033\AppSettings.htm
Ищем функцию function InitDocument(document) и перед вызовом InitControls(); добавляем:
USE_UNICODE.checked = true;
Это все :) Теперь все проекты по умолчанию будут Unicode.
Собственно говоря, набор сеттингсов действительно неплох для маленьких программ. Но для больших проэктов (на которые и настроена студия по дефолту) лучше оставить всё как есть — и юникод, и Precompiled Headers и линковку. Это для больших проэктов не то что стандарты — единственно возможное решение.

А пропуск странички «Overview» да структура папок полезны будут в любом случае, да.
Совет, кому-то может пригодиться — «Как очень быстро создать новый проект VS»:

Создайте шаблонные проекты своих любимых типов, со своими любимыми настройками. Без кода, или с минимумом необходимого кода. Назовите их как-нибудь типа CodeNameType1, CodeNameType2 и т.п. Когда надо создать новый проект, просто копируйте папку с нужным шаблоном. И любыми утилитами заменяйте строчки CodeNameType1 на имя вашего нового проекта. Внутри файлов, и в именах файлов.
P. S.

К сожалению, я пока не нашёл утилитку, которая делала бы эти оба дела сразу. А самому написать — так руки и не дошли, да и почти не создаю сейчас новых проектов, так что для меня проблема уже неактуальна.

Кстати, это работало в старых VS (начинал с 6.0), в последних не проверял (работодатель не торопится обновлять лицензии). И кстати, по уму надо бы ещё GUID'ы заново генерить.

Вот кто бы сделал мастер новых проектов, чтобы в качестве параметра ему передавался готовый проект (солюшн), и все настройки с него считывались, и при этом менялось бы только имя проекта?
VS 6.0 имел такую функцию. Есть Visual Studio SDK там и ищите.
Но по данным проэктам чесно говоря не так уж много времени я трачу на создание нового проэкта. Переключение нужных галочек это от силы 1 минута, а ваше решение ломается например при выходе SP или FeaturePack которые могут расширить существующий визард.
Мастер создания Win32 приложений практически не отличается в VS2005 и VS2008. Если ставить этот мод на VS2005 — по идее все должно работать.
По крайней мере в самом мастере они изменили пару опций по умолчанию, основные изменения касались шаблона создаваемого проекта.
На стадии изучения (языка, среды, технологии) проекты типа *Example, *Sample, *Probe, *Research, *Experiment (или *Util, *Tool: минипроги для себя любимого — тоже хороший способ изучения) сыпятся как из рога изобилия. Поэтому даже затраты даже в несколько минут (одна — ну это как-то уж совсем мало, это если практически ничего не меняешь) раздражают. Особенно если они повторяются раз за разом с абсолютной точностью. Иногда забываешь, где находится редко изменяемая опция и что там надо выбрать, вспоминаешь заново, или ищешь заново, если в новой версии поменяли локацию этой опции — в общем, материшься себе под нос.

От 6.0 и по 8.0 (если не ошибаюсь) это работало со всеми SP. Тут ведь не важно, что поменяется в мастере, за основу ведь берётся существующий проект. А для старых проектов всегда поддерживается совместимость или конвертирование. Но, разумеется, шаблонные проекты надо обновлять время от времени. Хотя бы сохранять заново после конвертирования.

А за совет порыть VS SDK на эту темку — спасибо. Может быть однажды эта проблема вернётся в мою проф-жизнь, тогда припомню.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории