Microsoft visual c++

Содержание разделаIn this section

ЗаголовокTitle ОписаниеDescription
Пошаговое руководство. Создание стандартной программы на языке C++Walkthrough: Creating a Standard C++ Program Создайте консольное приложение Windows.Create a Windows console application.
Пошаговое руководство. Создание классических приложений Windows (C++)Walkthrough: Creating Windows Desktop Applications (C++) Создайте собственное классическое приложение для Windows.Create a native Windows desktop application.
Мастер классической версии WindowsWindows Desktop Wizard Используйте мастер для создания новых проектов Windows.Use the wizard to create new Windows projects.
Библиотека шаблонных классов (ATL)Active Template Library (ATL) Использование библиотеки ATL для создания COM-компонентов в C++.Use the ATL library to create COM components in C++.
Microsoft Foundation Classes (MFC)Microsoft Foundation Classes (MFC) Использование MFC для создания крупных или небольших приложений Windows с помощью диалоговых окон и элементов управленияUse MFC to create large or small Windows applications with dialogs and controls
Общие классы ATL и MFCATL and MFC Shared Classes Используйте такие классы, как CString, которые являются общими в ATL и MFC.Use classes such as CString that are shared in ATL and MFC.
Доступ к даннымData Access OLE DB и ODBCOLE DB and ODBC
Текст и строкиText and Strings Различные типы строк в Windows.Various string types on Windows.
Ресурсы для создания игры с помощью DirectXResources for Creating a Game Using DirectX
Как использовать пакет SDK для Windows 10 в классическом приложении WindowsHow to: Use the Windows 10 SDK in a Windows Desktop Application Пакет Windows SDKWindows SDK
Работа с файлами ресурсовWorking with Resource Files Добавление изображений, значков, таблиц строк и других ресурсов в классическое приложение.How to add images, icons, string tables, and other resources to a desktop application.
Ресурсы для создания игры с использованием DirectX (C++)Resources for Creating a Game Using DirectX (C++) Ссылки на материалы по созданию игр на C++.Links to content for creating games in C++.
Как использовать пакет SDK для Windows 10 в классическом приложении WindowsHow to: Use the Windows 10 SDK in a Windows Desktop Application Содержит инструкции по настройке проекта для построения с помощью пакета SDK для Windows 10.Contains steps for setting up your project to build using the Windows 10 SDK.
Развертывание классических приложенийDeploying Native Desktop Applications Развертывание собственных приложений в Windows.Deploy native applications on Windows.

API для получения версии в MacOSX

В MacOSX доступен тот же самый API POSIX, включающий в себя и вызов uname. Кроме POSIX также доступны

  • системные вызовы ядра Darwin
  • библиотека Carbon языка C89, которая в последних версиях OSX считается устаревшей
  • библиотеки (фреймворки) языка Objective-C, которые могут быть использованы совместно с кодом на языке C89
    • для смешивания Objective-C и C в одном файле используются файлы с расширением “.m”, к которым можно подключать заголовки “.h”
    • для смешивания Objective-C и C++ в одном файле используются файлы с расширением “.mm”, к которым также можно подключать заголовки “.h”

Ранний способ определения версии OSX — функция “Gestalt” из файла “CarbonCore/OSUtils.h”. К сожалению, эта функция объявлена устаревшей в MacOSX 10.8.

Один из эвристических способов определения версии OSX связан с определением версии ядра Darwin, и последующей выборке по таблице:

Для определения версии ядра можно использовать многофункциональный системный вызов sysctl:

Стандарт ANSI [ править | править код ]

Стандартная библиотека ANSI Си состоит из 24 заголовочных файлов, каждый из которых можно подключать к программному проекту при помощи одной директивы. Каждый заголовочный файл содержит объявления одной или более функций, определения типов данных и макросы. Содержание этих заголовочных файлов перечисляется ниже.

