2009-11-07 5 views
2

До сих пор я писал только консольные приложения, но мне нужно написать простое оконное приложение для школьного задания.Как сделать оконное приложение в ANSI C?

Может ли кто-нибудь указать мне на хороший учебник, как создавать окна и другие обычные элементы окон, такие как кнопки, 2d-графики и т. Д. В ANSI C? есть ли хорошая библиотека, которую я должен использовать?

Я попытался, но прибегая к помощи нет учебника сайтов, посвященных С.

Если вы можете, я бы также признателен примером код.

спасибо.

Кстати, я использую Dec C++.

+0

Почему у вас вопрос с тегами C и C++. Они не одни и те же языки! –

+0

Кто-то отредактировал его, чтобы включить тег C++. Я исправил это. – asveikau

ответ

6

В окнах нет стандарта ANSI C. Если вы хотите создать оконное приложение, вам придется использовать библиотеки, специфичные для платформы (например, Win32, Cocoa или X11) или какую-то кросс-платформенную библиотеку, которая инкапсулирует это (например, SDL, wxWidgets или еще много) ,

+0

wxWidgets - очень хорошая библиотека для этого – Eloff

+0

Это просто ерунда; стандарт языка и стандарт библиотеки являются отдельными вещами, используя библиотеки, отличные от стандартной библиотеки C, не создает результирующий код «Not ANSI C». «ANSI C» и «переносимость» не являются синонимами. – Clifford

+0

@Clifford: Извините за путаницу, я переформулировал свой ответ. –

0

Предлагаю вам загрузить Microsoft Visual Studio 2008 Express Edition и использовать C# .Net.

+0

Хотя MSVS - отличное предложение, OP говорит, что это школьное задание, поэтому он, вероятно, не может использовать C#. –

+5

Это не имеет никакого смысла. Как вы используете C# в C, когда вопрос четко обозначен ANSI C. На этом сайте уже так много анти-C-пропаганды; Я не думаю, что нам нужно больше! – BobbyShaftoe

-1

Как уже было сказано, я предлагаю вам использовать Winforms и переключиться на среду .NET. Это 2009 год, и я думаю, что есть более подходящие решения для GUI: P

Редактировать: Nvm, не видел, чтобы это было школьное задание.

Однако, здесь C++ руководство по API Win32: http://www.relisoft.com/win32/index.htm

+4

Типичный из управляемых кодеров для людей с чертами и троллями для выбора языка. Это 2009 год, да, и, судя по всему, люди становятся глупее, потому что все на этом сайте, похоже, боятся C.: P – asveikau

+2

Почему бы вам не сказать Microsoft об этом. хе. Если кто-то хочет запрограммировать GUI-приложения на C, это их выбор. Кроме того, C++ не является ANSI C только FYI. – BobbyShaftoe

+1

Я никогда не говорил, что боюсь C/C++ ... и что это был плохой выбор. Мой пост просто проливает свет на возможно более легкое и более соответствующее направление для ОП. Нет ничего плохого в том, чтобы предлагать альтернативный путь. –

2

http://support.microsoft.com/kb/829488, который также говорит о создании

приложение для Windows: Создание простого Microsoft Windows-приложение. Файлы приложений включают файл проекта ProjectName.cpp, содержащий _tWinMain. Вы можете использовать этот тип приложения для выполнения программирования графического интерфейса пользователя (GUI) на основе программирования .

Что касается учебников ... используйте MSDN. Win32 API - C. Вам не нужен «учебник Win32 ANSI C» - вам нужен учебник Win32 (например, http://www.winprog.org/tutorial/start.html, http://www.functionx.com/win32/Lesson01.htm) - если, конечно, вы не знаете ANSI C, но тогда вы просто ищете ANSI C учебник. Эти предметы независимы.

1

Есть много хороших библиотек — слишком много для того, чтобы там был очевидный выбор без начала религиозной войны. Я рекомендую, чтобы для вашей первой библиотеки вы узнали что-то, что будет работать в Windows, Linux или OSX. Вот два хороших вариантов, не обязательно лучше, но широко используются и личные фавориты:

  • Tcl/Tk. Вы пишете большую часть своего приложения на языке сценариев Tcl, но вы можете легко интегрировать свой собственный код ANSI C в Tcl, который был разработан с самого начала с учетом такой интеграции. Инструментарий Tk очень прост в освоении, и вы можете написать много простых графических интерфейсов в чистом Tcl, когда вы начинаете. Интерактивный, простой и очень хорошо поддерживаемый.

  • Если вы хотите написать все в ANSI C, я не знаю ни одного действительно простого выбора, но я был доволен wxwidgets. Однако все эти инструменты имеют довольно крутую кривую обучения.

7

GTK - хорошая библиотека для использования, но может предоставлять неродные изображения под Windows. Он отлично смотрится в GNU/Linux, особенно с использованием GNOME.

Он реализован только в C (с использованием системы GObject Type System, являющейся частью библиотеки GLib), поэтому она отлично подойдет для ваших нужд. Существует также RAD-инструмент под названием Glade.

+0

Это спорно, если GTK выглядит «большой» под любым оконным менеджером. – rlbond

+0

Это спорно, но я не думаю, что его плохо. – BobbyShaftoe

2

Общими местами для начала являются Charles Petzold's Programming Windows и theForger's Win32 API Programming Tutorial.

Однако в большинстве случаев C больше не является предпочтительным языком для разработки Windows. Объектно-ориентированная технология намного лучше подходит для разработки графического интерфейса, а с введением MFC C++ стал предпочтительным языком, а позже с .Net, C# и C++/CLI.

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

В любом случае, Dev-C++ не является отличным инструментом для разработки графического интерфейса.

+0

Я знаю, что это было много лет, но C еще является подмножеством C++?Я пытался начать работу с C на Windows, и у меня есть время найти правильный автономный компилятор. Я столкнулся с проблемой не знать, нужен ли мне компилятор Windows для C++ и один для C, или что-то еще. Я просматриваю страницу Microsoft после страницы Microsoft. Ближе всего я получил Visual Studio Express. – Ungeheuer

+0

@Ungeheuer: Я не уверен, как ваш _comment_ относится к моему сообщению, или к этой теме. Если у вас есть собственный вопрос, задайте новый вопрос. Последняя версия Visual Studio Express была для Visual Studio 2015, Visual Studio Community Edition более функциональна (позволяет плагины), но более ограничительно лицензирована (коммерческое использование только для «малых» предприятий). Visual Studio 217 Community Edition является текущим. Visual C++ компонент Visual Studio и C и C++. Если исходные файлы имеют расширение .c, то вместо него будет использоваться компиляция C++ (и их можно, конечно, смешивать). – Clifford

+0

@Ungeheuer: мастера приложений и шаблоны для C++, поэтому начните с шаблона «пустой проект» и создайте/добавьте файлы вручную. – Clifford

1

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

Если вы действительно хотите придерживаться C, вы можете использовать собственный API OS или единственный текущий кросс-платформенный C GUI lib, о котором я знаю: GTK +. Если вам действительно не нужен графический интерфейс, а просто графический вывод, я бы пошел с SDL.

Смежные вопросы