Здравствуйте, RealSQUALL, Вы писали:
RSQ>1 наконец созрел для настоящего проэкта
Вот только теперь рё-
RSQ> брышком встал вопрос: я пишу на С++, лучше писать с использо-
RSQ> ванием MFC или просто так, API-шками?
Для начала — уточним, что API — это application programming interface, то есть интерфейс прикладных программ "вообще".
На жаргоне этим словом чаще всего обозначают Windows API, или WinAPI.
Ну это я так, к букве прикопался.
Кстати говоря, VC обеспечивает, помимо WinAPI, ещё и POSIX (частично).
Настоящий проект нужно делать с использованием хорошего фреймворка — "магазина велосипедов"

, даже не магазина, а супермаркета и велотрека.
MFC, хотя и не самая лучшая библиотека, но в паре с VC — неплохой выбор. (Отчасти потому, что с другими фреймворками на VC работать труднее).
RSQ>2 насколько я понял, есть "локальные" классы и методы (MFC) и
RSQ> "глобальные" (API). Такой вопрос: а к каким из них относится
RSQ> Framework?
WinAPI — это набор не классов и методов, а просто функций. Да и другие API — часто тоже. Это позволяет писать прикладные программы на разных языках, в том числе низкого уровня, и не привязываться к объектной модели того или иного языка.
Помимо "базового", у Windows есть множество API построенных на OLE/COM/DCOM. Например, DirectX, Shell, Scripting.
Фреймворк — это надстройка над API, обеспечивающая среду, удобную для программиста. Например, MFC не только определяет классы для работы с окнами, объектами ядра и графики — но ещё и создаёт среду их существования (внутренние структуры данных), а также интегрируется в инструмент разработки — VisualStudio.
RSQ>3 судя по тому что писал Стивен Прата в книге "Язык программи-
RSQ> рования С++", неиспользуемые классы/функции просто не компи-
RSQ> лируются в окончательный продукт. Отсюда вывод: т.к. exe-шники
RSQ> из 240 Кб лихо ZIP'ятся в 125 Кб (MFC, когда я использую не
RSQ> больше 2-3 классов), то я упускаю какую-то опцию или что-то
RSQ> вроди этого, подскажите пожалуйста...
Куда деваются неиспользуемые классы и функции — это сильно зависит от того, как была собрана библиотека.
Если каждая экспортируемая функция, переменная, таблица виртуальных методов помещена в отдельный объектный файл — то линковщик при сборке программы оставит только то, что попрошено.
Если в одном объектном файле (полученном из компилируемого исходного файла) много экспортируемых функций — то достаточно использовать любую из них, чтобы в собранной программе оказались все.
Наконец, если библиотека собрана как DLL, то программа будет грузить её целиком; в файле программы будет лишь таблица импорта.
Исполняемые программы неплохо сжимаются, но не из-за MFC или чего-то другого. Результат компиляции ассемблерного текста (если, конечно, не приложить специальных усилий против архиватора) тоже сожмётся.
Конечно, чем больше сторонних библиотек использует программа, тем больше размер таблиц импорта и таблиц перемещений в файле .exe, что играет на руку архиватору.
... << RSDN@Home 1.1.2 stable >>