Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

WinAPI на Builder'e

558
20 февраля 2003 года
_ReZzZ_
14 / / 20.08.2000
Как на Builder'е написать прогу на чистом WinAPI не используя никаких Builder'овских библиотек (но используя станартные Виндовские)?
362
21 февраля 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by _ReZzZ_
Как на Builder'е написать прогу на чистом WinAPI не используя никаких Builder'овских библиотек (но используя станартные Виндовские)?



File -> New... -> Other... -> ConsoleWizard
Галочки Use VCL, Use CLX (для BCB6), Concole Application не ставишь

Получаешь WinMain и делаешь с ним что хочет

558
22 февраля 2003 года
_ReZzZ_
14 / / 20.08.2000
Цитата:
Originally posted by _kolyan


File -> New... -> Other... -> ConsoleWizard
Галочки Use VCL, Use CLX (для BCB6), Concole Application не ставишь

Получаешь WinMain и делаешь с ним что хочет



Всё равно прога юзает Builder'овский CC3250MT.DLL
Я пробовал отключать Dynamic RTL и Build With Runtime Packages, но тогда раздувается ехе-шник, как же писать на ЧИСТОМ WinApi???

2.0K
23 февраля 2003 года
segev
67 / / 19.01.2003
_ReZzZ_
CC3250MT.DLL - это стандартная библиотека C++ для многопоточных приложений, пока ты пишешь на C++, от нее ты никак не избавишся.:)
Отключение Dynamic RTL приводит к включению ее в код exe-шника. Раздуваться сильно он от этого не должен.
Включение/Отключение Build With Runtime Packages не должно приводить к изменению размеров ехе-файла (в данном случае). Если есть подозрения, что используется что-то "лишнее", хорошо использовать утилиту Dependency Walker из MS VC. Если консольная программа написана на чистом API в списке зависимостей должен быть только Kernel32.dll (плюс CC3250.dll при dynamic RTL).
3
24 февраля 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by segev
_ReZzZ_
CC3250MT.DLL - это стандартная библиотека C++ для многопоточных приложений, пока ты пишешь на C++, от нее ты никак не избавишся.:)



Что значит "стандартная библиотека"?
Я пишу на С++ (MS VC), ничего о таком стандарте не слышал :о)

Цитата:
Originally posted by segev
_ReZzZ_
Если консольная программа написана на чистом API в списке зависимостей должен быть только Kernel32.dll (плюс CC3250.dll при dynamic RTL).



Это неверно, т.к. кроме kernel32.dll есть еще gdi32.dll и user32.dll

362
25 февраля 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by segev
_ReZzZ_
CC3250MT.DLL - это стандартная библиотека C++ для многопоточных приложений, пока ты пишешь на C++, от нее ты никак не избавишся.:)
Отключение Dynamic RTL приводит к включению ее в код exe-шника. Раздуваться сильно он от этого не должен.
Включение/Отключение Build With Runtime Packages не должно приводить к изменению размеров ехе-файла (в данном случае). Если есть подозрения, что используется что-то "лишнее", хорошо использовать утилиту Dependency Walker из MS VC. Если консольная программа написана на чистом API в списке зависимостей должен быть только Kernel32.dll (плюс CC3250.dll при dynamic RTL).



Действительно, не замечал, что при компилляции в программу этой библиотеки (CC3250.dll) сильно раздувается код. Если нехочется видеть это имя в свой программе можно взять BC++5 или тот же MS VC (там скорее всего она по другому называется :-)) а если совсем чистый код то Borland TASM :-) Для примера я сравнивал программки создающие только окно и больше ничего - на BCB и BC++ весит примерно одинаково (~50к или 90, сейчас уже не помню) не думаю что это много, и не думаю что на MS VC получитс меньше, а на TASM - 8к, но вряд-ли стоит возиться, уж больно много мороки.

3
25 февраля 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by _kolyan


Действительно, не замечал, что при компилляции в программу этой библиотеки (CC3250.dll) сильно раздувается код. Если нехочется видеть это имя в свой программе можно взять BC++5 или тот же MS VC (там скорее всего она по другому называется :-)) а если совсем чистый код то Borland TASM :-) Для примера я сравнивал программки создающие только окно и больше ничего - на BCB и BC++ весит примерно одинаково (~50к или 90, сейчас уже не помню) не думаю что это много, и не думаю что на MS VC получитс меньше, а на TASM - 8к, но вряд-ли стоит возиться, уж больно много мороки.



1. В VC нет никаких CC3250.dll или т.п.
2. Программа, создающая только окно, на С++ должна "весить" не более 1кБ.

362
25 февраля 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by Green


1. В VC нет никаких CC3250.dll или т.п.
2. Программа, создающая только окно, на С++ должна "весить" не более 1кБ.