В сравнении с некоторыми другими языками (например Java) стандартная библиотека крайне мала. Библиотека обеспечивает поддержку основного набора математических функций, обработку строк, конвертацию типов, файловый и консольный ввод-вывод. Она не содержит стандартный набор «контейнерных типов» как стандартная библиотека шаблонов языка C++, компоненты для работы с графическим пользовательским интерфейсом (GUI), сетью и прочей разнообразной функциональности, которую Java поддерживает по стандарту. Главным преимуществом маленькой стандартной библиотеки является упрощение работы с окружением ANSI Си по сравнению с другими языками, а следовательно и упрощение портирования программ на языке Си на новые платформы.

Множество прочих библиотек было разработано для поддержки схожей функциональности, обеспечиваемой другими языками в их стандартных библиотеках. Например, в проекте разработки окружения рабочего стола GNOME был разработан набор графических инструментов GTK+ и GLib — библиотека контейнерных структур данных, как впрочем и множество других известных примеров. Разнообразие доступных библиотек означает, что некоторые инструменты верхнего уровня, со временем подтвердили свою полезность. Значительным минусом является то, что они часто не слишком успешно взаимодействуют друг с другом, поэтому программистам зачастую привычнее работать с различными наборами библиотек, а их наборы могут быть доступны на различных специфических платформах.

Библиотечные заголовочные файлы ANSI Си c дополнениями C99 и C11

Содержит макрос утверждений, используемый для обнаружения логических и некоторых других типов ошибок в отлаживаемой версии программы.
Набор функций для работы с комплексными числами. (Появилось в C99)
Содержит функции, используемые для классификации символов по их типам или для конвертации между верхним и нижним регистрами независимо от используемой кодировки (обычно ASCII или одно из её расширений, хотя есть и реализации, использующие EBCDIC).
Для проверки кодов ошибок, возвращаемых библиотечными функциями.
Для управления средой, использующей числа с плавающей точкой. (Появилось в C99)
Содержит заранее определенные константы, описывающие специфику реализации свойств библиотеки для работы с числами с плавающей точкой, как, например, минимальная разница между двумя различными числами с плавающей точкой (_EPSILON), максимальное число цифр точности (_DIG) и область допустимых чисел (_MIN, _MAX).
Для точной конвертации целых типов. (Появилось в C99)
Для программирования в кодировке ISO 646. (Появилось в NA1)
Содержит заранее заданные константы, определяющие специфику реализации свойств целых типов, как, например, область допустимых значений (_MIN, _MAX).
Для setlocale() и связанных констант. Используется для выбора соответствующего языка.
Для вычисления основных математических функций
Объявляет макросы setjmp и longjmp, используемые для нелокальных переходов
Для управления обработкой сигналов
Для доступа к различному числу аргументов, переданных функциям.
Для булевых типов данных. (Появилось в C99)
Для определения различных типов целых чисел. (Появилось в C99)
Для определения нескольких стандартных типов и макросов.
Реализует основные возможности ввода и вывода в языке Си. Этот файл содержит весьма важную функцию printf .
Для выполнения множества операций, включая конвертацию, генерацию псевдослучайных чисел, выделение памяти, контроль процессов, окружения, сигналов, поиска и сортировки.
Для работы с различными видами строк.
Для типовых математических функций. (Появилось в C99)
Заголовочный файл наряду с предоставляет поддержку для параллельного программирования. (Появилась в C11)
Для конвертации между различными форматами времени и даты.
Для обработки «широких» потоков и нескольких видов строк при помощи «широких» символов (поддержка набора языков). (Появилось в NA1)
Для классификации «широких» символов. (Появилось в NA1)

Графический интерфейс пользователя

