Нужна помощь в понимании окон C ++ для парня из Java

0

Дело в том, что я изучаю, как разрабатывать приложения Win32 в C++. Я использую Visual Studio и windows.h, и у меня плохое время. Я прихожу из Java и Android, где вы создаете класс, например MainWindow или OptionsWindow, а затем записываете внутри поведения и создаете его, когда захотите.

Но теперь я в C++, и я потерян. Все примеры, которые я вижу с помощью библиотеки windows.h, являются кодами, где Main является WinMain внутри окна. Итак, вот мой вопрос: есть ли способ писать разные классы для разных окон и создавать их, когда вам это нужно? что-то вроде

 OptionWindow ow = new OptionWindow

Или я должен написать весь код каждого окна, который мне понадобится внутри WinMain, а затем сделать его видимым?

Помощь Очень ценится. Благодарю.

  • 1
    почему вы не начинаете с wpf или winforms?
  • 0
    Здравствуй! Спасибо за ответы. Я открыт для любых предложений. Я не искал эти варианты. Плюсы и минусы по сравнению с windows.h? Я использую его, потому что это стандартный подход Visual Studio.
Показать ещё 2 комментария
Теги:
winapi
visual-studio-2013

2 ответа

2
Лучший ответ

Если вы намерены использовать только C++, я бы рекомендовал создать приложение C++/MFC с VS2013. Классы Microsoft Foundation (MFC) были основой, которая скрывает большую часть усилий по созданию и обработке окон. С гораздо легче начать работу, чем с помощью программного обеспечения Win32.

В MSDN есть ряд руководств и статей, которые могут помочь вам приступить к работе. Я также нашел это разумное пошаговое руководство по программированию MFC. Если вы ищете Программу MFC, вы должны найти достаточное количество информации/кода/примеров.

Поскольку вы используете Visual Studio 2013, одно предложение комментаторов не применимо к вам. Существует предположение, что вы можете использовать C++/CLI (это эффективно.NET C++). C++/CLI часто является прокладкой, которая используется в качестве шлюза для перехода разработчика C++ на С#. Microsoft больше не поддерживает Winforms через среду IDE для приложений C++/CLI. Уже нет проекта приложений Winforms для C++/CLI. Если у вас есть winfs VS2010, то доступно через IDE.

Если вы пишете графический интерфейс и не хотите использовать MFC с C++, я бы рекомендовал перейти на С#. Найдите хорошую книгу на эту тему. У Microsoft есть онлайн-руководство, которое для Java-разработчиков переносится на С#.

Основываясь на комментарии OPs, он хотел бы сделать что-то более программно. Существует решение, которое было создано Microsoft и по-прежнему поддерживается сообществом с открытым исходным кодом. Эта опция - Библиотека шаблонов Windows (WTL). Я лично все еще использую его для приложений с небольшим весом, где я не хочу накладных расходов на MFC. Это набор шаблонов Windows, которые размещают верхний ATL (активная библиотека шаблонов). Первоначально ATL был разработан как набор шаблонов C++ для создания многоразовых двоичных компонентов с использованием COM.

Вы можете добавить WTL к VS2013 (это уже не часть стандартной Visual Studio). Вы можете загрузить WTL из http://sourceforge.net/projects/wtl/. Установка выполняется не прямо, а работает правильно.

  • 0
    ЗДРАВСТВУЙ! Я только что обнаружил, что предыдущие ответы больше не работают на VS13, как вы говорите. Перейти к C # не вариант. Я готовлюсь к специальной степени в C ++. Идеально для меня - иметь контроль над Java, создавать все самостоятельно, писать размер, положение и т. Д. И т. Д. И иметь возможность создавать окно, как любой другой объект. Я против разработки GUI. Спасибо за ответ
  • 0
    MFC может быть сделано программно без графического интерфейса. Графический интерфейс просто делает это проще. Функциональность MFC Window инкапсулирована в классы C ++ MFC. Я признаю, что это совсем другая парадигма, чем Java.
Показать ещё 1 комментарий
0

Winapi использует простой интерфейс C, поэтому нет готовых классов.

Если вы хотите писать приложения.net в C++, вы можете использовать wpf (Windows Presentation Foundation) или winforms, как писал в своем комментарии huseyin.

Если вы хотите разрабатывать собственные приложения win32/64, вам нужно использовать библиотеку/фреймворк. У Microsoft есть MFC (Microsoft Foundation Classes), но IMHO они сложны и, следовательно, им не нравятся.

Вы также можете взглянуть на кросс-платформенные структуры как qt, gtk или wxWidgets. Однако там вы должны позаботиться о лицензии (qt доступен как GPL, LGPL или коммерческая лицензия, поэтому вам либо нужно покупать лицензии разработчика, либо поставить свой код под GPL, либо соответствовать LGPL).

  • 0
    Здравствуй! спасибо за Ваш ответ. Я посмотрю на них. Я изучал Qt, но мне всегда нравится самому кодировать. Теперь я вижу, что это больше не вариант. Спасибо.
  • 0
    Я думаю, что «сложный», вероятно, вопрос перспективы. Мне удобно их использовать (и я также занимаюсь разработкой на C # WPF, QT, GTK). По крайней мере, у MFC нет проблем с лицензированием, и есть множество документации и книг по этой теме. И это работает с выбранными авторами языком MS C ++. Я должен отметить, что после VS2010, если вы программируете C ++ / CLI - даже через Win IDE нет даже Winforms, поскольку Microsoft ясно дала понять, что C ++ / CLI предназначен для решений взаимодействия, а не как полноценный язык .NET.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню