На чем пишут оконные приложения
Перейти к содержимому

На чем пишут оконные приложения

  • автор:

На чём написать оконное приложение?

Есть большая потребность написать приложение под Винду, которое должно получать данные по UART (COM port), отображать их и отправлять обратно команды. Суть диагностическая утилита. Красиво не надо, надо функционально. Вопрос в следующем: какой язык для этого лучше подходит (знаю С, С++, Python) и какая среда разработки? Приложение не должно быть привязано к среде, как VisualBasic, должно открываться на всякой реликтовой технике и осях начиная с ХР

Отслеживать
задан 27 дек 2019 в 16:59
56 5 5 бронзовых знаков
Странно слышать такой вопрос, от человека знающего С, С++, Python
27 дек 2019 в 17:26

Однозначно не ответишь. На чём умеете, на том и пишите. Однако Python-то в виндах привязан к своей «среде»

27 дек 2019 в 17:26
@MBo А C++ не привязан к архитектуре?
27 дек 2019 в 17:28

@Дмитрий Гвоздь C++ создаст исполняемый файл, который будет работать везде (если в свежей MSVS, например, предусмотреть совместимость с XP), а что со скриптом Py делать, если интерпретатор не установлен?

Пошаговое руководство. Создание традиционного классического приложения Windows (C++)

В этом пошаговом руководстве показано, как создать традиционное классическое приложение Windows в Visual Studio. Приложение, которое вы создаете, использует API Windows для отображения «Hello, Windows desktop!» в окне. Код, который вы разрабатываете в этом пошаговом руководстве, можно использовать в качестве шаблона для создания классических приложений Windows.

API Windows (также известный как API Win32, КЛАССИЧЕСКИЙ API Windows и Классический API Windows) — это платформа на основе языка C для создания приложений Windows. Он использовался для создания приложений Windows на протяжении десятилетий. Более сложные и простые платформы программ были созданы на основе API Windows. Например, MFC, ATL, платформы .NET. Даже самый современный код среда выполнения Windows для приложений UWP и Store, написанных в C++/WinRT, использует API Windows в нижней части. Дополнительные сведения об API Windows см. в разделе «Индекс API Windows».

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

Необходимые компоненты

Снимок экрана: разработка классических приложений с помощью рабочей нагрузки C++ в Установщике Visual Studio, которая говорит: создание классических приложений на основе Windows с помощью набора инструментов Visual C++

  • Компьютер под управлением Microsoft Windows 7 или более поздних версий. Мы рекомендуем Windows 11 или более поздней версии для оптимальной разработки.
  • копия Visual Studio. Сведения о скачивании и установке Visual Studio см. в этой статье. Когда вы запускаете установщик, убедитесь, что установлена рабочая нагрузка Разработка классических приложений на C++. Не беспокойтесь, если вы не установили эту рабочую нагрузку при установке Visual Studio. Вы можете снова запустить установщик и установить ее сейчас.
  • Базовое понимание использования интегрированной среды разработки Visual Studio. Если вы уже использовали классические приложения для Windows, вы, вероятно, справитесь. Общие сведения см. в обзоре возможностей интегрированной среды разработки Visual Studio.
  • Основные навыки владения языком C++. Не волнуйтесь, мы не будем делать ничего сложного.

Создание классического проекта Windows

Выполните следующие действия, чтобы создать первый классический проект Windows. Запишите в начале этого пошагового руководства полный код доступен в разделе «Сборка кода» в конце пошагового руководства. Следуйте инструкциям по созданию проекта, но удерживайте вставку следующих разделов кода до конца, когда будет представлен полный код приложения. Некоторые сведения опущены в фрагментах кода, чтобы сосредоточиться на наиболее важных частях. Вы можете скопировать полный код и вставить его в проект в конце.

Чтобы упростить объяснение. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он расположен в верхней части оглавление на этой странице.