Графический интерфейс пользователя (Graphical User Interface, GUI) еще называют «визуальный интерфейс» или «графическая оконная среда».
GUI делает возможным использование графики на растровом экране. Графика дает лучшее восприятие элементов управления на экране, визуально богатую среду для передачи информации. В GUI экран становится устройством ввода и показывает различные графические объекты в виде картинок и конструкций для ввода информации, таких как кнопки или полосы прокрутки. Используя клавиатуру и манипулятор (мышь, тачпад), пользователь может непосредственно оперировать объектами на экране. Графические объекты можно перетаскивать, кнопки можно нажимать, полосы прокрутки можно прокручивать. Взаимодействие между пользователем и программой становится более тесным.
Пользователям не надо тратить слишком много времени на то, чтобы научиться пользоваться компьютером и составлять новые программы. Система Windows способствует этому, поскольку все программы для Windows выглядят и воспринимаются одинаково.
Любая программа для Windows имеет окно — прямоугольную область на экране, в котором приложение отображает информацию и получает реакцию от пользователя. Окно идентифицируется заголовком. Большинство функций программы запускается посредством меню. Слишком большой для экрана объем информации может быть просмотрен с помощью полос прокрутки. Некоторые пункты меню вызывают появление окон диалога, в которые пользователь вводит дополнительную информацию.
Программирование Windows-приложений тесно связано с понятиями объектно-ориентированного программирования. Главным объектом в операционной системе Windows является окно. Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами.Активное окно – окно, получающее реакцию от пользователя в данный момент.
Основными элементами окна являются

  • 1 — строка заголовка title bar
  • 2 — строка меню menu bar
  • 3 — системное меню system menu
  • 4 — кнопка сворачивания окна minimize box
  • 5 — кнопка разворачивания окна maximize box
  • 6 — рамка изменения размеров sizing border
  • 7 — клиентская область client area
  • 8 — горизонтальная и вертикальная полосы прокрутки scroll bars

Три основных сценария для C++/WinRTThe three main scenarios for C++/WinRT

По мере работы с C++/WinRT и ознакомления с остальной частью документации вы, скорее всего, заметите, что есть три основных сценария. Они описаны в следующих разделах.As you use and become familiar with C++/WinRT, and work through the rest of the documentation here, you’ll likely notice that there are three main scenarios, as described in the following sections.

Использование API и типов среды выполнения WindowsConsuming Windows Runtime APIs and types

Иными словами, это использование и вызовы API.In other words, using, or calling APIs. Например, вы можете выполнять вызовы API для обмена данными по Bluetooth, потоковую передачу и воспроизведение видео, интеграцию с оболочкой Windows и т. д.For example, making API calls to communicate using Bluetooth; to stream and present video; to integrate with the Windows shell; and so on. В C++/WinRT реализована полная поддержка этого сценария.C++/WinRT fully and uncompromisingly supports this category of scenario. Дополнительные сведения см. в статье Использование API-интерфейсов с помощью C++/WinRT.For more info, see Consume APIs with C++/WinRT.

Создание API и типов среды выполнения WindowsAuthoring Windows Runtime APIs and types

Иными словами, это создание API и типов.In other words, producing APIs and types. Например, вы можете создавать описанные в разделе выше типы API, графические API, API хранилища и файловой системы, сетевые API и т. д.For example, producing the kinds of APIs described in the section above; or the graphics APIs; the storage and file system APIs; the networking APIs, and so on. Дополнительные сведения см. в статье Создание API-интерфейсов в C++/WinRT.For more info, see Author APIs with C++/WinRT.

Разработка API с помощью C++/WinRT — это более сложный процесс, чем их использование, так как вам нужно работать с IDL для определения API перед его реализацией.Authoring APIs with C++/WinRT is a little more involved than consuming them, because you must use IDL to define the shape of the API before you can implement it. Описание процесса см. в статье Элементы управления XAML; привязка к свойству C++/WinRT.There’s a walkthrough of doing that in XAML controls; bind to a C++/WinRT property.

Приложения XAMLXAML applications

