У меня вопрос, немного на свободную тему, просто интересно услышать мнения специалистов. Я раньше, когда еще не было управляемого кода и CLR-проектов — задавался вопросом — почему от Borland есть УДОБНЕЙШАЯ среда для разработки — C++ Builder (она аналогична Delphi, только язык Паскаль), а от Microsoft НИЧЕГО удобного не было. (недаром Delphi и C++ Builder стали тогда настолько знамениты). От Microsoft был тогда Visual C++ 6, и если делать обычные оконные Windows-приложения, то выбор был из 2-х типов проектов — либо Win32 Application, либо MFC Application. С типами проектов Win32 Application — неудобно работать, надо писать вручную оконную функцию, задавать ручками все параметры типа "wcex.hIcon = ..." и т.д. Там нельзя было в дизайнере бросать на форму кнопки, элементы и т.д. Значит, от Microsoft оставалось использовать только проеты типа MFC Application, но работать с ними намного менее удобно, чем с C++ Builder (почему, напишу ниже). Поэтому, я программировал исключительно на C++ Builder и был рад.
Но теперь мне нужно перевести свои приложения под 64-разрядную платформу. Это обязательно, т.к. 32-разрядное приложение не может адресовать 5 ГБ оперативной памяти, а именно столько сейчас нужно. Чтобы создать 64-разрядное приложение, нужен 64-разрядный компилятор, который появился в MS Visual Studio 2005, а от фирмы Borland он почему-то до сих пор так и не появился (я читал описания C++ Builder 2006, и даже 2007). Значит, переходить по-любому придется на эту майкрософтовскую среду.
Известно, что управляемый код работает медленнее, чем неуправляемый, т.к. там проводится куча всяких дополнительных проверок, обеспечивающих безопасность кода, работает сборка мусора и т.д. Если очень важно быстродействие программы, если работаем с WinAPI-функциями, то управляемый код, проекты типа CLR не подходят. У меня как раз такой случай. Что же тогда остается? Выбирать проект типа CLR, на C++ и "насильственно" делать его неуправляемым — как-то некрасиво, должны же быть стандартные средства. А из стандартных средств для такого моего случая Microsoft предоставила, как я сказал выше, только MFC-проекты, и несмотря на все неудобство, так ничего удобнее там и не сделали...
У меня просто слов нет!!! Может я чего не понимаю в ихней логике работы, т.к. с MFC-проектами не работал... Скажите хотя бы прав ли я в своем понимании... Когда в Delphi или в C++Builder-e создаешь окно — кидай туда что хочешь — и таймеры, и меню и тулбар и кнопки... У MFC — разделили на типы — для диалоговых окон почему-то нельзя создать меню, записывать в файлы, мало компонентов (даже таймера нет). Зато можно кидать кнопки. А если создать приложение типа Document (Single или Multiple) — есть меню, и т.д., но нельзя кидать кнопки!
Зачем нужно это идиотское разделение? А если я хочу создать окно со всем — и с кнопками и с меню и с таймерами и т.д. ?? Да и я много приложений встречал, где и кнопки есть на форме, и меню и много чего другого... Возможно, и в MFC- проектах можно это все подключить, если помучаться но зачем? Я хочу просто с палитры компонентов накидать все, что нужно и работать со своим функционалом, а не париться, как подключить то, что не предусмотрено для такого типа приложения.
Неужели выход один — если хочу юзать удобный UI , и нужен именно такой тип приложения как у меня, то использовать тип проекта CLR (там действительно удобный UI для разработчика) для C++ WinForms -- и делать весь код там неуправляемым?