Создание классического проекта Windows в Visual Studio

  1. В главном меню выберите Файл >Создать >Проект, чтобы открыть диалоговое окно Создание проекта.
  2. В верхней части диалогового окна задайте для языка C ++, установите для платформы значение «Платформа» в Windows и задайте для типа Project значениеDesktop.
  3. Из отфильтрованного списка типов проектов выберите мастер рабочего стола Windows и нажмите кнопку «Далее«. На следующей странице введите имя проекта, например DesktopApp.
  4. Нажмите кнопку Создать, чтобы создать проект.
  5. Откроется диалоговое окно «Проект рабочего стола Windows». В раскрывающемся списке «Тип приложения» выберите классическое приложение (.exe). Так как мы делаем приложение Windows, выбор консольного приложения приводит к созданию проекта, который не будет строиться с учетом кода, который мы будем использовать. Затем в разделе «Дополнительные параметры» выберите «Пустой проект«. Нажмите кнопку ОК, чтобы создать проект.
  6. В Обозреватель решений щелкните правой кнопкой мыши проект DesktopApp, выберите «Добавить» и выберите «Создать элемент«.

Анимация показывает правой кнопкой мыши имя проекта в Обозреватель решений, выбрав «Добавить» в появившемся меню и выбрав «Создать элемент».