Этот сценарий предполагает создания приложений и элементов управления в пользовательском интерфейсе на основе XAML.This scenario is about building applications and controls on the XAML UI framework. Работа с приложением, созданным с использованием XAML, включает процессы использования и разработки.Working in a XAML application amounts to a combination of consuming and authoring. Но так как сегодня XAML является основным средством описания пользовательского интерфейса в Windows, которое оказывает огромное влияние на среду выполнения Windows пропорционально этому, для него предусмотрен отдельный сценарий.But since XAML is the dominant UI framework on Windows today, and its influence over the Windows Runtime is proportionate to that, it deserves its own category of scenario.

Помните, что XAML лучше всего сочетается с языками программирования, в которых используется рефлексия.Be aware that XAML works best with programming languages that offer reflection. В C++/WinRT, чтобы взаимодействовать с XAML, иногда необходимо выполнить некоторую дополнительную работу.In C++/WinRT, you sometimes have to do a little extra work in order to interoperate with the XAML framework. Все эти случаи описаны в документации.All of those cases are covered in the documentation. Лучше всего начать со статей Элементы управления XAML; привязка к свойству C++/WinRT и Создание пользовательских (на основе шаблона) элементов управления XAML с помощью C++/WinRT.Good places to start are XAML controls; bind to a C++/WinRT property and XAML custom (templated) controls with C++/WinRT.

Дескрипторы

Дескриптор (описатель) объекта — служебная структура данных, представляющая собой беззнаковое целое число и служащая для идентификации различных объектов. Дескриптор представляет собой указатель на некоторую системную структуру или индекс в некоторой системной таблице.
Примеры дескрипторов, описанных в заголовочном файле windows.h

typedef void *HANDLE;  // абстрактный дескриптор (например, файла)typedef void *HMODULE;  // дескриптор модуляtypedef void *HINSTANCE; // дескриптор экземпляра программыtypedef void *HKEY;  // дескриптор ключа в реестреtypedef void *HGDIOBJ;  // дескриптор граф. примитива (перо, кисть)typedef void *HWND;  // дескриптор окнаtypedef void *HMENU;  // дескриптор менюtypedef void *HICON;  // дескриптор иконкиtypedef void *HBITMAP;  // дескриптор картинкиtypedef void *HFONT;  // дескриптор шрифта

У меня есть другая проблема, с которой я не могу разобраться. Как и где я могу получить ответ?

По мере прохождения данных уроков, у вас, несомненно, появятся вопросы или вы столкнетесь с проблемами. Что делать?

Во-первых, спросите у Google. Четко сформулируйте вашу проблему и просто «погуглите». Если у вас есть сообщение об ошибке — скопируйте его и вставьте в поиск Google, используя кавычки. Скорее всего, кто-то уже задавал такой же вопрос, как у вас, и получил на него ответ.

Если Google не помог, то спросите на специализированных сервисах вопросов/ответов, либо на форумах, посвященным тематике программирования/IT. Вот самые популярные из них:

Но будьте внимательны и старайтесь максимально конкретизировать свою проблему, укажите, какую операционную систему и IDE вы используете, а также то, что вы пробовали сделать самостоятельно для решения своей проблемы.

средства разработки:Development Tools

Visual Studio включает многофункциональный отладчик для машинного кода, средства статического анализа, графические средства отладки, полнофункциональный редактор кода, поддержку модульных тестов, а также множество других средств и служебных программ.Visual Studio includes a powerful debugger for native code, static analysis tools, graphics debugging tools, a full-featured code editor, support for unit tests, and many other tools and utilities. Дополнительные сведения см. в статьях Приступая к разработке с помощью Visual Studioи Общие сведения о разработке C++ в Visual Studio.For more information, see Get started developing with Visual Studio, and Overview of C++ development in Visual Studio.

