С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Rybis
0 / 0 / 0
Регистрация: 13.02.2014
Сообщений: 16
#1

MFC WinApi для создания интерфейса - C++

10.07.2014, 20:11. Просмотров 2319. Ответов 51
Метки нет (Все метки)

В общем я хочу научиться делать приложения простым языком форма с кнопочками и это приложение должно обращаться к винде залазить в файлы и тд. Слышал о функциях WinApi Как бы они решают мою проблему с обращением к винде а вот форму тоже в Api Делать? Да и в общем MFC Это упрощение winapi?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 20:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос MFC WinApi для создания интерфейса (C++):

Реализация графического интерфейса пользователя в приложениях WinAPI. Ошибка default - C++
Сама программа: // фывфвфыв.cpp: определяет точку входа для приложения. // #include "stdafx.h" #include <windows.h> #include...

Какие еще есть способы создания визуальных приложений кроме WinApi? - C++
Здравствуйте, я так понимаю под Windows оконные приложения создаются на WinAPI. Хотел спросить есть ли другие инструменты для создания окон...

Получение атрибутов файла (а именно дату создания файла) без WinApi - C++
Здравствуйте, есть задача "получить дату создания файла", как это реализовать без WinApi с использованием консольного приложения на...

Литература для графического интерфейса - C++
Здравствуйте, у меня есть вопрос. Вот объясните, например я изучаю С++, но там консольные приложения, а как потом писать оконные? Как можно...

Подскажите библиотеку для создание графического интерфейса - C++
Погуглил .. много разных библиотек нагуглил. Сам никогда не использовал ничего, кроме стандартных тулкитов MSVS ... Нужна библиотека .. для...

Чем отличаются структуры для наследования интерфейса от структур для наследования реализаций? - C++
Дорогие программисты, во первых, хочу поздравить вас с Наступающим новым Годом! Я к вам обращаюсь с маленькой просьбой. Я никак не могу...

51
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
11.07.2014, 03:40 #16
Цитата Сообщение от Psilon Посмотреть сообщение
несколько различная сложность написания
Один мой знакомый часто говорил: "язык неважен - программы пишутся на библиотеках".

Любители овальных кнопок пишут (или находят готовым) этот код один раз и используют "до конца жизни". И такое (библиотечное) использование для них ничем не отличается от вашего примера.

А вот результирующий (бинарный) код может оказаться и компактнее и быстрее. Что выбирать: Low level или RAD - зависит от целей. Где-то экономят байты и пишут на Asm, в другом месте признают только Fortran, а где-то и C# сойдет.

