2010-05-25 5 views
0

Если вы программист на C++, можете ли вы использовать API Win32 или .NET для разработки графических приложений?Изучение Win32 для разработки приложений с графическим интерфейсом

+0

Возможный дубликат [Как создать графический интерфейс для приложения Windows с использованием C++?] (Http://stackoverflow.com/questions/488837/how-do-i-create-a-gui-for-a- windows-application-using-c) –

+0

Удаленный комментарий, потому что он поставил вопрос «Субъективный и аргументативный». Без комментариев вопрос является точным дубликатом другого вопроса. С комментарием вопрос является субъективным и аргументативным и * все еще * точным дубликатом другого вопроса. –

ответ

3

Win32 - это API (интерфейс прикладного программирования). Также .NET. Так же и POSIX. Первые два инструментария GUI интегрированы в основной API, но при выборе вы можете использовать другие инструментальные средства, такие как Qt (как предложено Skildrick) или wxWindows. Для * nix основным API является POSIX, и почти все из них используют X11 в качестве низкоуровневого графического слоя, тогда вам нужен набор инструментов GUI сверху (ни один из них не интегрирован в POSIX). В зависимости от типа дисплеев, который вы хотите, OpenGL - еще один очень удобный переносимый инструментарий GUI, хотя он фокусируется на высокоскоростной векторной графике, а не на виджетах пользовательского интерфейса.

Одной из веских причин использования интегрированного инструментария GUI API Win32 является то, что многие другие компоненты Win32 API используют его, например. WSAAsyncSelect и MsgWaitForMultipleObjectsEx - это функции, отличные от GUI, которые интегрированы в обработку сообщений GUI. Хороший инструментарий для обложек даст вам достаточный контроль, чтобы продолжать использовать их, но мало кто это делает, поскольку этот подход очень отличается от не-Windows-систем и большинства альтернативных возможностей инструментария для переносимости данных выше возможностей.

Даже .NET, который разработан с нуля для оптимальной работы в Windows, не может использовать асинхронные вызовы процедур или ожидаемые таймеры из потока пользовательского интерфейса, так как ни одна обработка сообщений в .NET не использует MsgWaitForMultipleObjects. Таким образом, вы в конечном итоге вынуждены использовать несколько потоков и тонну yucky кода синхронизации.

Но держитесь подальше от MFC. Это, в основном, академическое упражнение по реализации исключений без поддержки компилятора, а не для той структуры, которую вы хотите для серьезных приложений. Большинство других «функций» были добавлены после того, как современный дизайн C++ был намного лучше понят, но продолжает использовать опасный беспорядочный стиль, начатый ранними хаками по исключениям и виртуальному наследованию во имя сохранения целостности. Сегодня доступны гораздо лучшие варианты.

+0

Спасибо, сэр! – Gareth87

+0

.net GUI - это не только API; WPF - это график сцены, а не API-подход, который может быть полезен для некоторых типов приложений. –

+0

И есть API для построения графика сцены. Но я старался использовать фразу «GUI toolkit», а не API, а WPF, безусловно, является инструментарием GUI. –

8

Я бы пошел с Qt. Это кросс-флэш-платформа C++ GUI.

+0

... а также отличные рамки для работы. :) – Donotalo

0

Попробуйте эту бесплатную книгу - я нашел ее очень хорошо. Это руководство для C# и .net для программистов на C++ и пропускает обычные вещи для детей.

http://www.charlespetzold.com/dotnet/

1

Я бы сказал, что и то и другое. Я узнал немного материала Win32, прежде чем .NET вышел. Я играл как с самим Win32 API, так и с MFC. Это было очень воспитательно. Я много узнал о том, как Windows обрабатывает ваше приложение и что он ожидает от вас. Если я вернусь и изучу .NET сейчас, я уверен, что буду признателен за это больше, чем без предварительного опыта.