Предварительные требованияPrerequisites

  • Компьютер под управлением Microsoft Windows 7 или более поздних версий.A computer that runs Microsoft Windows 7 or later versions. Для обеспечения оптимальной среды разработки рекомендуется использовать Windows 10.We recommend Windows 10 for the best development experience.

  • Копия Visual Studio.A copy of Visual Studio. For information on how to download and install Visual Studio, see Install Visual Studio. Когда вы запускаете установщик, убедитесь, что установлена рабочая нагрузка Разработка классических приложений на C++ .When you run the installer, make sure that the Desktop development with C++ workload is checked. Не беспокойтесь, если вы не установили эту рабочую нагрузку при установке Visual Studio.Don’t worry if you didn’t install this workload when you installed Visual Studio. Вы можете снова запустить установщик и установить ее сейчас.You can run the installer again and install it now.

    !(../build/media/desktop-development-with-cpp.png «»Разработка классических приложений на C++»;»)

  • Базовые значения об использовании интегрированной среды разработки Visual Studio.An understanding of the basics of using the Visual Studio IDE. Если вы уже использовали классические приложения для Windows, вы, вероятно, справитесь.If you’ve used Windows desktop apps before, you can probably keep up. Общие сведения см. в обзоре возможностей интегрированной среды разработки Visual Studio.For an introduction, see Visual Studio IDE feature tour.

  • Основные навыки владения языком C++.An understanding of enough of the fundamentals of the C++ language to follow along. Не волнуйтесь, мы не будем делать ничего сложного.Don’t worry, we don’t do anything too complicated.

Setting WINVER or _WIN32_WINNT

You can define these symbols by using the #define statement in each source file, or by specifying the /D compiler option supported by Visual C++.

For example, to set WINVER in your source file, use the following statement:

To set _WIN32_WINNT in your source file, use the following statement:

To set _WIN32_WINNT using the /D compiler option, use the following command:

cl -c /D_WIN32_WINNT=0x0502 source.cpp

For information on using the /D compiler option, see /D (preprocessor definitions).

Note that some features introduced in the latest version of Windows may be added to a service pack for a previous version of Windows. Therefore, to target a service pack, you may need to define _WIN32_WINNT with the value for the next major operating system release. For example, the GetDllDirectory function was introduced in Windows Server 2003 and is conditionally defined if _WIN32_WINNT is 0x0502 or greater. This function was also added to Windows XP with SP1. Therefore, if you were to define _WIN32_WINNT as 0x0501 to target Windows XP, you would miss features that are defined in Windows XP with SP1.

Создание проекта для настольных систем WindowsCreate a Windows desktop project

Выполните следующие действия, чтобы создать свой первый проект для настольных систем Windows.Follow these steps to create your first Windows desktop project. В процессе работы вы вводите код для рабочего приложения Windows.As you go, you’ll enter the code for a working Windows desktop application. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия.To see the documentation for your preferred version of Visual Studio, use the Version selector control. Он находится в верхней части оглавления на этой странице.It’s found at the top of the table of contents on this page.

  1. В главном меню выберите **Файл ** > **Создать ** > Проект, чтобы открыть диалоговое окно Создание проекта.From the main menu, choose File > New > Project to open the Create a New Project dialog box.

  2. В верхней части диалогового окна задайте для параметра язык значение C++, задайте для параметра платформа значение Windowsи задайте для параметра тип проекта значение Рабочий стол.At the top of the dialog, set Language to C++, set Platform to Windows, and set Project type to Desktop.

  3. В отфильтрованном списке типов проектов выберите Мастер рабочего стола Windows , а затем нажмите кнопку Далее.From the filtered list of project types, choose Windows Desktop Wizard then choose Next. На следующей странице введите имя проекта, например десктопапп.In the next page, enter a name for the project, for example, DesktopApp.

  4. Нажмите кнопку Создать, чтобы создать проект.Choose the Create button to create the project.

  5. Откроется диалоговое окно проекта Windows Desktop .The Windows Desktop Project dialog now appears. В разделе Тип приложениявыберите классическое приложение (. exe).Under Application type, select Desktop application (.exe). В поле Дополнительные параметрывыберите Пустой проект.Under Additional options, select Empty project. Нажмите кнопку ОК, чтобы создать проект.Choose OK to create the project.

  6. В Обозреватель решенийщелкните правой кнопкой мыши проект Десктопапп , выберите Добавить, а затем выберите новый элемент.In Solution Explorer, right-click the DesktopApp project, choose Add, and then choose New Item.

  7. В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp).In the Add New Item dialog box, select C++ File (.cpp). В поле имя введите имя файла, например хелловиндовсдесктоп. cpp.In the Name box, type a name for the file, for example, HelloWindowsDesktop.cpp. Выберите Добавить.Choose Add.

