| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > C++ -ужасные типы, непонятные... |
| Автор: jxr 21.5.2006, 23:21 |
| чистий С++ !!! Но - WinAPI все портить. было бы хорошо - создали особый API(понятый-стуруктурный). может есть? как в Java и в .NET - но только не меняя идею С++. если что то не так... плиз, я не занимаюсь профессионално С++. |
| Автор: chipset 21.5.2006, 23:30 |
| А в чём вопрос? Win32Api создавался не для С++ и даже не для Си а для процедурных языков (и даже Basic). |
| Автор: jxr 21.5.2006, 23:47 |
| я и об этом говорию... не было бы плохо(супер!)... ...создать API для С++. API - понятый-стуруктурный, типа Java и\или .NET вообще есть такие подходы? или чего то я перепутаю?! помогите разобраться, плиз. PS. В Win32Api заниматься программированием очень сложно. |
| Автор: DeadSoul 22.5.2006, 00:05 |
| HINSTANCE - void* LPSTR - это Си-строка(Может состоять тз Unicode символов!) LPVOID - void* STARTUPINFO - см. документацию |
| Автор: jxr 22.5.2006, 00:12 |
| я не спрашиваю... что эти типы означает! почему не void* - а HINSTANCE. void* - проще писать и понять. |
| Автор: DeadSoul 22.5.2006, 00:59 |
| jxr, потому, что никто тебе не гарантирует, что при выходе новой винды этот тип останется void* |
| Автор: maxim1000 22.5.2006, 01:03 | ||||
может, писать и понять и проще но проще ли понять правильно? не только HINSTANCE является void* также и HBITMAP, например и совсем неплохо, когда тип (в смысле языка) несёт информацию об объекте (то же ООП можно привести в пример) кроме того, WinAPI совсем необязательно использовать есть куча библиотек (VCL, MFC, ...), позволяющих строить интерфейсы при их использовании можно (за исключением специфических ситуаций) вообще отказаться от функций WinAPI - они его "оборачивают" своими функциями и классами ну, это довольно-таки субъективно всё зависит от задач если нужно что-нибудь сложное, для чего есть компонент в C++Builder'е (например), то, конечно же, проще использовать его, а не чистый WinAPI а если мне надо вывести окошко с сообщением, то
не намного проще (если вообще проще), чем
|
| Автор: MAKCim 22.5.2006, 07:09 |
| реализации меняются, а название типа остается имхо, так правильно, да и дело привычки |
| Автор: jxr 22.5.2006, 20:33 | ||
сколько таких библиотек? (VCL, MFC, ...) и для чего каждый... у меня Dev-C++ компилятор. VCL библиотека бывает вместе с компиляторам или...?(Dev-C++) VCL - если можно книга-справочник...? спосибо. |
| Автор: GremlinProg 22.5.2006, 21:46 |
| Сейчас много оболочек живет типа VCL, MFC, QT, WTL... , но в том то и дело, что они - просто оболочки, да и к тому же нестабильные: почти каждый год они модифицируются и приходится вникать в эти изменения, запоминать переход от одной версии - к другой, а API - это то, вокруг чего все ходят, всем она не не нравится, всем она неудобна, но ведь ни одна оболочка не решит задачи, с которой не справится API. Это надо всегда помнить. К тому же, API, а по сути, ядро, меняется очень и очень мало. Даже если какой-нибудь интерфейс обновился, то API всегда его держит в следующих версиях для того, чтобы не было проблем с совместимостью. Вот даже сегодня существует полный набор функций, работающих с 16-ти битными версиями программ. А кто в последний раз к примеру видел грандиозную надпись на мониторе Windows 95? Но все равно выбор остается за разработчиком, поэтому везде найдутся любители и MFC и WTL и много чего еще. И даже они не считают, что знание API им не нужно. |
| Автор: jxr 22.5.2006, 21:50 |
| VCL - если можно книга-справочник...? для каждого компилятора особый VCL? VCL - производител = производител компилятора? |
| Автор: Earnest 23.5.2006, 06:45 |
| VCL - это от Борланда и, соответственно, для него. Не знаю, совместима ли с другими компиляторами. MFC и WTL от MS для MSVC, но кажется MFC поддерживается и некоторыми другими. Сначала определись с компилятором, а потом уже смотри, какие библиотеки для него есть. Если идти от API, то лучше смотри в сторону MFC, а не VCL. Первая "тоньше", меньше и понятнее, хотя вторая, конечно, богаче. Кстати, GremlinProg, не соглашусь с тобой насчет нестабильности, по крайней мере, MFC: за почти 10 лет было всего 2 существенных изменения: при выходе MFC 4 и при выходе VC2003. Да и то, оба раза переход не представлял проблем. Насчет API - согласна. |
| Автор: GremlinProg 23.5.2006, 10:44 |
| Да, действительно, забыл сказать про MFC. Это пожалуй единственное исключение из правил. За счет того, что MFC была одной из самых первых, её стабильность поражает. Но, к сожалению, поражает она не только стабильностью, но и объёмом информации, в связи с чем MFC уже превратилась в некоторое подобие API, со своими интерфейсами и библиотеками, которые необходимо устанавливать для любого, хоть самого незначительного приложения MFC. Вывод сам напрашивается, лично для меня такой : "Зачем мне 2 апи?". Суть оболочки в том, что она невесома. MFC отню дь не невесома, поэтому к оболочкам я её уже давно не отношу. |
| Автор: Earnest 23.5.2006, 16:50 |
| Верно, MFC большая дура. Она ведь не только оборачивает API, а еще и предлагает готовый фрейворк для работы с документами в SDI и MDI стилях, и не самый плохой. А это куча кода, который все равно придется писать для соответствующих приложений. MFC, конечно, еще и OLE-хвосты, и прочую муру по старой памяти тянет, увы... но часть можно отключить макросимволами. Если документ-вью фреймворк не нужен, тогда можно рассмотреть WTL - это сплошные шаблоны, куда уж тоньше. Конечно, насчет стабильности говорить пока рано, ей без году неделя. |
| Автор: GremlinProg 23.5.2006, 22:17 |
| DeadSoul, давай завтра, ты во многом не прав, ис честно ) |
| Автор: Earnest 24.5.2006, 09:40 | ||||||
Все равно ведь не подеремся
По моим меркам - достаточно новая (по сравнению с MFC). Может и забила, не знаю. На MFC, конечно, так просто не забьешь, слишком много кода.
Зато производительность выигрывает. И дизайн. И вообще, я люблю шаблоны. А чтобы быстрее компилировалось, аккуратнее нужно быть со связями. А то понавешают хедеров "на всякий случай" на полстраницы... По сравнению с "настоящим" TMP, это увеличение времени - просто цветочки. А TMP я использую, и да, платить временем компиляции приходится, увы. Но это как наркотик: однажды войдя во вкус, уже не откажешься. Я просто компьютер апгрейжу. Или апгрейдю. Ну и по-аккуратнее с зависимостями приходится быть - это даже хорошо. Наверное, зато идея красивая. Я, правда, только читала и смотрела код, сама не использую. Но красиво. И опять же, если речь идет о выборе чего-то близкого API - это оно самое. Добавлено @ 09:43
Надеюсь, ты уже в порядке |
| Автор: DeadSoul 24.5.2006, 09:58 | ||||
Знаю
Я пишу за деньги, а не ради удовольствия |
| Автор: Earnest 24.5.2006, 10:04 |
Конечно, на чем писать - определяет работодатель. Но иногда везет, и как писать, во многом решаешь сам... Нельзя использовать WTL - можно использовать идеи, подходы, ... Если бы программирование было только вопросом зарабатывания денег, не было бы, наверное, этого форума. Ил не таким бы он был. Все-таки это еще и любовь... Побьют нас сейчас модераторы за флейм. |
| Автор: GremlinProg 24.5.2006, 10:09 | ||
Все пучком ) ...даже спорить не пришлось, все сама и написала ) На счет скорости компиляции шаблонов: есть некоторое подобие шаблонам в языке описания аппаратуры VHDL, так там рекурсия на этапе компиляции может "сожрать" до двух гигов оперативы, и это не предел, а полная компиляция проекта, нагроможденного такого рода шаблонами может занимать несколько часов, и это опять же не предел (когда я строил FPU на кристалле, моего гига оперативы не хватило, пришлось отказаться от красивого, шаблонного вида функций). Я это к тому, что майкрософт все сделала очень даже быстро и грамотно, а скорость компиляции - это только цветочки, о ягодках я уже сказал. |
| Автор: jxr 26.5.2006, 22:18 | ||
компилятор - должен быть популярен, но только не от Майкрософта. у меня Dev-C++ компилятор. незнай VCL совместима ли ? у borland компилятора нет IDE?! есть? VCL - откуда скачать? borland.com?! |
| Автор: DeadSoul 26.5.2006, 22:44 |
Почему такие критерии? |
| Автор: jxr 26.5.2006, 22:57 | ||
| это неважно... главное...
|
| Автор: jxr 27.5.2006, 14:55 |
| Вот, друзья. Я занимаюсь Java. Мне хочется писать быстрый код тоже. для этого есть только (самый лучший) С++. Но когда я смотрию стартовый-генерированный код в IDE, мне становиться очень плохо в спецификациях языка пишут что С++ программа начинается с точки-функции int main(int argc, char *argv[]). но windows приложение... я вижу акрокодабра И я спрашиваю... 1. Могу ли писать Windows-программы в С++ по определению - точка вызова int main(int argc, char *argv[])? ну как в Java... создать объекты классов и так далее... ну освобождаться от Win32API. 2. если да, что должен делать? какой комплятор и IDE выбирать? какую API-библиотеку(VCL) использоват? Помогите мне определиться. PS. Мне кажеться что научиться быстро писать в Win32API(С++) труднее - чем в Assemler. |
| Автор: Любитель 28.5.2006, 00:31 | ||
Используй Qt. Всё-таки с точки зрения хорошего ООП по-моему - лучшее решение. И точка входа - твоя любимая
VCL - это конкретная библа от борланда, работает только с борландом. Компилер и IDE - любые, лиж бы тебе нравились, к стандарту поближе были и кутеха поддерживала. Лично мне нравятся: Из компилеров: 1. DigitalMars C++ (DigitalMars.com) - FreeWare 2. VC++ Из IDE 1. (о! не судите меня) VS 2005, с ней работает VC++ (как ни странно 2. Code::Blocks - ну типа фриварная. |
| Автор: jxr 28.5.2006, 01:34 |
| спосибо. у меня Dev-C++ IDE, комплятор него (GNU) gcc,... Qt - это многоплатформенный продукт. нашел 2-х. какой выбрать? qt-win-opensource-src-4.1.3.zip qt-win-opensource-4.1.3-mingw.exe |
| Автор: rsm 28.5.2006, 08:06 |
qt-win-opensource-src-4.1.3.zip - чистые исходники, которые еще нужно самостоятельно компилить; qt-win-opensource-4.1.3-mingw.exe - уже частично скомпилированные (в статические либы) исходники, заточенные под MinGW; |
| Автор: Любитель 28.5.2006, 12:42 |
| Если у тебя уже есть компилер, качай одни исходники (первое). ЗЫ. глянь в ПМ |
| Автор: jxr 29.5.2006, 13:41 |
| спосибо. скачаль qt-win-opensource-src-4.1.3.zip не могу установит(комплировать). поможете? утилит - configure.exe что такое Package?(в С++) //Dev-C++ - там куча компляторов что ли... ...gcc, g++, c++, mingw32-gcc(defualt), mingw32-g++, mingw32-c++.exe |