Где хорошее место состоит в том, чтобы начать программировать графический интерфейсы пользователя для окон? [закрытый]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
25
задан kassak 25 June 2013 в 12:00
поделиться

9 ответов

Это довольно широкий вопрос, поскольку программирование приложений с графическим интерфейсом в Windows может быть выполнено очень многими способами.

Разработка любого приложения с графическим интерфейсом состоит из двух основных частей: языка и API / framework . Учитывая, что вы заинтересованы в изучении создания приложений с графическим интерфейсом Windows, язык не является для вас предметом внимания. Следовательно, вы должны выбрать язык, который вы уже знаете, и работать с платформой или API, которые могут быть использованы выбранным вами языком.

Если вы хотите использовать C, вы в значительной степени ограничены работой с Win32 API, и в этом случае чтение Petzold или Richter было бы отличным местом для начала. Win32 API может быть довольно устрашающим, но это стоит потраченных усилий (imho). В Интернете есть множество учебников по Win32, и всегда есть MSDN с полным справочником / руководством по Win32 API. Убедитесь, что вы описываете не только API, но и другие области, такие как ресурсы / диалоги, поскольку они являются строительными блоками для вашего приложения Win32.

Если вы хотите использовать C ++, у вас есть все опции, которые есть у вас при использовании C, плюс несколько других. Я бы рекомендовал перейти непосредственно к Win32 API, а затем перейти к известной среде, такой как MFC, Qt, wxWindows или GTK, чтобы вы могли тратить меньше времени на работу с шаблонным кодом и вместо этого сосредоточиться на написании логики своего приложения. Последние 3 варианта, которые я только что перечислил, имеют дополнительное преимущество, заключающееся в кроссплатформенности, поэтому вам не нужно слишком беспокоиться о проблемах, связанных с платформой. Учитывая, что вы сказали, что хотите работать с Windows, я предполагаю, что вы заинтересованы в том, чтобы сосредоточиться на этом, а не на кроссплатформенности - так что переходите на MFC, но сначала потратьте некоторое время на Win32 API, чтобы ознакомиться с некоторыми из концепции.

При работе с MFC и Win32 API хорошей идеей будет попытаться получить четкое понимание терминологии до написания кода. Например, вам необходимо понять, что такое насос сообщений и как он работает. Вам необходимо знать о таких понятиях, как « нарисованные владельцем элементы управления» и создание подклассов . Когда вы поймете эти вещи (и больше), вам станет легче работать с MFC, потому что он использует аналогичную терминологию в своих интерфейсах классов (например, вам нужно знать, что означает «переводить сообщения», прежде чем вы сможете понять, как и когда используйте PreTranslateMessage ).

Вы также можете использовать Managed C ++ для написания приложений .NET GUI, но в нескольких местах я читал, что Managed C ++ на самом деле не предназначен для такого использования. Вместо этого его следует использовать в качестве шлюза между собственным / неуправляемым кодом и управляемым кодом. Если вы используете .NET, лучше использовать язык .NET, такой как VB.NET или C #, для создания ваших графических интерфейсов.

Итак, если вы собираетесь использовать .NET, у вас есть выбор библиотеки WinForms или WPF . Лично я чувствую, что вы потратите время на обучение созданию приложений WinForms, учитывая, что WPF предназначен для его замены. Со временем WPF станет более распространенным, а Winforms, скорее всего, умрут. WPF имеет гораздо более богатый набор API и не страдает от многих ограничений, которые имеет Winforms. Однако если вы выберете этот маршрут, вам, несомненно, придется изучать XAML , который является языком разметки, который управляет приложениями WPF. Эта технология достигает совершеннолетия, и есть много замечательных мест, чтобы узнать об этом. Во-первых, есть сайты, такие как LearnWPF и DrWPF , на которых есть несколько действительно хороших статей. Во-вторых, существует множество из качественных книг по теме .

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

В качестве заключительной ноты ...

Другими словами, Silverlight. Если вы не хотите идти по пути MS, вы можете посмотреть Adobe Flash / Flex. Как Silverlight, так и Flash / Flex создают RIA. Который я думаю, куда мы направляемся. В дни Office подобные приложения пронумерованы

Я совсем не согласен. Silverlight - это не то же самое, что WPF. Silverlight ориентирован на веб-сайты и имеет только подмножество функций WPF. Учитывая, что вопрос касается приложений с графическим интерфейсом Windows, Flash / Flex Rich Internet Apps на самом деле не является подходящим предложением. Я также не согласен с тем, что дни Rich Client Applications (например, офисных) вообще сочтены.

1129 Надеюсь, это поможет. Удачи:)

