Изучение Win32 для разработки приложений с графическим интерфейсом - PullRequest
0 голосов
/ 25 мая 2010

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

Ответы [ 4 ]

8 голосов
/ 25 мая 2010

Я бы пошел с Qt . Это кроссплатформенный графический интерфейс C ++.

3 голосов
/ 25 мая 2010

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

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

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

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

1 голос
/ 25 мая 2010

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

0 голосов
/ 25 мая 2010

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

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

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