Раз все эти среды живы - значит востребованы. У каждой есть своя ниша.
1
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
11.07.2014, 04:05 #17
Цитата Сообщение от gazlan Посмотреть сообщение
У каждой есть своя ниша
Но у MFC не давно осталось своей ниши. Её заняли как минимум Qt и htmlayout
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
11.07.2014, 06:00 #18
Цитата Сообщение от Voivoid Посмотреть сообщение
Qt и htmlayout
Думаю, за все время (а для Win'32 просматриваю много), HTMLayout встретился раза два или три. Qt попадается. Засилье Delphi. Возможно, для других платформ ситуация иная.
0
uglyPinokkio
11.07.2014, 07:09
  #19

Не по теме:



Цитата Сообщение от gazlan Посмотреть сообщение
Многое, из того, чем пользуюсь (и выбрал, как лучшее в своем классе)
А можно аргументы за ExamDiff против KDiff3 ?

0
Убежденный
Ушел с форума
Эксперт С++
15708 / 7219 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
11.07.2014, 08:08 #20
По поводу MFC мне бы хотелось процитировать высказывание одного человека, с мнением
которого я почти полностью согласен.

SV.
Как много людей берется обскакать MFC, не понимая, в чем ее фишка. Да, как библиотека
контролов MFC — тоненькая обертка над Win API и не поддерживает ничего сверх того.
Языков разметки, утилизации трехмерного ускорителя и так далее. Как у инструмента
создания SDI- и MDI-приложений, у этой библиотеки нет конкуретнов, а если есть — я
хочу их знать! Просто очень много людей создает bells and whistles software, и очень мало —
software для созидания. Последнее, разумеется, почти (?) полностью состоит из SDI- и
MDI-приложений.

Разумеется, классы Doc/View не бог весть какая трудоемая задача, и их можно прикрутить
хоть к Qt, хоть к HTMLayout, но это надо делать (и потому нет стандарта де-факто и де-юре).
Между тем, к MFC существуют расширители. Наборы классов для создания визиоподобных
приложений, например. Сейчас все это подыхает, как и созидательный софт вообще, а
когда-то так цвело пышным цветом. Стингрей, Дундас и кто там еще. Не говоря про
внутренние библиотеки-деривативы, которые были вполне interchangeable. Можно было с
одного грамотно написанного проекта взять представление документа и встроить в любой
другой грамотно написанный проект за пару дней. Грамотно написанных проектов только
почти не было. Какой-нибудь неграмотный мудак с полным непониманием ООП и MVC
обычно брал View и втыкал в нее все данные, операции, сериализацию и т.д.

Кроме того, поддержка DI со стороны IDE тоже значила многое.

Классы контролов, OLE и прочего функционала добавлялись, чтоб программистам "креативного"
софта по два раза не вставать. Сейчас этот аспект MFC улучшен сторонними производителями:
BCG, CodeJock и сотнями энтузиастов с CodeProject'а, но не настолько, чтобы конкурировать с
Qt/HTMLayout и компанией. Последнее и устаревший язык библиотеки, конечно, губят ее и
почти уже погубили.

...

Я очень сильно извиняюсь, но это и есть bells and whistles. Свистелки-перделки. Например,
сетевая активность в виде графика. Обоснование для таких графиков может быть одно —
реальное время слежения. Но для реального времени нужен простейший график, который
программируется за час. Все графические навороты вокруг рисования графика (зуминги,
риски на осях, сопоставления нескольких графиков, наложение фонов) в реальном времени
не нужны — вы просто не успеете с ними управляться. Соответственно, все, что нужно для
работы с графиками со стороны сетевого экрана для НАСТОЯЩЕЙ аналитики — сохранение
логов в CSV/XML, откуда можно их загрузить в любой аналитический софт. Соответственно,
вы пишете или сетевой экран с экспортом, простейшей менюшкой с командами типа "Открыть
папку с логами" и простейшим графиком реального времени, или аналитический софт с
загрузкой/сохранением, но тогда вам НЕ НУЖНЫ контролы (aka компоненты), а нужно, в
первую очередь, поддержать документ с данными и его многочисленные представления:
табличное, графическое и пр.

Такой подход с нынешним юзером не работает. Он, ленивая скотина, хочет чувствовать себя
защищенным, но ни хрена не хочет анализировать и вообще работать с данными, хочет
чувствовать ситуацию под контролем, но не пытаясь разобраться в "контролируемом" предмете.
Для таких и нужны навороченные графики реального времени и вообще GUI к задачам,
которые традиционно были демонами.

Мой поинт в том, что вы рассматриваете исключительно свистелки и сравниваете библиотеки
для их создания, включая в список MFC, которая, вообще-то, предназначалась не для этого, а
для создания полезного софта, которому действительно нужен GUI. В дивном новом мире
айфонов она, бедолага, конечно, оказывается неконкурентоспособной.

Еще раз: возьмите десктопное приложение под большую винду (это ваше изначальное
ограничение), ценность GUI для которого неоспорима. То есть, не сетевой экран со свистом.
Что это будет? В доброй половине случаев — приложение с документом в центре. То есть,
приложение, для которого контролы/компоненты оказываются на сугубо вспомогательных
ролях, как и библиотеки, построенные вокруг компонентно-контрольных форм.
2
ssXXss
266 / 188 / 10
Регистрация: 15.01.2011
Сообщений: 681
11.07.2014, 08:27 #21
Убежденный, если кратко, то для каждой гайки нужен свой ключик ))
0
SatanaXIII
Супер-модератор
Эксперт С++
5643 / 2678 / 252
Регистрация: 01.11.2011
Сообщений: 6,574
Завершенные тесты: 1
11.07.2014, 08:44 #22
Цитата Сообщение от Psilon Посмотреть сообщение
Овальная кнопка на MFC
овальная кнопка на WPF
Знаете в чем шутка? Овальная - хорошо, а как на счет семиугольной несимметричной звезды на палке и под углом в тридцать градсов? На MFC это займет приблизительно столько же кода, что и овальная. А на WPF? Хорошо, если там задумались об овальности и сделали ее так легко реализуемой, но в данном случае это плохой пример. И плохой как раз из-за того, что в WPF это есть, а в MFC нет.
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
11.07.2014, 09:52 #23
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
аргументы за ExamDiff против KDiff3
ExamDiff удобен возможностью непосредственного редактирования обеих панелей (это полноценные редакторы) и легкостью перемещения произвольных (независимо от дельты) блоков кода между ними.