43
ответ дан OJ. 28 November 2019 в 20:38
поделиться

Я не знаю, назвал ли я его хорошим местом для запуска, но если Вы хотите быть готовым будущим, смотреть на эти основа представления окон , который создается полностью в целях программирования GUI для окон

5
ответ дан lomaxx 28 November 2019 в 20:38
поделиться

Мой первый опыт написания простых приложений с графическим интерфейсом для Windows был с C # и Visual Studio. Интерфейс создания GUI - это простая сделка перетаскивания, которая генерирует скелетные методы на основе потенциальных действий пользователя. Я занимался только довольно простым программированием с этим, но я думаю, что это было бы отличным местом, чтобы начать изучать основы и расширять свои возможности по мере использования.

3
ответ дан Justin Bennett 28 November 2019 в 20:38
поделиться

Существует много учебных руководств Win32 онлайн:

http://www.zeusedit.com/forum/viewtopic.php?t=1218

существует много компиляторов для выбора из:

http://www.zeusedit.com/forum/viewtopic.php?t=238

я также рекомендовал бы добраться Borland Win32 SDK документация в формате файла WinHelp:

http://www.zeusedit.com/forum/viewtopic.php?t=7

Это только покрывает пустые основы Win32, но при запуске, это может быть полезно, поскольку это является менее пугающим и менее чрезмерно увеличенным в размерах, чем MSDN.

3
ответ дан jussij 28 November 2019 в 20:38
поделиться

Я бы никогда не пошел по Silverlight, Flash / Flex или любому другому подобному маршруту. Это выглядит красиво, но главная проблема в том, что код движка, на котором он работает, полностью закрыт и управляется одной компанией. Возьмите, например, 64-битные версии обоих. Если появится какая-то новая платформа, вы не сможете перенести в нее свой существующий код.

1
ответ дан Milan Babuškov 28 November 2019 в 20:38
поделиться

Для бизнес-приложений Windows Forms очень зрелы. Это обеспечивает нежный путь от автоматической генерации много для Вас в разрешение мелкомодульного управления и прокрутку Ваше собственное. Существуют тонны высококачественных сторонних средств управления и большое тело примеров, документов, и т.д. там. Трудно столкнуться с проблемой, которую кто-то еще не решил. Я настоятельно рекомендую получение некоторого фона знание Win32 (например, Petzold), поскольку платформа WinForms живет сверху его.

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

@StephenCox: неправильно ответьте на неправильный вопрос. OP спрашивает о настольных клиентских приложениях, и кроме того, WPF! = Silverlight.

0
ответ дан Aidan Ryan 28 November 2019 в 20:38
поделиться

Для простой начальной точки для получения головы вокруг "событийно-ориентированной" природы в основном все платформы создаются вокруг взгляда FLTK.

Вот некоторые видео быстрого запуска Ссылка

Для профессионального использования, которое я рекомендовал бы QT, дорогому, но часто стоящему того в коммерческих ситуациях.

0
ответ дан epatel 28 November 2019 в 20:38
поделиться

Так как Вы уже знакомы с C и C++, я рекомендовал бы изучить, как записать простое приложение Windows GUI с помощью книги Charles Petzold. Это даст Вам фундаментальное понимание того, как Windows работает. Хорошо понять, что большинство, все, что Вы видите, является окном (кнопка является окном, например), и что эти окна отвечают на сообщения. Я' не провел бы много времени на этом, хотя и необходимо не обязательно сделать это сначала, если Вы идете в, выбрал WPF. Я просто думаю, что хорошо иметь основное понимание этого.

был хороший подкаст недавно на.Net Rocks, позвонившем "Kate Gregory, Разрабатывает в C++ для Vista!" на там она рекомендует, чтобы кто-то начинающий теперь не использовал/изучал MFC (даже при том, что он был недавно обновлен).

До подготовки к будущему необходимо изучить WPF, но это еще не завершено, таким образом, в зависимости от видов клиентских приложений Вы хотите создать, необходимо будет, вероятно, изучить WinForms. Большинство людей еще не использует WPF, таким образом, это - хорошее время, чтобы начать учиться. Я думаю, что Вы найдете его более легким использованием C# для изучения его вместо того, чтобы делать управляемый код с C++.

0
ответ дан bruceatk 28 November 2019 в 20:38
поделиться

Изучите основы в первую очередь. Лучший учебник, который я нашел, это: http://winprog.org/tutorial/start.html

После этого, хотя домашняя страница ненавистно неприятна, страницы учебника хороши по содержанию. и эстетика: http://www.tenouk.com/cplusmfcdotnet.html

Тогда, конечно, есть MSDN .

0
ответ дан Nav 28 November 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: