Нужна помощь в написании приложения с графическим интерфейсом на C - PullRequest
1 голос
/ 18 ноября 2009

Я хочу написать отдельное приложение на основе графического интерфейса для администрирования одного из самых популярных промежуточных продуктов для предприятий от очень крупной компании. Но у этой большой компании уже есть инструмент администратора и он бесплатный. Но угадайте, что он очень-очень медленный, поскольку написан на платформе java / Eclipse.

Я хочу написать очень быстрый адаптивный инструмент с графическим интерфейсом для Windows.

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

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

Пожалуйста, помогите мне.

Спасибо.

Редактировать: я не знаю ООП и не предпочитаю его использовать.

Редактировать: Итак, мой выбор - Win32API и Qt. Мое требование - простой графический интерфейс, ничего особенного. Я буду использовать простые окна, кнопки и меню. Но мне может потребоваться выполнить некоторую обработку, а это означает, что графический интерфейс не должен занимать много ресурсов. Исходя из этого, я думаю об использовании Win32 API, даже если мне придется приложить усилия, чтобы, надеюсь, удовлетворить пользователей.

Ответы [ 10 ]

6 голосов
/ 18 ноября 2009

очень-очень медленно, так как написано на платформе Java / Eclipse.

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

Кроме того, я не хочу здесь хамить, но сделаю

Я хочу написать очень быстрый отзывчивый Инструмент GUI изначально для Windows.

и

У меня мало опыта программирование для windows

не противоречат друг другу?

5 голосов
/ 18 ноября 2009

Если вы хотите написать приложение C GUI, придерживайтесь Win32 или GTK + .

Win32 невероятно быстр и позволит вам получить доступ ко всему доступному для Windows. Взгляните на этот урок .

GTK + чрезвычайно прост в использовании, кроссплатформенен и предоставляет массу дополнительных функций. Начните с загрузки пакета all-in-one , перейдите к учебнику и документации .

Лично я бы порекомендовал перейти прямо к Python , если вам нужны быстрые, отзывчивые графические интерфейсы и просто нужно обернуть некоторые вещи более низкого уровня.

2 голосов
/ 18 ноября 2009

Для простого C, кроссплатформенного, нативного вида, простого сценариев UI, я предлагаю взглянуть на IUP: http://www.tecgraf.puc -rio.br / iup /

2 голосов
/ 18 ноября 2009

Почему вы ограничиваете себя C? Windows Forms, WPF и SIlverLight - это жизнеспособные структуры пользовательского интерфейса, которые быстро реагируют и содержат множество книг. Есть причина, по которой вы не можете найти много информации о написании приложений с графическим интерфейсом на C - люди не делают этого.

1 голос
/ 18 ноября 2009

Я настоятельно рекомендую вам использовать C ++ с библиотекой Qt, которая является кроссплатформенной и с открытым исходным кодом (LGPL). Приложения C ++ Qt GUI работают так же быстро, как и родные приложения Win32, хотя они занимают больше памяти. И вы даже не можете начать сравнивать прирост производительности - Qt - отличная библиотека, прекрасно разработанная для программирования GUI с множеством других полезных инструментов.

1 голос
/ 18 ноября 2009

Если вы действительно хотите сделать это в C, вы можете использовать Win32 API. Но работать с ним адски. Объектно-ориентированный вариант тоже не намного лучше, но он снимает немного боли (MFC).

1 голос
/ 18 ноября 2009

Большинство инструментов GUI написаны на C ++, поэтому ограничение себя на C несколько ограничит ваши возможности. Один вариант, который является кроссплатформенным и написан на C: GTK ; изначально для X, но работает и на Windows .

edit : Конечно, вы всегда можете просто программировать непосредственно под Windows API (ранее известный как Win32). Для простых графических интерфейсов это не так уж плохо.

1 голос
/ 18 ноября 2009

Если вам действительно нужно использовать C, тогда вы можете использовать GTK + . В противном случае я бы предложил библиотеку C ++, такую ​​как QT или wxWidgets . Однако, несмотря на это, я все же думаю, что было бы предпочтительнее создать решение .NET (Windows Forms или WPF). Они должны обеспечивать лучший интерфейс, чем Java / Swing.

0 голосов
/ 19 ноября 2009

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

Для нормального графического интерфейса на C / C ++ Win32 предоставляет достаточно элементов управления для достойно выглядящего приложения с хорошим временем отклика.

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

Рассмотрим небольшой пример: в вашем графическом интерфейсе пользователя отслеживается подключение к базе данных, которое проверяется каждую секунду. Другой модуль может отправлять большие файлы в другие приложения. Теперь, если приложение является однопоточным, ваш графический интерфейс обязательно будет иметь проблему с ответом. Если соединение с базой данных очень медленное из-за проблем с сетью / базой данных, ваше приложение будет зависать независимо от выбранных каркасов графического интерфейса или аппаратного обеспечения, если это было однопоточное приложение.

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

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

Используя сторонние графические интерфейсы, вы увеличиваете свои зависимости в своем приложении, и вам потребуется отправить дополнительные библиотеки и т. Д. Вместе с основным приложением. С win32 все довольно аккуратно.

0 голосов
/ 18 ноября 2009

Компоненты GUI очень хорошо отображаются в объектно-ориентированной парадигме. Использование C для приложений с графическим интерфейсом - плохая идея, я был там, и гораздо удобнее делать это с помощью C ++. Конечно, вы можете делать OO с C, но это по меньшей мере уродливо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...