К слову, именно KDiff3 у меня довольно криво отображается (патамушта Qt).
1
Миниатюры
MFC WinApi для создания интерфейса  
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
11.07.2014, 10:05 #24
Цитата Сообщение от gazlan Посмотреть сообщение
ExamDiff удобен возможностью непосредственного редактирования обеих панелей (это полноценные редакторы) и легкостью перемещения произвольных (независимо от дельты) блоков кода между ними.
А, это да, это в WinMerge тоже нравилось, но KDiff3 лучше сливает. Не нашел в ExamDiff поддержки UTF-8, оно там есть?
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
11.07.2014, 10:38 #25
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Не нашел в ExamDiff поддержки UTF-8
В документации не видел, но по факту есть. По крайней мере, текстовые файлы на русском сравнивает корректно.
0
Миниатюры
MFC WinApi для создания интерфейса   MFC WinApi для создания интерфейса   MFC WinApi для создания интерфейса  

-=ЮрА=-
Заблокирован
Автор FAQ
11.07.2014, 11:01 #26
Цитата Сообщение от Psilon Посмотреть сообщение
gazlan, извиняюсь, что вмешиваюсь, но это не такое уж сложное приложение, опять же. Одна менюшка, десяток однотипных кнопочек и 2 richtextbox, которые из коробки поддерживают выделение и подсветку. Хотя может в MFC нету их, но контрол самый обычный.
- любой контрол в MFC имеет пропертю CustomDraw что позволяет отрисовать его по совему, более того имеется возможность создать Custom Control наделив его какими мы пожелаем свойствами и сделав его каким угодно.
Я искренне прошу людей ИМХО чьи знания в MFC на уровне достаточный минимум не делать экспертных оценок на уровне адвансд или профи.
0
Avazart
Эксперт С++
7262 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,172
Записей в блоге: 17
11.07.2014, 13:43 #27
Цитата Сообщение от gazlan Посмотреть сообщение
К слову, именно KDiff3 у меня довольно криво отображается (патамушта Qt).
Че не понятно что проблема с шрифтами, а с Qt ?

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- любой контрол в MFC имеет пропертю CustomDraw что позволяет отрисовать его по совему, более того имеется возможность создать Custom Control наделив его какими мы пожелаем свойствами и сделав его каким угодно.
Я искренне прошу людей ИМХО чьи знания в MFC на уровне достаточный минимум не делать экспертных оценок на уровне адвансд или профи.
Тоже самое можно сделать и в Qt и VСL.

Добавлено через 2 минуты
Цитата Сообщение от Psilon Посмотреть сообщение
От знакомых Qt-шников слышал, что там даже еще проще. Ну и рендер на видюхе как бонус.
В Qt к примеру нет родных компонентов для работы с графиками, как например в VCL, кстати gazlan в твоем примере родной контрол или самописный или сторонний ?
1
Psilon
Master of Orion
Эксперт .NET
5914 / 4811 / 634
Регистрация: 10.07.2011
Сообщений: 14,410
Записей в блоге: 5
Завершенные тесты: 4
11.07.2014, 13:53 #28
Такой подход с нынешним юзером не работает. Он, ленивая скотина, хочет чувствовать себя
защищенным, но ни хрена не хочет анализировать и вообще работать с данными, хочет
чувствовать ситуацию под контролем, но не пытаясь разобраться в "контролируемом" предмете.
Для таких и нужны навороченные графики реального времени и вообще GUI к задачам,
которые традиционно были демонами.

Мой поинт в том, что вы рассматриваете исключительно свистелки и сравниваете библиотеки
для их создания, включая в список MFC, которая, вообще-то, предназначалась не для этого, а
для создания полезного софта, которому действительно нужен GUI. В дивном новом мире
айфонов она, бедолага, конечно, оказывается неконкурентоспособной.