Снимок экрана: диалоговое окно

  • В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле «Имя» введите имя файла, например HelloWindowsDesktop.cpp. Нажмите кнопку Добавить.
  • Теперь проект создается, и исходный файл открывается в редакторе.

    Создание классического проекта Windows в Visual Studio 2017

    Снимок экрана: диалоговое окно

    1. В меню Файл выберите команду Создать, а затем пункт Проект.
    2. В диалоговом окне «Создать проект» в левой области разверните узел «Установленный>Visual C++«, а затем выберите «Рабочий стол Windows». В средней области выберите мастер рабочего стола Windows. В поле «Имя» введите имя проекта, например DesktopApp. Выберите OK.
    3. В диалоговом окне «Классический проект Windows» в разделе «Тип приложения» выберите приложение Windows (.exe). В поле Дополнительные параметрывыберите Пустой проект. Убедитесь, что предварительно скомпилированные заголовки не выбраны. Нажмите кнопку ОК, чтобы создать проект.
    4. В Обозреватель решений щелкните правой кнопкой мыши проект DesktopApp, выберите «Добавить» и выберите «Создать элемент«.

    Анимация показывает правой кнопкой мыши имя проекта в Обозреватель решений, выбрав «Добавить» в появившемся меню, а затем выберите новый элемент.

    Снимок экрана: диалоговое окно

  • В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле «Имя» введите имя файла, например HelloWindowsDesktop.cpp. Нажмите кнопку Добавить.
  • Теперь проект создается, и исходный файл открывается в редакторе.

    Создание классического проекта Windows в Visual Studio 2015

    1. В меню Файл выберите команду Создать, а затем пункт Проект.
    2. В диалоговом окне «Создать проект» в левой области разверните узел «Установленные>шаблоны >Visual C++«, а затем выберите Win32. В средней области выберите шаблон Проект Win32. В поле «Имя» введите имя проекта, например DesktopApp. Выберите OK. Снимок экрана: диалоговое окно
    3. На странице «Обзор» мастера приложений Win32 нажмите кнопку «Далее«. Страница обзора мастера создания DesktopApp в Win32 Application Wizard.
    4. На странице «Приложение Параметры» в разделе «Тип приложения« выберите приложение Windows. В разделе «Дополнительные параметры» не проверка заголовок предварительной компиляции, а затем выберите «Пустой проект«. Чтобы создать проект, нажмите кнопку Готово.
    5. В Обозреватель решений щелкните правой кнопкой мыши проект DesktopApp, выберите «Добавить» и выберите «Создать элемент«.

    Анимация показывает правой кнопкой мыши имя проекта в Обозреватель решений, выбрав «Добавить» в появившемся меню и выбрав «Создать элемент».

    Снимок экрана: диалоговое окно

  • В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp). В поле «Имя» введите имя файла, например HelloWindowsDesktop.cpp. Нажмите кнопку Добавить.
  • Теперь проект создается, и исходный файл открывается в редакторе.

    Код

    Далее вы узнаете, как создать код для классического приложения Windows в Visual Studio.

    Где код запускается в классическом приложении Windows

    1. Так же, как каждое приложение C и приложение C++ должны иметь main функцию в качестве отправной точки, каждое классическое приложение Windows должно иметь WinMain функцию. WinMain имеет следующий синтаксис:
    int WINAPI WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow ); 

    Сведения о параметрах и возвращаемых значениях этой функции см. в статье «Точка входа WinMain».

    Примечание. Что такое все эти дополнительные слова, например WINAPI , или , или CALLBACK , или HINSTANCE _In_ ? Традиционный API Windows использует макросы typedefs и препроцессоров для абстрагирования некоторых сведений о типах и коде для конкретной платформы, таких как соглашения о вызовах, __declspec объявлениях и pragmas компилятора. В Visual Studio вы можете использовать функцию быстрого сведений IntelliSense, чтобы узнать, что определяют эти типдефы и макросы. Наведите указатель мыши на слово, интересующее вас, или выберите его и нажмите клавиши CTRL K, CTRL++ I для небольшого всплывающего окна, содержащего определение. Дополнительные сведения см. в разделе Using IntelliSense. Параметры и типы возвращаемых значений часто используют заметки SAL для перехвата ошибок программирования. Дополнительные сведения см. в статье «Использование заметок SAL для уменьшения дефектов кода C/C++».

    #include #include
    LRESULT CALLBACK WndProc( _In_ HWND hWnd, _In_ UINT message, _In_ WPARAM wParam, _In_ LPARAM lParam ); 

    Добавление функций в функцию WinMain

    1. WinMain В функции необходимо записать некоторые основные сведения о главном окне. Это можно сделать, заполнив структуру типа WNDCLASSEX . Структура содержит сведения о окне, таком как значок приложения, цвет фона окна, имя, отображаемое в строке заголовка, помимо прочего. Важно отметить, что он содержит указатель функции на процедуру окна, которая обрабатывает сообщения, которые Windows отправляет в приложение. В следующем примере показана типичная WNDCLASSEX структура:
    WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(wcex.hInstance, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION); 
    if (!RegisterClassEx(&wcex))
    static TCHAR szWindowClass[] = _T("DesktopApp"); static TCHAR szTitle[] = _T("Windows Desktop Guided Tour Application"); // The parameters to CreateWindowEx explained: // WS_EX_OVERLAPPEDWINDOW : An optional extended window style. // szWindowClass: the name of the application // szTitle: the text that appears in the title bar // WS_OVERLAPPEDWINDOW: the type of window to create // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) // 500, 100: initial size (width, length) // NULL: the parent of this window // NULL: this application does not have a menu bar // hInstance: the first parameter from WinMain // NULL: not used in this application HWND hWnd = CreateWindowEx( WS_EX_OVERLAPPEDWINDOW, szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInstance, NULL ); if (!hWnd)
    // The parameters to ShowWindow explained: // hWnd: the value returned from CreateWindow // nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); 
    MSG msg; while (GetMessage(&msg, NULL, 0, 0)) < TranslateMessage(&msg); DispatchMessage(&msg); >return (int) msg.wParam; 

    Дополнительные сведения о структурах и функциях в цикле сообщений см. в разделе MSG , GetMessage TranslateMessage и DispatchMessage . Базовая WinMain функция, которая создает главное окно приложения и прослушивает сообщения, которые Windows отправляет приложение, будут выглядеть следующим образом:

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) < WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(wcex.hInstance, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION); if (!RegisterClassEx(&wcex)) < MessageBox(NULL, _T("Call to RegisterClassEx failed!"), _T("Windows Desktop Guided Tour"), NULL); return 1; >// Store instance handle in our global variable hInst = hInstance; // The parameters to CreateWindowEx explained: // WS_EX_OVERLAPPEDWINDOW : An optional extended window style. // szWindowClass: the name of the application // szTitle: the text that appears in the title bar // WS_OVERLAPPEDWINDOW: the type of window to create // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) // 500, 100: initial size (width, length) // NULL: the parent of this window // NULL: this application dows not have a menu bar // hInstance: the first parameter from WinMain // NULL: not used in this application HWND hWnd = CreateWindowEx( WS_EX_OVERLAPPEDWINDOW, szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInstance, NULL ); if (!hWnd) < MessageBox(NULL, _T("Call to CreateWindow failed!"), _T("Windows Desktop Guided Tour"), NULL); return 1; >// The parameters to ShowWindow explained: // hWnd: the value returned from CreateWindow // nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // Main message loop: MSG msg; while (GetMessage(&msg, NULL, 0, 0)) < TranslateMessage(&msg); DispatchMessage(&msg); >return (int) msg.wParam; > 

    Обработка сообщений в WndProc функции

    1. Для обработки сообщений, получаемых приложением, вы реализуете инструкцию switch в WndProc функции. Важное сообщение для обработки . WM_PAINT Приложение получает WM_PAINT сообщение, когда необходимо обновить часть отображаемого окна. Событие может возникать, когда пользователь перемещает окно перед окном и снова перемещает его. Оно получает это сообщение при первом отображении окна, что дает возможность отображать пользовательский интерфейс приложения. Приложение узнает об этих событиях, когда Windows отправляет их. При первом отображении окна все его необходимо обновить. Чтобы обработать сообщение, сначала вызовите, а затем обработайте WM_PAINT BeginPaint всю логику для размещения текста, кнопок и других элементов управления в окне. Затем вызовите EndPaint . Для этого приложения код между BeginPaint() и отображается Hello, Windows desktop! в окне, созданном в WinMain() EndPaint() . В следующем коде TextOut функция отображает текст в указанном расположении в окне.
    PAINTSTRUCT ps; HDC hdc; TCHAR greeting[] = _T("Hello, Windows desktop!"); switch (message) < case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // Here your application is laid out. // For this introduction, we just print out "Hello, Windows desktop!" // in the top left corner. TextOut(hdc, 5, 5, greeting, _tcslen(greeting)); // End application-specific layout section. EndPaint(hWnd, &ps); break; >
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) < PAINTSTRUCT ps; HDC hdc; TCHAR greeting[] = _T("Hello, Windows desktop!"); switch (message) < case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // Here your application is laid out. // For this introduction, we just print out "Hello, Windows desktop!" // in the top left corner. TextOut(hdc, 5, 5, greeting, _tcslen(greeting)); // End application specific layout section. EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; >return 0; > 

    Сборка кода

    Как обещало, полный код рабочего приложения следует.

    Сборка примера

    1. Удалите весь код в HelloWindowsDesktop.cpp редактора. Скопируйте этот пример кода и вставьте его в HelloWindowsDesktop.cpp:
    // HelloWindowsDesktop.cpp // compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c #include #include #include #include // Global variables // The main window class name. static TCHAR szWindowClass[] = _T("DesktopApp"); // The string that appears in the application's title bar. static TCHAR szTitle[] = _T("Windows Desktop Guided Tour Application"); // Stored instance handle for use in Win32 API calls such as FindResource HINSTANCE hInst; // Forward declarations of functions included in this code module: LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow ) < WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(wcex.hInstance, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION); if (!RegisterClassEx(&wcex)) < MessageBox(NULL, _T("Call to RegisterClassEx failed!"), _T("Windows Desktop Guided Tour"), NULL); return 1; >// Store instance handle in our global variable hInst = hInstance; // The parameters to CreateWindowEx explained: // WS_EX_OVERLAPPEDWINDOW : An optional extended window style. // szWindowClass: the name of the application // szTitle: the text that appears in the title bar // WS_OVERLAPPEDWINDOW: the type of window to create // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) // 500, 100: initial size (width, length) // NULL: the parent of this window // NULL: this application does not have a menu bar // hInstance: the first parameter from WinMain // NULL: not used in this application HWND hWnd = CreateWindowEx( WS_EX_OVERLAPPEDWINDOW, szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInstance, NULL ); if (!hWnd) < MessageBox(NULL, _T("Call to CreateWindow failed!"), _T("Windows Desktop Guided Tour"), NULL); return 1; >// The parameters to ShowWindow explained: // hWnd: the value returned from CreateWindow // nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // Main message loop: MSG msg; while (GetMessage(&msg, NULL, 0, 0)) < TranslateMessage(&msg); DispatchMessage(&msg); >return (int) msg.wParam; > // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) // // PURPOSE: Processes messages for the main window. // // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) < PAINTSTRUCT ps; HDC hdc; TCHAR greeting[] = _T("Hello, Windows desktop!"); switch (message) < case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // Here your application is laid out. // For this introduction, we just print out "Hello, Windows desktop!" // in the top left corner. TextOut(hdc, 5, 5, greeting, _tcslen(greeting)); // End application-specific layout section. EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; >return 0; > 

    Анимация показывает нажатие кнопки «Сохранить все», а затем выберите «Сборка > Сборка решения» в главном меню.

    Снимок экрана: запущенный проект. В нем отображается окно с заголовком классического приложения Windows Desktop. Содержимое окна hello, windows desktop!.

  • Чтобы запустить приложение, нажмите клавишу F5. Должно появиться окно с текстом «Hello, Windows desktop!».
  • Поздравляем! Вы создали традиционное классическое приложение Windows.

    Обзор параметров разработки Windows

    В этой статье содержатся сведения, необходимые для начала создания приложений для классической среды Windows.

    Developer at desk

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

    Языки и платформы

    Многие приложения для Windows написаны с помощью UWP, WPF или Windows Forms, и все они остаются жизнеспособными сегодня. Сводка по использованию см. в разделе «Разработка приложений Windows»: параметры и функции.

    Если приложение будет работать только в Windows, возможно, потребуется изучить пакет SDK для приложений Windows и WinUI 3. Если вам нужно, чтобы приложение было кроссплатформенным, рассмотрим .NET MAUI, прогрессивное веб-приложение (PWA) или React Native для Windows. Есть много других вариантов (вот список популярных вариантов), но выше приведены некоторые хорошие начальные точки.

    Платформы Windows

    Дополнительные сведения о типах приложений, которые можно выбрать, приведены на вкладках ниже.

    Библиотека пользовательского интерфейса Windows (WinUI) 3 — это последняя платформа пользовательского интерфейса для классических приложений Windows, включая управляемые приложения, использующие C# и .NET, а также собственные приложения, использующие C++ с API Win32. Он все еще находится под очень активной разработкой, поэтому, хотя он может не иметь возможности соответствовать всем вашим потребностям сегодня это созревать с каждым выпуском.

    Включая систему Fluent Design во все интерфейсы, элементы управления и стили, WinUI предоставляет единообразные, интуитивно понятные и доступные возможности на основе новейших шаблонов пользовательского интерфейса. WinUI 3 предоставляется в пакете SDK для приложений Windows. Пакет SDK для приложений для Windows включает единый набор API и инструментов, которые могут согласованно использоваться любым приложением Win32 на C++ или .NET на C# в различных целевых версиях ОС Windows.

    Если вы уже установили необходимые средства разработчика, вы можете создать простой проект WinUI 3.

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

    Использование API Win32 с C++ позволяет достичь наивысшего уровня производительности и эффективности благодаря повышению контроля над целевой платформой с помощью неуправляемого кода, что возможно в управляемой среде выполнения, такой как WinRT и .NET. Однако такой уровень контроля над исполнением приложения требует большей осмотрительности и внимания для правильного выполнения, и позволяет извлекать выгоду из производительности разработки для производительности среды.

    Вот несколько основных особенностей интерфейса API Win32 и C++ предложений, позволяющих создавать высокопроизводительные приложения.

    • Оптимизация на уровне оборудования, включающая тщательный контроль за выделением ресурсов, время существования объектов, макет данных, выравнивание, байтовую упаковку и многое другое.
    • Доступ к наборам инструкций, ориентированных на производительность, например SSE и AVX, с помощью встроенных функций.
    • Эффективное и строго типизированное универсальное программирование с помощью шаблонов.
    • Эффективные и надежные контейнеры и алгоритмы.
    • DirectX, в частности Direct3D и DirectCompute (обратите внимание, что UWP также предлагает межпрограммное взаимодействие с DirectX).
    • Используйте C++/WinRT для создания современных классических приложений Win32 с эффективным доступом к интерфейсам API среды выполнения Windows (WinRT).

    У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.

    WPF — это надежная платформа для управляемых приложений Windows с доступом ко всем компонентам .NET или .NET Framework, в которой используется разметка XAML для отделения пользовательского интерфейса от кода. Эта платформа создана для классических приложений, для которых требуется расширенный пользовательский интерфейс, настройка стилей и сценарии с большим объемом графики. Навыки разработки WPF похожи на навыки разработки WinUI 3, поэтому миграция из WPF в приложения WinUI 3 проще, чем миграция с Windows Forms.

    У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.

    Windows Forms — это исходная платформа для управляемых приложений Windows с упрощенной моделью пользовательского интерфейса с доступом ко всем компонентам .NET или .NET Framework. Это позволяет разработчикам быстро приступить к созданию приложений, даже новичкам на платформе. Это платформа быстрой разработки приложений на основе форм с большой встроенной коллекцией визуальных и невизуальных элементов управления, поддерживающих перетаскивание. Windows Forms не использует XAML, поэтому при переносе приложения в WinUI 3 пользовательский интерфейс будет полностью переписан.

    У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.

    На универсальной платформе Windows (UWP) предоставляется система общих типов, интерфейсы API и модель приложений для всех устройств под управлением UWP. Вы можете не только использовать UWP для создания классических приложений для компьютеров под управлением Windows — UWP также является единственной платформой с поддержкой написания собственных универсальных приложений для выполнения на Xbox, HoloLens и в Surface Hub. Приложения UWP могут быть собственными или управляемыми.

    UWP — это платформа с широкими возможностями настройки, которая использует разметку XAML для отделения пользовательского интерфейса (представления) от кода (бизнес-логики). UWP подходит для классических приложений, которым требуется расширенный пользовательский интерфейс, настройка стилей и сценарии с большим объемом графики. UWP также имеет встроенную поддержку Системы дизайна Fluent для работы с UX по умолчанию и обеспечивает доступ к API Windows Runtime (WinRT).

    У вас не будет доступа к API, предоставляемым пакетом SDK для приложений Windows. Чтобы использовать пакет SDK для приложений Windows, потребуется перенести приложение UWP в WinUI 3. Дополнительные сведения см. в статье о переходе на SDK для приложений Windows.

    Варианты кросс-платформенной поддержки

    WinUI также служит основой для кросс-платформенных технологий, обеспечивающих великолепные возможности Windows с использованием разных языков программирования. .NET MAUI и React Native для Windows используют возможности WinUI в Windows, а также включение выполнения в других операционных системах. Еще один кроссплатформенный вариант, прогрессивный веб-приложения (PWAs), — это веб-сайты, которые работают так же, как установленные, собственные приложения в Windows и других поддерживаемых платформах, в то время как обычные веб-сайты в браузерах.

    • .NET MAUI
    • Прогрессивные веб-приложения (PWA)
    • React Native для Windows

    Мультиплатформенный пользовательский интерфейс приложений .NET (MAUI) — это кросс-платформенная архитектура с открытым кодом для создания приложений Android, iOS, macOS и Windows, которые используют собственный пользовательский интерфейс и службы каждой платформы из единой базы кода .NET. Так как .NET MAUI ориентируется на использования собственных возможностей платформ, это решение использует WinUI 3 и пакет SDK для приложений Windows для реализации последних возможностей для пользователей в Windows. Благодаря этому приложения получают все необходимое с WinUI 3, а также возможность взаимодействовать с другими платформами.

    .NET MAUI для Windows станет отличным выбором, если:

    • Вы хотите сохранить как можно больший объем кода .NET в мобильных и классических приложениях.
    • Вы хотите поставлять приложения на другие компьютерные и мобильные платформы, помимо Windows, с поддержкой собственных возможностей платформы.
    • Вы хотите использовать C# и (или) XAML для создания кросс-платформенных приложений.
    • Вы используете Blazor для веб-разработки и хотите включить все или одну часть этого решения в мобильное или классическое приложение.

    Дополнительные сведения о .NET MAUI см. по следующим ссылкам:

    • Документация по .NET MAUI
    • .NET MAUI на GitHub
    • Стратегия развития .NET MAUI
    • Создание приложений Windows с помощью MAUI .NET
    • Ресурсы для обучения .NET MAUI
    • Серия видео: .NET MAUI для начинающих
    • Build 2022: создание собственных приложений для любого устройства с помощью .NET и Visual Studio

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

    При установке в Windows ЦС так же, как и другие приложения. Например:

    • PWA можно добавить в меню .
    • PWA можно закрепить на панели задач.
    • ЦП может обрабатывать файлы.
    • ЦС могут выполняться при входе пользователя.
    • PVA можно отправить в Microsoft Store, где миллионы пользователей Windows могут обнаруживать и легко устанавливать их вместе с другими приложениями Windows.

    Дополнительные сведения о создании ЦС см. по следующим ссылкам:

    • Обзор ПП
    • Публикация PWA в Microsoft Store
    • Повторное взаимодействие пользователей с значками, уведомлениями и push-сообщениями
    • Создание мини-приложений на основе PWA
    • Демонстрации прогрессивных веб-приложений
    • PWABuilder — помощь разработчикам в создании и публикации ЦП

    React Native — это платформа разработки, которая позволяет создавать кросс-платформенные приложения. React Native для Windows предоставляет поддержку React Native для пакетов SDK Windows 10 и Windows 11, позволяя использовать JavaScript для создания собственных приложений Windows для всех устройств, поддерживаемых Windows 10 и Windows 11, включая ПК, планшеты, трансформеры, Xbox, устройства смешанной реальности и т. д.

    При использовании React Native для Windows вы пишете основную часть кода приложения или весь код на JavaScript или TypeScript, а платформа создает собственное приложение XAML UWP. Если приложению требуется вызывать API платформы, обычно это можно сделать с помощью одного из многих модулей сообщества или, если нужный модуль еще не существует, вы можете легко написать собственный.

    Ниже приведены некоторые преимущества React Native для Windows:

    • Вам нужно обеспечить максимально возможное совместное использование кода на разных платформах или у вас есть веб-свойства, с которыми требуется совместно использовать код.
    • Высокая производительность разработки и оптимизированный внутренний цикл благодаря быстрому обновлению.
    • Основные характеристики приложения (производительность, доступность, интернационализация) находятся на уровне характеристик собственного приложения UWP.
    • У вас есть опыт работы с JavaScript или TypeScript, а также желание использовать эти языки.
    • Вы хотели бы использовать библиотеки JavaScript в npmjs.com, а также многие собственные библиотеки.
    • Приложение будет использовать характерные для платформы элементы управления, вид, анимацию и цвета, благодаря чему оно воспринимается естественно в Windows. Кроме того, при использовании приложений React Native для Windows не нужно идти на компромиссы в отношении набора API, которые они могут вызывать, так как платформа позволяет вызывать API платформы, а также писать собственные диспетчеры представлений и собственные модули.
    • Большое и растущее сообщество, а также множество модулей сообщества.

    Дополнительные сведения об использовании React Native для Windows см. по следующим ссылкам:

    • Репозиторий React Native для Windows на сайте GitHub
    • Собственные модули в React Native для Windows
    • Справочник по API
    • Каталог модулей сообщества
    • Дополнительные ресурсы

    Совместная работа с нами на GitHub

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

    На чем пишут оконные приложения

    Скачай курс
    в приложении

    Перейти в приложение
    Открыть мобильную версию сайта

    © 2013 — 2024. Stepik

    Наши условия использования и конфиденциальности

    Get it on Google Play

    Public user contributions licensed under cc-wiki license with attribution required

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *