Я пытаюсь создать пользовательский интерфейс, похожий на тот, который появился у Microsoft в наши дни. Особенно те, которые ориентированы на операционную систему Windows 10 (а-ля Офис 2016).
В настоящее время я использую WinAPI, но все элементы управления, предоставляемые Windows.h и CommCtrl.h, выглядят как элементы пользовательского интерфейса старого / старого стиля. Я особенно ищу элементы заголовка / меню / строки состояния (основная клиентская область будет состоять из контекста GDI / Direct2D, поэтому ничего особенного там не требуется).
Я нашел некоторую информацию, указывающую на XAML, но я не думаю, что это то, что я хочу. WPF кажется более вероятным кандидатом, но я не уверен, что это так.
Я хотел бы, чтобы это было на 100% нативным (WinAPI / C&C ++), но если нет абсолютно никакой другой опции, я могу использовать C # для пользовательского интерфейса и заглушку в нативном коде.
Вы используете XAML и C ++, C # или JavaScript для написания приложения для Магазина Windows (ранее Metro). Если вы используете C ++, приложение является на 100% нативным, но если вы используете C # или JavaScript, то, конечно, используется требуемая виртуальная машина.
API, который вызывает ваш код, — WinRT, который выглядит как Silverlight. Кроме того, ваше приложение может также вызывать некоторые, но не все API Win32, аналогично тому, как приложения .NET могут вызывать Win32 (например, с помощью P / Invoke). Тем не менее, даже если вы используете C ++ и, таким образом, ваше приложение на 100% нативно, оно все еще остается изолированным, как браузер. Это означает, что он не может выполнять такие действия, как доступ ко всему диску или запись в HKLM в реестре. Это для безопасности; приложение Магазина Windows должно быть безопасным и, следовательно, более ограниченным, как мобильное приложение, которое вы покупаете в Apple AppStore. Это означает, что вы не можете позвонить, например, CreateFile. Это говорит:
Минимально поддерживаемый клиент
Windows XP [только для настольных приложений]
Когда MS упоминает «Настольные приложения», как указано выше, они означают приложения Win32. Это исключает приложения Магазина Windows. Но это сбивает с толку, потому что в Win 8 / 8.1 эти приложения Магазина Windows работают в полноэкранном режиме, но в Windows 10 они имеют изменяемый размер и перекрываются, появляются рядом и смешиваются с традиционными приложениями Win32, такими как Explorer и Task Manager. Поэтому, даже если они отображаются на том же рабочем столе, что и настольные приложения, они не являются настольными
Я считаю, что если приложение Магазина Windows также предназначено для Windows Phone 10, Windows IoT и т. Д., То оно называется приложением Windows Universal.