Теперь проект создан и исходный файл открыт в редакторе.Your project is now created and your source file is opened in the editor. Чтобы продолжить, перейдите к .To continue, skip ahead to .

  1. В меню Файл выберите команду Создать, а затем пункт Проект.On the File menu, choose New and then choose Project.

  2. В левой области диалогового окна Новый проект разверните узел установленные > Visual C++, а затем выберите пункт Windows Desktop.In the New Project dialog box, in the left pane, expand Installed > Visual C++, then select Windows Desktop. В средней области выберите Мастер рабочего стола Windows.In the middle pane, select Windows Desktop Wizard.

    В поле имя введите имя проекта, например десктопапп.In the Name box, type a name for the project, for example, DesktopApp. Нажмите кнопку ОК.Choose OK.

  3. В диалоговом окне проект Windows Desktop в разделе Тип приложениявыберите приложение Windows (. exe).In the Windows Desktop Project dialog, under Application type, select Windows application (.exe). В поле Дополнительные параметрывыберите Пустой проект.Under Additional options, select Empty project. Убедитесь, что предварительно скомпилированный заголовок не выбран.Make sure Precompiled Header isn’t selected. Нажмите кнопку ОК, чтобы создать проект.Choose OK to create the project.

  4. В Обозреватель решенийщелкните правой кнопкой мыши проект Десктопапп , выберите Добавить, а затем выберите новый элемент.In Solution Explorer, right-click the DesktopApp project, choose Add, and then choose New Item.

  5. В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp).In the Add New Item dialog box, select C++ File (.cpp). В поле имя введите имя файла, например хелловиндовсдесктоп. cpp.In the Name box, type a name for the file, for example, HelloWindowsDesktop.cpp. Выберите Добавить.Choose Add.

Теперь проект создан и исходный файл открыт в редакторе.Your project is now created and your source file is opened in the editor. Чтобы продолжить, перейдите к .To continue, skip ahead to .

Типы данных в WinAPI

WinAPI переопределяет множество стандартных типов языка C. Некоторые переопределения зависят от платформы для которой создаётся программа. Например, тип LRESULT, если его скомпилировать для x86, будет типом long. Но если скомпилировать программу для x64, то LRESULT будет типом __int64. Вот так LRESULT определяется на самом деле (он зависит от LONG_PTR, а LONG_PTR может уже быть или __int64, или long):

typedef LONG_PTR LRESULT;

#if defined(_WIN64)
typedef __int64 LONG_PTR;
#else
typedef long LONG_PTR;
#endif

Соглашения по вызову (Calling Conventions) — __stdcall

В коде ниже перед именами функций вы встретите __stdcall. Это одно из соглашений по вызову функций. Соглашение по вызову функций определяет каким образом аргументы будут добавляться в стек. Для __stdcall аргументы помещаются в стек в обратном порядке — справа налево. Также, __stdcall говорит, что после того как функция завершится, она сама (а не вызывающая функция) удалит свои аргументы из стека. Все функции WinAPI используют __stdcall соглашение.

WinAPI переопределяет __stdcall в WINAPI, CALLBACK или APIENTRY, которые используются в разных ситуациях. Поэтому в примерах из MSDN вы не увидите __stdcall, но нужно помнить что именно оно будет использоваться.

Типы WinAPI пишутся в верхнем регистре.

Описатели/дескрипторы (Handles) в WinAPI