1. Ну нет, так нет
2. А "должна" это она кому. Я говорю о том что я делал и сам видел. И если ты знаешь как написать код более компактный чем ассемблерный - то поделись, это будет полезная информация
3. А сколько весит программа только создающая окно (естественно говоря окно, и мею в виду также оконную процедуру) на VC без MFC и т.п.? неужели 1к ;-) NB я спросил не сколько она "должна весить" а сколько реально весит.

3
25 февраля 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by _kolyan

1. Ну нет, так нет
2. А "должна" это она кому. Я говорю о том что я делал и сам видел. И если ты знаешь как написать код более компактный чем ассемблерный - то поделись, это будет полезная информация
3. А сколько весит программа только создающая окно (естественно говоря окно, и мею в виду также оконную процедуру) на VC без MFC и т.п.? неужели 1к ;-) NB я спросил не сколько она "должна
весить" а сколько реально весит.



Подробно об этом уже сказанно, плагиатом заниматься не буду:
http://uinc.ru/articles/28/index.shtml

А про MFC и VCL могу сказать одно: они своё отжили. Будущее (пусть и недалекое) за WTL, что сам юзаю, то и другим советую.

362
25 февраля 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by Green


Подробно об этом уже сказанно, плагиатом заниматься не буду:
http://uinc.ru/articles/28/index.shtml

А про MFC и VCL могу сказать одно: они своё отжили. Будущее (пусть и недалекое) за WTL, что сам юзаю, то и другим советую.



Ну ладно, посмотрел ссылку. Интересно, надо будет попробовать.
А WTL это что такое? и где можно почитать

3
25 февраля 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by _kolyan


Ну ладно, посмотрел ссылку. Интересно, надо будет попробовать.
А WTL это что такое? и где можно почитать



Порусски можно почитать на RSDN (http://rsdn.ru/):
Статьи -> WTL

Нужные контролы на WTL:
http://home.worldonline.dk/viksoe/all_wtl.htm

Также инфу можно найти на codeguru.com, codeproject.com, ну и на MS.

2.0K
26 февраля 2003 года
segev
67 / / 19.01.2003
Green
Цитата:

Это неверно, т.к. кроме kernel32.dll есть еще gdi32.dll и user32.dll


А еще есть advapi.dll, ole32.dll ....:)
Kernel32.dll - Это мининум, что ДОЛЖНА использовать Win32-программа, все остальное она может использовать по желанию.

Цитата:

Я пишу на С++ (MS VC), ничего о таком стандарте не слышал :о)



Плохо. Стандарт C++ кроме всего прочего включает в себя классы string, iostream, стандартные исключения типа exception, bad_alloc и пр. именно этот код и содержиться в cc3250.dll
В VC аналогичную роль играют msvcp60.dll и msvcrt.dll. Правда они подключаются, только когда в опциях генерации кода указано Multithread DLL. В остальных случаях код встраивается в exe-шник.
В принципе если использовать только голый API и чистый С, эти библиотеки не должны использоваться.

3
26 февраля 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by segev
Green
А еще есть advapi.dll, ole32.dll ....:)
Kernel32.dll - Это мининум, что ДОЛЖНА использовать Win32-программа, все остальное она может использовать по желанию.



Смотря что считать "win32-программой"
kernel32.dll, gdi32.dll, user32.dll - три кита Win32API.

Цитата:
Originally posted by segev
Green
Плохо. Стандарт C++ кроме всего прочего включает в себя классы string, iostream, стандартные исключения типа exception, bad_alloc и пр. именно этот код и содержиться в cc3250.dll
В VC аналогичную роль играют msvcp60.dll и msvcrt.dll. Правда они подключаются, только когда в опциях генерации кода указано Multithread DLL. В остальных случаях код встраивается в exe-шник.
В принципе если использовать только голый API и чистый С, эти библиотеки не должны использоваться.



Это тоже не совсем так. Перечисленные DLL имеют значение лишь при динамической линковке многопотоковых приложений, при статической же линковке они не требуются. И не "чистый API", не "чистый С" здесь ни при чем.

Кстати, что значит "чистый API" и "чистый С"?
Под API, надеюсь, подразумевается Win32API?
Кроме того разговор изначально шел в контексте С++, при чем тут С ?

Ну, это я уже придираюсь... :о)

2.0K
27 февраля 2003 года
segev
67 / / 19.01.2003
Green
Цитата:

Смотря что считать "win32-программой"
kernel32.dll, gdi32.dll, user32.dll - три кита Win32API.


Win32-программой считается программа, использующая функции API Win32. Что же еще !??
Киты они конечно киты, но я писал о МИНИМУМЕ.

В сообщении о "голом API и чистом C" я пытался сказать, что если не использовать всякие штучки из C++ вроде new, iostream, string, то линковщик вообще не должен использовать библиотеку C++, из-за которой собственно весь этот сыр-бор :).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог