Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Первое приложение на WinAPI 
:(
    Опции темы
Earnest
Дата 7.9.2010, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата(ASMatic @  6.9.2010,  19:55 Найти цитируемый пост)
>>Хотелось бы узнать, а на чем пишут реальные программы ?
присоединяюсь!

Мой реальный проект написан на MFC. Т.е. оболочка, конечно. Знаю, знаю всю муть, которую гонят про MFC. И это по большей части правда. Но проекту (виндовой реинкарнации) уже ~15 лет, и тогда особого выбора не было. А сейчас поздно соскакивать - иначе пользователи новой версии рискуют не дождаться. Не устаю радоваться, что в свое время при выборе между Borland'ом и MS выбрала таки MS и его кривое, но очень прозрачное MFC. Ну и потом, окна-диалоги - 66 часть проекта, а алгоритмы обработки от библиотек не зависят, ибо нет готовых. А если бы приложение было сильно формо-зависимо, но я бы выбрала... не знаю, чтобы я выбрала, но скорее всего другую работу. Ну их в ... эти формы, тоска.
А что касается чистого WinAPI, то тебе должно быстро надоесть стока многа букв каждый раз писать, это тоже неинтересно. За что и ценю MFC, так за то что при всей своей кривости, он таки полный контроль дает - если надо. Рекомендовать сейчас, для новых проектов, конечно, не буду. Но я бы, возникни такая нужда, искала бы что-то вроде - тонкое-прозрачное, но с более современной архитектурой. Но с полным контролем, а не как борландовский ужас.

Добавлено через 8 минут и 51 секунду
Цитата(xvr @  7.9.2010,  11:59 Найти цитируемый пост)
И программисту придется в основном писать тонны однообразного и повторяющегося кода, вместо того, что бы сосредоточится на собственно логике приложения.
Обычно после попытки написать Офис на API наступает просветление 

Двумя руками подписываюсь. 
Автор тут еще насчет своих библиотек упоминал. Оно да, конечно, полезно. Но это примерно то же самое, что писать собственные контролы. Если интересно и хочешь этому посвятить жизнь - вперед и вверх. Но нужно помнить, что спроектировать повторно используемые - как контролы, так и оболочку - очень не просто. особенно второе. Так что если цель - таки какое-то приложение в конкретной области, прагматичнее смириться с некоторой кривизной чужой реализации. (А чужая реализация всегда кривая просто по определению  smile ). И выбирать по критерию - архитектура-прозрачность-контроль. При главном критерии "контроль", т.е. возможность при необходимости доработать все что надо напильником.


--------------------
...
PM   Вверх
Cheloveck
Дата 7.9.2010, 15:14 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 1
Всего: 32



Мне одному кажется, что ТС не спрашивал на чём ему писать?
Вот вам топик http://forum.vingrad.ru/forum/act-ST/f-69/...2/unread-1.html Переезжайте!


--------------------
user posted image
PM Jabber   Вверх
ASMatic
Дата 7.9.2010, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: 1
Всего: 1



Цитата(xvr @  7.9.2010,  08:59 Найти цитируемый пост)
реализация этого GUI на WinAPI способна эти несколько процентов раздуть до доброй половины

о графике я упомянул, тут не вопрос - жопа!)
Цитата(ASMatic @  6.9.2010,  16:55 Найти цитируемый пост)
VCL и тому подобные фичи считаю оправдаными только если ты разрабатываешь приложения с кучей СТАНДАРТНОЙ графики, т.к. на винапи сильно не удобно это все размещать и настраивать...


Цитата(xvr @  7.9.2010,  08:59 Найти цитируемый пост)
Обычно после попытки написать Офис на API наступает просветление

не пробовал, т.к. стараюсь писать только то где графики поменьше.... smile 

Цитата(xvr @  7.9.2010,  08:59 Найти цитируемый пост)
Еще раз извиняюсь перед ASMatic 

 smile 
принимаю.)

Цитата(Earnest @  7.9.2010,  09:01 Найти цитируемый пост)
прагматичнее смириться с некоторой кривизной чужой реализации.

в свои прожи вообще чужого не пускаю - было пару раз что потом приходилось разбираться почему при куче потоков у кого-то что то начинает падать))

Свои либы - да прекрасно, но и писать их для ГУИ - напряг, так что бы они были универсальны...Поэтому с ГУИ не связываюсь...ну разве что по минимуму....

Цитата(Cheloveck @  7.9.2010,  13:14 Найти цитируемый пост)
Мне одному кажется, что ТС не спрашивал на чём ему писать?

а ТС уже ответили давненько и он вообще пропал) - видимо помогло)

но всеже предлагаю закрывать тему дискусий по этому поводу, все высказались и новичкам теперь точно будет над чем поразмышлять smile 

PM MAIL   Вверх
xvr
Дата 7.9.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(ASMatic @  7.9.2010,  18:33 Найти цитируемый пост)

о графике я упомянул, тут не вопрос - жопа!)

Цитата(ASMatic @  7.9.2010,  18:33 Найти цитируемый пост)
Свои либы - да прекрасно, но и писать их для ГУИ - напряг, так что бы они были универсальны...Поэтому с ГУИ не связываюсь...ну разве что по минимуму....

В таком случае у нас полный консенсус - все мои высказывания относились ТОЛЬКО к GUI. Общесистемная часть в Win32 API спроектирована и реализована на удивление хорошо. Ее вполне можно применять напрямую, без каких либо библиотечных прослоек (за исключением случаев, когда библиотеки УЖЕ используются в программе, для GUI например, как та же Qt. Для единообразия)

PM MAIL   Вверх
semibug
Дата 11.9.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Выскажу мнение. Писать на WinApi гуй не такая уж большая проблема. Да, есть писанина, да, есть метание по MSDN, но если грамотно спланировать, то дальше можно пользоваться своей прослойкой. Поэтому не соглашусь, что большая программа с гуем из WinApi на 50 процентов состоит из WinApi функций. На следующий день после go to бог придумал sub routine. Как правило сообразив какойто контрол раз, потом пользуешь без ограничений.
В принципе можно пойти и дальше стандартных контролов, и написать полностью обработку самостоятельно, в этом плане мне очень сильно импонирует GuiChan, разобраться можно с пол оборота, и потом использовать стиль для своих поделок.
Очень хорошо выполнен Qt, кучу идей можно брать и от туда.
А в целом, как всегда, вопрос выбора обусловлен задачей (включая сроки, заказчика и тд и тп).
Если можно использовать готовое, и проект не для самообразования - вопрос выбора обычно не возникает.
P.S. В последние годы как ни странно стараюсь выполнять все приложения в консоли (по мере сил убеждая заказчика).

PM   Вверх
ИванМ
Дата 11.9.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: нет
Всего: 23



Цитата(semibug @  11.9.2010,  20:03 Найти цитируемый пост)
А в целом, как всегда, вопрос выбора обусловлен задачей (включая сроки, заказчика и тд и тп).
Если можно использовать готовое, и проект не для самообразования - вопрос выбора обычно не возникает.

Это единственная здравая мысль в вашем послании. Поддерживаю.

Цитата(xvr @  7.9.2010,  21:07 Найти цитируемый пост)
Общесистемная часть в Win32 API спроектирована и реализована на удивление хорошо. Ее вполне можно применять напрямую, без каких либо библиотечных прослоек

На мой взгляд, не очень удачное обобщение.

Это сообщение отредактировал(а) ИванМ - 11.9.2010, 23:33
PM MAIL   Вверх
xvr
Дата 12.9.2010, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(semibug @  11.9.2010,  20:03 Найти цитируемый пост)
На следующий день после go to бог придумал sub routine. Как правило сообразив какойто контрол раз, потом пользуешь без ограничений.
В принципе можно пойти и дальше стандартных контролов, и написать полностью обработку самостоятельно,
После чего и получается еще один фрейморк. Внимание, вопрос - нафига нужен ЕЩЕ ОДИН фреймворк, к тому же заточенный под задачу, когда есть куча готовых. Пока вижу один ответ - в готовых лень разбираться  smile 

Цитата(ИванМ @  11.9.2010,  22:51 Найти цитируемый пост)
На мой взгляд, не очень удачное обобщение.
В смысле? Какое именно обобщение?


PM MAIL   Вверх
semibug
Дата 12.9.2010, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Цитата(xvr @  12.9.2010,  09:20 Найти цитируемый пост)
После чего и получается еще один фрейморк. Внимание, вопрос - нафига нужен ЕЩЕ ОДИН фреймворк, к тому же заточенный под задачу

Предполагается, что стоит задача написать только с WinApi (почему, не знаю, может архитектор страдает тиранией). Хочу сказать, что это не такая чудовищная проблема, раскидал вызовы по своим классикам-врапперам, и юзай на здоровье.
Как уже писал, если есть возможность юзать готовое, можно не раздумывать (если разобраться с WinApi не есть сама задача).


PM   Вверх
ИванМ
Дата 12.9.2010, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: нет
Всего: 23



Цитата(semibug @  12.9.2010,  13:33 Найти цитируемый пост)
Хочу сказать, что это не такая чудовищная проблема, раскидал вызовы по своим классикам-врапперам, и юзай на здоровье.

Вы так уверенно говорите, потому что у вас есть готовая самописная GUI-библиотека или вы просто рассуждаете в теории?

Цитата(xvr @  12.9.2010,  09:20 Найти цитируемый пост)
В смысле? Какое именно обобщение?