Handle на русский язык сложно перевести однозначно. Наверное, наиболее частое употребление в русском имеет слово дескриптор. По сути это ссылка на ресурс в памяти. Например, вы создаёте окно. Это окно хранится в памяти и оно имеет запись в таблице, которая хранит указатели на все созданные системные ресурсы: окна, шрифты, файлы, картинки… Указатель на ваше окно в данной таблице называется дескриптором окна (handle of the window).

Любой указатель это просто переопределение типа void*. Примеры дескрипторных типов в WinAPI: HWND, HINSTANCE, HBITMAP, HCURSOR, HFILE, HMENU.

Подытожим: дескрипторы используются для получения доступа к каким-либо системным ресурсам.

Инсталляция MSVC++ RP

Для начала следует узнать разрядность операционной системы компьютера, ноутбука или нетбука: 32- или 64-bit. Если OS MS Windows 32-разрядная, то следует скачать Microsoft Visual C++ 2019, 2017, 2015, 2013, 2012, 2010, 2008, 2005 32-бит бесплатно без регистрации и SMS; если система 64-разрядная, то необходимо загружать и устанавливать 32- и 64-bit версии. В разделе «Программы и компоненты» или «Удаление программ» панели управления Виндовс можно посмотреть, какие Microsoft Visual C++ уже инсталлированы. Если в списке установленного программного обеспечения, присутствуют несколько Microsoft Visual C++, то удалять их не стоит. Это значит, что такой набор нужен какой-то программе или нескольким программным продуктам.

Чтобы компьютер, ноутбук или нетбук был упакован «по полной программе», качайте с первой — до последней версии. Таким образом на ПК будут установлены абсолютно все библиотеки DLL. Также можно скачать утилиту MS Visual C++ Installer/Uninstaller AIO by Wilenty бесплатно без регистрации и SMS для простой пакетной инсталляции.

Установка цвета символов и фона в консоли

Цвет символов и фона задается с помощью констант, определяющих тетрады символов.Цвет символов

  • FOREGROUND_BLUE = 0x01
  • FOREGROUND_GREEN  = 0x02
  • FOREGROUND_RED = 0x04
  • FOREGROUND_INTENSITY = 0x08

Фон символов

  • BACKGROUND_BLUE = 0x10
  • BACKGROUND_GREEN  = 0x20
  • BACKGROUND_RED = 0x40
  • BACKGROUND_INTENSITY = 0x80

Каждая тетрада, определяющая цвет символов или фона, представляет собой значение от 0 до 15, задаваемая логической суммой соответствующих констант:


Например, цвет символов с кодом 13 задается как

FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY.
Функция определения атрибутов вводимых символов в окне консоли

BOOL WINAPI SetConsoleTextAttribute(__in HANDLE hConsoleOutput,__in WORD wAttributes);

  • hConsoleOutput – дескриптор буфера консоли вывода;
  • wAttributes – цвет букв и фона, получаемый путем комбинации констант

Функция, задающая цвет фона консоли(путем закрашивания фона отдельных символов)

BOOL WINAPI FillConsoleOutputAttribute(__in HANDLE hConsoleOutput,__in WORD wAttribute,__in DWORD nLength,__in COORD dwWriteCoord,__out LPDWORD lpNumberOfAttrsWritten);

  • hConsoleOutput – дескриптор буфера вывода консоли;
    wAttribute – атрибут цвета фона символа в консоли;
  • nLength – количество ячеек символов, фон которых устанавливается заданным цветом;
  • dwWriteCoord – координаты первой закрашиваемой ячейки;
  • lpNumberOfAttrsWritten – указатель на идентификатор, в который записывается количество реально закрашенных ячеек.

Для того чтобы изменить цвет всего окна консоли необходимо задать цвет символов, количество которых определяется размером окна консоли. Размер стандартного окна консоли 80×25 = 2000 символов. 

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

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

Adblock
detector