Еще раз: возьмите десктопное приложение под большую винду (это ваше изначальное
ограничение), ценность GUI для которого неоспорима. То есть, не сетевой экран со свистом.
Что это будет? В доброй половине случаев — приложение с документом в центре. То есть,
приложение, для которого контролы/компоненты оказываются на сугубо вспомогательных
ролях, как и библиотеки, построенные вокруг компонентно-контрольных форм.
позиция класс. "Если MFC что-то не умеет, а другие инструменты умеют, то это свистелки и перделки, которые не нужны. Если что-то умеет MFC, чего не умеют другие (как в примере с MDI) - то это отсутствия базового необходимейшего функционала, очередной признак, что MFC незаменим". Просто великолепно Я так что угодно могу доказать.

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Знаете в чем шутка? Овальная - хорошо, а как на счет семиугольной несимметричной звезды на палке и под углом в тридцать градсов? На MFC это займет приблизительно столько же кода, что и овальная. А на WPF? Хорошо, если там задумались об овальности и сделали ее так легко реализуемой, но в данном случае это плохой пример. И плохой как раз из-за того, что в WPF это есть, а в MFC нет.
так овальная тоже займет столько же места, то есть 5 строчек
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
                        <Path Data="M 0,25 C 30,25 30,5    45,2.5  L 265 2.5  C 280,2.5  280,25 310,25 
                                    M 0,25 C 30,25 30,47.5 45,47.5 L 265 47.5 C 280,47.5 280,25 310,25"
                              Fill="{TemplateBinding Background}"
                              Stretch="Fill"
                              Stroke="CornflowerBlue"
                              StrokeThickness="5">
                            <Path.BitmapEffect>
                                    <BevelBitmapEffect BevelWidth="5" />
                            </Path.BitmapEffect>
                        </Path>
эффект:
MFC WinApi для создания интерфейса


Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- любой контрол в MFC имеет пропертю CustomDraw что позволяет отрисовать его по совему, более того имеется возможность создать Custom Control наделив его какими мы пожелаем свойствами и сделав его каким угодно.
Я искренне прошу людей ИМХО чьи знания в MFC на уровне достаточный минимум не делать экспертных оценок на уровне адвансд или профи.
я делаю выводы на тему того, что вижу. Что любой чих сложнее стандартной прямоугольной кнопки вызывает сотни строк неочевидного кода. Единственный плюс, который тут указали на MFC, это то, что интерфейс является узкой прослойкой (это же и недостаток основной, кстати), поэтому все очень быстро работает. Очень рад. Только вот отрисовка интерфейса никогда не является узким местом, даже на шарпе можно сделать 70 000 fps отрисовки формы.
0
Psilon
Master of Orion
Эксперт .NET
5914 / 4811 / 634
Регистрация: 10.07.2011
Сообщений: 14,410
Записей в блоге: 5
Завершенные тесты: 4
11.07.2014, 13:57 #29
офк можно писать свои контролы, делать свою библиотечку, потом фреймворк, и потом переизобретать велосипед... Причем в случае майлешего изменения придется наследовать код и в нем вносить изменения, что весело скажется на последующей отладке.
0
SatanaXIII
Супер-модератор
Эксперт С++
5643 / 2678 / 252
Регистрация: 01.11.2011
Сообщений: 6,574
Завершенные тесты: 1
11.07.2014, 14:02 #30
Цитата Сообщение от Psilon Посмотреть сообщение
так овальная тоже займет столько же места, то есть 5 строчек
Давайте, уж наверняка что б, еще сводный пример кнопки в форме астролябии и я от вас отстану. Х))
0
11.07.2014, 14:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2014, 14:02
Привет! Вот еще темы с ответами:

Нужна литература по созданию красивого интерфейса для приложений - C++
1.Посоветуйте какие-то книги по визуализации в С++, я начинающий программист, хочу научиться делать классное оформление программ) типа там...

Какие нужны библиотеки для создания читов для онлайн игр? - C++
Здравствуйте, недавно возник вопрос, А как собственно говоря делают читы для онлайн игр? Какие для них нужны библиотеки, какие методы...

MFC для новичков (Visual Studio) - C++
Всем привет! Позаимствовал некий учебник &quot;MFC SCHOOL&quot; из локальных просторов нашей университетской сети. Да простит меня автор! Был...

Литература для создания элементарного языка управляющих сигналов и интерпретатора для него - C++
Доброго времени суток! Подскажите, с чего начать при создании? Нужно придумать элементарный язык для задания управляющих сигналов и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.