Общесистемная часть очень широкое понятие. Что-то действительно удобно и просто реализовано, что-то не очень.
Далеко ходить не буду, приведу самый простой пример. Пользоваться оператором << для fstream удобнее, чем вызывать WriteFile.
PM MAIL   Вверх
xvr
Дата 12.9.2010, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(semibug @  12.9.2010,  13:33 Найти цитируемый пост)
Предполагается, что стоит задача написать только с WinApi
То, что предполагал/хотел ТС забыли уже экрана 2 назад, теперь обсуждается 'API или не API - вот в чем вопрос'  smile 

Цитата(ИванМ @  12.9.2010,  19:48 Найти цитируемый пост)
Общесистемная часть очень широкое понятие. Что-то действительно удобно и просто реализовано, что-то не очень.
Ну в общем и целом конечно понятие слишком широкое, но по удобству использования БОЛЬШАЯ часть того, что не GDI+Окна гораздо удобнее того, что есть GDI+Окна

Цитата(ИванМ @  12.9.2010,  19:48 Найти цитируемый пост)
Пользоваться оператором << для fstream удобнее, чем вызывать WriteFile.
Разумеется. Даже пользоваться FILE* и printf будет удобнее, чем WriteFile. На то они и интерфейсы уровня библиотеки исполнения (наиболее оригинально это представленно в *nix'ах - там интерфейсы системы и библиотеки исполнения явно разделены в документации, но нигде больше  smile )

Что же касается WriteFile, то когда требуется нечто, не охваченное fstream (например Overlapped IO), то приходится опускаться на уровень CreateFile/WriteFile/ReadFile, и это не является катастрофой  smile Они даже могут мирно сосуществовать в одной программе

PM MAIL   Вверх
Earnest
Дата 13.9.2010, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата(ИванМ @  12.9.2010,  20:48 Найти цитируемый пост)
Пользоваться оператором << для fstream удобнее, чем вызывать WriteFile. 

Это несравнимые вещи, даже если забыть о том, что << осуществляет текстовый вывод...
Насчет GUI, да, согласна, не очень неудобная вещь. В основном потому, что все эти долбанные хандлы не имеют семантики копирования + легкость попадания на утечку ресурсов + нехилые тормоза при выборе в контекст. Но это тоже можно улучшить с помощью совместно работающих оберток - над GDI-объектами и над CDC.


--------------------
...
PM   Вверх
semibug
Дата 13.9.2010, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Цитата(ИванМ @  12.9.2010,  19:48 Найти цитируемый пост)
Вы так уверенно говорите, потому что у вас есть готовая самописная GUI-библиотека или вы просто рассуждаете в теории?

Библиотека громко сказано. Приходилось писать интерфейсы WinApi only. Минимум необходимых переходничков для конкретной задачи, ничего более. Но вполне можно писать, и на это не уходило 50 процентов кода, как тут уже писали.
Опять таки повторюсь, мои измышления основаны на факте, что ничего кроме WinApi юзать нельзя.
Если есть выбор - пишу для командной строки smile


PM   Вверх
ИванМ
Дата 13.9.2010, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: нет
Всего: 23



Цитата(xvr @  12.9.2010,  22:59 Найти цитируемый пост)
Разумеется. Даже пользоваться FILE* и printf будет удобнее, чем WriteFile. На то они и интерфейсы уровня библиотеки исполнения (наиболее оригинально это представленно в *nix'ах - там интерфейсы системы и библиотеки исполнения явно разделены в документации, но нигде больше  smile )
Что же касается WriteFile, то когда требуется нечто, не охваченное fstream (например Overlapped IO), то приходится опускаться на уровень CreateFile/WriteFile/ReadFile, и это не является катастрофой  smile Они даже могут мирно сосуществовать в одной программе

Вот с этим я уже соглашусь. Это не так категорично, как в вашем сообщении до этого.

Цитата(semibug @  13.9.2010,  09:42 Найти цитируемый пост)
Библиотека громко сказано. Приходилось писать интерфейсы WinApi only. Минимум необходимых переходничков для конкретной задачи, ничего более. Но вполне можно писать, и на это не уходило 50 процентов кода, как тут уже писали.
Опять таки повторюсь, мои измышления основаны на факте, что ничего кроме WinApi юзать нельзя.

На уровне переходничков, возможно, это и так. Но, на сколько я понял тему, мы говорим о полноценном механизме, который можно использовать для решения насущных проблем.
PM MAIL   Вверх
priam220
Дата 16.9.2010, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



возможно ли запускать Апи функции удаленно. Т.е. запуская программу на одном компъютере ждать выполнения Апи на другом?
PM MAIL   Вверх
Dem_max
Дата 17.9.2010, 04:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



используй http://technet.microsoft.com/ru-ru/sysinte...s/bb897553.aspx
или вот исходники аналогичной команды 

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  RemCom_SRC_1.2.zip 41,28 Kb


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1156 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.